英文文本的词频统计

英文文本由于不涉及分词问题,词频统计相对而言简单一些。以下是一个对英文文本进行词频统计的例子。其中的关键问题有:(1)英文中同时存在大小写,会干扰词频统计的结果,所以应将所有的英文字母转化为大写或小写;(2)英文单词可能被空格、标点或其他特殊符号分隔,因此应将这些特殊符号统一替换为空格;(3)根据空格对文本进行分隔;(4)用词典统计单词的出现次数;(5)由于词典不具有排序功能,可以将词典转化列表,再对统计结果进行排序。

import string

#文本词频统计
f=open("story.txt","r")
txt=f.read()
#将所有字母转化为小写,排除大小写差异对词频统计的干扰
txt.lower()
#为统一单词的切分方式,将各种特殊字符和标点符号都替换为空格
for ch in string.punctuation:
    txt=txt.replace(ch," ")
#根据空格对文本进行切分
words=txt.split()
#创建一个空词典,用于存放统计结果
result={}
for word in words:
    result[word]=result.get(word,0)+1
#为便于排序,将词典转化为列表
items=list(result.items())
#根据单词的频数从高到低排序
items.sort(key=lambda x:x[1],reverse=True)
#输出全部
print(items)
#输出排序结果中位于前10位的单词
for i in range(10):
    print(items[i])

参考资料:嵩天.《全国计算机等级考试二级教程——Python语言程序设计》[M].北京:高等教育出版社,105-107.

posted on 2018-11-03 20:41  Python大数据  阅读(1850)  评论(0编辑  收藏  举报

导航