词频分析

Posted 0422hao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了词频分析相关的知识,希望对你有一定的参考价值。

词频分析,分析一段文字或者一段话每个单词出现的频率。对于英文文章,我们可以使用split()函数进行文章段落的切割,对于中文,我们可以使用jieba库进行文章段落的分割。

import jieba

# jieba提供三种分词模式
txt = "中华人民共和国万岁,中国共-产-党万岁,中国人民万岁!"
words1 = jieba.lcut(txt)
words2 = jieba.lcut(txt, cut_all=True)
words3 = jieba.lcut_for_search(txt)
print(words2)
print(words2)
print(words3)

  上面的代码就是对txt这个文本,使用jieba提供的三种分词模式进行分词,得到的结果为。

[中华, 中华人民, 中华人民共和国, 华人, 人民, 人民共和国, 共和, 共和国, 万岁, ‘‘, ‘‘, 中国, 中国共-产-党, 国共, 共产, 共-产-党, 万岁, ‘‘, ‘‘, 中国, 国人, 人民, 万岁, ‘‘, ‘‘]
[中华, 中华人民, 中华人民共和国, 华人, 人民, 人民共和国, 共和, 共和国, 万岁, ‘‘, ‘‘, 中国, 中国-共-产-党, 国共, 共产, 共-产-党, 万岁, ‘‘, ‘‘, 中国, 国人, 人民, 万岁, ‘‘, ‘‘]
[中华, 华人, 人民, 共和, 共和国, 中华人民共和国, 万岁, , 中国, 国共, 共产, 共-产-党, 中国-共-产-党, 万岁, , 中国, 人民, 万岁, ]
Loading model cost 0.579 seconds.

三种分词模式分别是精确模式、全模式和搜索引擎模式。在日常的分析中,我常用的是精确模式。

下面针对十九大中文报告进行词频分析。其中使用字典的get方法。

txt = open("../文本/十九大报告.txt",r,encoding="GBK").read()
words = jieba.lcut(txt)

counts = {}
excludes = {"",,,,,,,,,
,,,}
for word in words:
    if word in excludes:
        continue
    else:
        counts[word] = counts.get(word, 0) +1
# 根据出现的次数进行排序
# 字典不是一个序列化组合数据类型
# 首先要对字典进行序列化
items = list(counts.items())
items.sort(key = lambda x: x[1],reverse=True)
for i in range(15):
    print(items[i])

得到的结果是:

Prefix dict has been built succesfully.
(发展, 212)
(中国, 168)
(人民, 157)
(建设, 148)
(社会主义, 146)
(坚持, 130)
(, 103)
(国家, 90)
(全面, 88)
(实现, 83)
(制度, 83)
(推进, 81)
(社会, 80)
(政治, 80)
(特色, 79)

对于十九大报告的词频分析成功。

另外:对于我们不想展现在词频分析中的词,除了使用上述的办法外,还可以使用,先把出现的次数统计出来,然后使用字典的del(counts[word])的方法删除掉。

技术图片

 

 我。。。做错了什么。。。

以上是关于词频分析的主要内容,如果未能解决你的问题,请参考以下文章

效能分析——词频统计器(第二版)

分析“词频统计“项目进程

第一次个人项目词频统计——需求分析,代码规范,设计思路

结对-英文词频分析-结对项目总结

词频统计代码任务总结

结对-英文词频检测程序-需求分析