Python文本词频率统计---学习记录

目录

英文词频率统计

 构建排除词库

 对字典进行排序

中文词频率统计

jieba库

方法


英文词频率统计

统计英文词频的第一步是分解并提取英文文章的单词。同一个单词会存在大小写不同形式,但计数却不能区分大小写。

假设文本由变量txt表示

对txt文件的读取:

txt = open('你的文件名.txt','r').read()


可以通过txt.Iower()函数将字母变成小写,排除原文大小写差异对词频统计的干扰。
英文单词的分隔可以是空格、标点符号或者特殊符号。为统一分隔方式,可以将各种特殊字符和标点符号使用txt.replace()方法替换成空格,再提取单词


统计词频的第二步是对每个单词进行计数。

假设将单词保存在变量str中,使用一个字典类型d,统计单词出现的次数可采用如下代码:
d[s] = d[s] + 1

当遇到一个新词时,计数为1,但是单词没有出现在字典结构中,则需要在字典中新建键值对:
d[s] = 1
因此,无论词是否在字典中,加入字典coumns中的处理逻辑可以统一表示如下

str ='abcdeeee'
d = {}
for s in str:
    if s in d.keys():
        d[s] = d[s] + 1
    else:
        d[s] = 1
print(d)

 也可以优化为

d[s] = d.get(s,0) + 1
 构建排除词库

对于文本中大量出现的冠词,连接词,代词如The,and,but,he,she等并不能代表文章含义,需要进一步排除,可以构建一个排除数据结构

exlcude = ['a','an','the','he','him']

从而,进行处理

for s in exlcude:
    if s in d.keys():
        del d[s]
 对字典进行排序

Python中有非常便捷的排序方法sort,但是它只能对列表进行排序

对字典使用sort需要先将字典转化为list类型

在强制转化为list后,其元素是由字典的键值对组成的一个元组列表

使用 lambda函数对排序规则进行修改 选中元组中的‘‘值’’

items = list(d.items())
items.sort(key=lambda x:x[1],reverse= True)

整体代码如下:

exlcude = ['a','an','the','he','him']
for s in str:
    d[s] = d.get(s,0) + 1
for s in exlcude:
    if s in d.keys():
        del d[s]
items = list(d.items())
items.sort(key=lambda x:x[1],reverse= True)
print(items)

中文词频率统计

jieba库

对于中文文本,其单词不像英文一样有空格分隔,而python的第三方jieba库很好的解决了这个问题

jieba库的安装这里不介绍

由于列表类型通用且灵活,jieba库推荐以下三种方法

jicbalIcut() 函数返回精确模式,输出的分词能够完整不多余地组成原始文本
jicba lcut(, cut_all = True) 函数返回全模式,输出原始文本中可能产生的所有问题,冗余性最大
jieba.lcut_for_search() 函数返回搜索引擎模式,该模式首先行执行精确模式,然后再对其中的长句子进一步切分获得结果。

对于无法识别的分词,也可以通过
jieba.add_word() 函数向分词库添加

方法

中文词与英文词的统计方法方法大同小异

这里只列出需要注意的地方

对于中文的近义词可能在统计的时候出现重复的情况,,如一些人名:孔明和诸葛

我们都知道他们是一个人但程序并不这样想

对于近义词 统一定义一个新变量,以这个变量为计数器,存放到字典中就可以了

如下

for word in s:
    if word == '诸葛亮' or '孔明曰':
        rword = '孔明'
d[rword] = d.get(rword,0) + 1

        END

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值