词频分析,分析一段文字或者一段话每个单词出现的频率。对于英文文章,我们可以使用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 = {",",‘。‘,‘!‘,‘:‘,‘“‘,‘”‘,‘、‘,‘的‘,‘和‘,‘\n‘,‘是‘,‘在‘,‘要‘} 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])的方法删除掉。
我。。。做错了什么。。。
原文地址:https://www.cnblogs.com/0422hao/p/11703570.html
时间: 2024-11-09 14:15:51