1引言
本文解决由粉丝提出的问题。
定义字典统计单词及其出现次数。
将字典转换为列表,并进行排序。
完整代码:
代码清单 1
def getText():
txt = open("C:\\Users\\61483\\Desktop\\EnglishTest.txt","r",encoding='utf-8').read()
txt = txt.lower() #排除单词大小写影响
for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_`{1}~':txt = txt.replace(ch," ") #排除特殊字符及标点符号的影响
return txtEnglishTxt = getText()
# print(EnglishTxt)
words = EnglishTxt.split()counts = {} #统计单词出现次数
for word in words:counts[word] = counts.get(word,0) + 1
items = list(counts.items()) #将字典转换为记录列表
items.sort(key=lambda x:x[1],reverse=True) #进行排序
for i in range(10):word,count = items[i]
print("{0:<10}{1:>5}".format(word,count)) #从高到低输出出现次数多的前十个单词
二.对中文文档进行词频统计
1.安装python第三方库(pip install jieba)
1.1 jieba库的使用
jieba库简介:
Jieba库分词原理是利用一个中文词库,将待分词内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组。除了分词,jieba库还提供增加自定义中文单词的功能。
函数
描述
jieba.cut(s)
精确模式,返回一个可迭代的数据类型
jieba.cut(s,cut_all=True)
全模式,输出文本s中所有可能的单词
jieba.cut_for_search(s)
搜索引擎模式,适合搜索引擎建立索引
jieba.lcut(s)
精确模式,返回一个列表类型
jieba.lcut(s,cut_all=True)
全模式,返回一个列表类型
jieba.lcut_for_search(s)
搜索引擎模式,返回一个列表类型
jieba.add_word(w)
向分词词典中增加新词w
使用jieba分词之后,词频统计方法与英文词频统计方法类似,下面展示完整代码。
代码清单 2
import jieba
txt = open("C:\\Users\\61483\\Desktop\\电脑快捷键.txt","r",encoding='utf-8').read()
words = jieba.lcut(txt)
counts = {}
for word in words:
if len(word) == 1:
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):
word,count = items[i]
print("{0:<10}{1:>5}".format(word,count))
运行效果:
3 结语
本文对利用python读取文件后进行词频统计方法做了讲解,通过读取文件,对jieba库也做了详细的介绍,在与文档类的工作时,jieba库是一个非常好用的第三方库,更多用法可以自行探索学习。