Python文本处理2个小案例(文本嗅探与关键词占比统计)

问题描述:有一些句子和一些关键词,现在想找出包含至少一个关键词的那些句子(文本嗅探),可以参考print('='*30)之前的代码。如果想进一步计算每个句子中的关键词占比(句子中所有关键词长度之和/句子长度),可以参考后面的代码。关键词占比是比较常用的一个文本分类标准,如果想根据关键词占比对句子进行分类的话,可以自行补充代码。

本文主要演示列表推导式、字符串对象用法以及生成器表达式和内置函数的用法。

from random import choice from string import ascii_letters

def check(sentences, words): '''返回包含至少一个关键词的句子列表''' return [sentence \ for sentence in sentences\ if sum(sentence.count(word)\ for word in words)>0]

sentences = ['This is a test.', 'Beautiful is better than ugly.', 'Explicit is better than implicit.', 'Simple is better than complex.', 'Sparse is better than dense.', 'Readability counts.', 'Now is better than never.'] words = ['test', 'count', 'dense', 'is', 'simple']

result = check(sentences, words) for item in result: print(item)

print('='*30) # 计算每个句子中所有关键字总长度的占比 d = {sentence:round(sum(sentence.count(word)*len(word)\ for word in words)/len(sentence),3)\ for sentence in result} for item in d.items(): print(item)

运行结果:

This is a test. Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Sparse is better than dense. Readability counts. Now is better than never. ============================== ('This is a test.', 0.533) ('Beautiful is better than ugly.', 0.067) ('Explicit is better than implicit.', 0.061) ('Simple is better than complex.', 0.067) ('Sparse is better than dense.', 0.25) ('Readability counts.', 0.263) ('Now is better than never.', 0.08)

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2017-05-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

21:角谷猜想

21:角谷猜想 总时间限制: 1000ms 内存限制: 65536kB描述 所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2...

40370
来自专栏HT

基于 HTML5 的 WebGL 技术构建 3D 场景(一)

今天和大家分享的是 3D 系列之 3D 预定义模型。 HT for Web 提供了多种基础类型供用户建模使用,不同于传统的 3D 建模方式,HT 的建模核心都是...

21760
来自专栏数据结构与算法

1116 四色问题

1116 四色问题  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解 题目描述 Description 给定N(小于...

29150
来自专栏社区的朋友们

sizeof 知多少? (上)

稍熟悉 C/C++ 的朋友,对于 sizeof 肯定不陌生,通过它我们可以知晓某个类型或者实例的内存大小( 以字节计 ),网上关于这个话题的信息其实挺多的,但是...

17600
来自专栏算法修养

LeetCode 126 Word Ladder II

具体的思路是,分别从起始和结束字符串出发两遍BFS, 得到每个点到起始字符串的最短距离和终点字符串的最短距离。 然后再从起始字符串出发,DFS 寻找路径。由于...

12420
来自专栏WD学习记录

数据结构与算法2016-05-31

数据元素是数据的基本单位,在计算机程序中通常被作为一个整体进行考虑和处理。一个数据元素可由若干个数据项组成。数据项是不可分割的、含有独立意义的最小数据单位,数据...

11520
来自专栏抠抠空间

逻辑运算

一、逻辑运算符的种类及优先级 ▷逻辑运算符包括 not and or  ▷他们的优先级是 () > not > and > or 二、普通逻辑运算 ▷A and...

29090
来自专栏机器之心

入门 | 数据科学初学者必知的NumPy基础知识

选自TowardsDataScience 作者:Ehi Aigiomawu 机器之心编译 参与:李诗萌、路 本文介绍了一些 NumPy 基础知识,适合数据科学初...

28530
来自专栏desperate633

LintCode 最小调整代价题目分析代码

给一个整数数组,调整每个数的大小,使得相邻的两个数的差小于一个给定的整数target,调整每个数的代价为调整前后的差的绝对值,求调整代价之和最小是多少。

8510
来自专栏数据结构与算法

洛谷P2084 进制转换

题目背景 无 题目描述 今天小明学会了进制转换,比如(10101)2 ,那么它的十进制表示的式子就是 : 那么请你编程实现,将一个M进制的数N转换成十...

27730

扫码关注云+社区

领取腾讯云代金券