英文文本由于不涉及分词问题,词频统计相对而言简单一些。以下是一个对英文文本进行词频统计的例子。其中的关键问题有:(1)英文中同时存在大小写,会干扰词频统计的结果,所
英文文本由于不涉及分词问题,词频统计相对而言简单一些。以下是一个对英文文本进行词频统计的例子。其中的关键问题有:(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.