python中英文词频统计
要求:
1.给定一段英文文本,实现对输入英文的分词,并统计每个单词出现的次数;
2.只用输出前十个;
分析:
1.要实现对英文单词的切分,首先就需要将英文文本按照一个特殊的格式来切分,我选用的是按照空格切分,所以我们需要将文本中的” ,“ ” . “ ” !“等符号转换为空格方便切分;
2.用Counter函数来对切分出来的单词计数;
3. 用循环对切分出来的单词和次数进行输出;
实现效果:
代码实现:
from collections import Counter #cnt = Counter() 进行计数
#打开文件
with open("en1.tok.txt",errors='ignore') as f:
#errors='ignore'用于忽略文件中的非法字符
txt = f.read()
txt = txt.lower()
#将文本中的大写字母改写为小写字母,这样可以避免同一个单词因大小写问题统计两次
for ch in '!"#$&()*+,-./:;<=>?@[\\]^_{|}·~‘’':
#将文本中可能出现的字符替换为空格
txt = txt.replace(ch, "")
words = txt.split()
#按空格分词
cnt = Counter(words)
#用Counter函数对分完的词进行计数
for word, cnt in cnt.most_common(10):
#输出前十个出现次数最多的单词
print(word, cnt)
初学,欢迎大家指正我的错误!
补充:
1.进行了忽略非法字符操作后还需要对文本中出现的字符(逗号,感叹号等等)进行替换,不进行替换就会出现将“,” “ . ” 也当成英文字母输出的情况:
2.Counter(x).most_common(n)函数便可以用来统计词频,该函数用来表示统计x中出现次数最多的前n个元素及其次数,前十就n取10,前三就n取3,然后再循环输出就可以了。
关于Counter函数更多的知识可以去这里看:https://www.cnblogs.com/wfc139/p/9999016.html