今天继续给大家介绍Python相关知识,本文主要内容是Python英文词频统计程序示例,主要是对英文文本——《哈姆雷特》进行分词。
一、英文文本词频统计思路
想要对《哈姆雷特》进行英文单词词频统计,那么我们首先需要拿到《哈姆雷特》的原文,将之存储为本地的txt文档,然后使用Python打开该文件,读取里面的信息。
在读取《哈姆雷特》内容后,我们首先需要将文件内容进行预处理,比如删除文件中的特殊符号,以及对文件内容进行全部小写的归一化操作等等。除此之外,我们还需要删除文档中所有的标点符号。之后,我们可以将文档使用split()函数,根据空格进行分隔,形成一个列表。
之后,我们逐个取出列表中的元素,然后统计列表中单词的个数。为了进行词频统计,我们需要创建一个字典变量,以单词为键,以统计出的单词个数为值,在遍历列表时不断更新该字典,就可以最终得到一个含有所有《哈姆雷特》内容单词词频的字典了。
最后,我们按照该字典转化为一个新的列表,就可以对值的大小对该字典进行排序,得到《哈姆雷特》词频从大到小的顺序了。
二、英文文本词频统计程序编写
根据上述思路,我们可以来编写英文文本词频统计程序了。
打开文件及读取文件内容程序代码如下所示:
f=open("C:\\Users\\Administrator\\Desktop\\哈姆雷特原文.txt","rt",encoding="utf-8")
Hamlet=f.read()
f.close()
对文件内容进行预处理代码如下所示:
Hamlet=Hamlet.lower()
for char in "!@#$%^&*()_+~`,./;'[]\<>?:\"{}|":
Hamlet=Hamlet.replace(char,"")
对文件单词进行统计代码如下所示:
counts=dict()
for word in words:
counts[word]=counts.get(word,0)+1
对字典生成新的列表,并进行排序,代码如下所示:
sequence=list(counts.items())
sequence.sort(key=lambda x:x[1],reverse=True)
筛选出单词出现频率最高的10个单词,并进行输出,代码如下所示:
for i in range(10):
word,count=sequence[i]
print("单词{}在Hamlet中出现次数为第{},出现了{}次".format(word,i+1,count))
最终代码如下所示:
f=open("C:\\Users\\Administrator\\Desktop\\哈姆雷特原文.txt","rt",encoding="utf-8")
Hamlet=f.read()
f.close()
Hamlet=Hamlet.lower()
for char in "!@#$%^&*()_+~`,./;'[]\<>?:\"{}|":
Hamlet=Hamlet.replace(char,"")
words=Hamlet.split()
counts=dict()
for word in words:
counts[word]=counts.get(word,0)+1
sequence=list(counts.items())
sequence.sort(key=lambda x:x[1],reverse=True)
for i in range(10):
word,count=sequence[i]
print("单词{}在Hamlet中出现次数为第{},出现了{}次".format(word,i+1,count))
三、程序执行结果展示
运行上述程序,我们最终得到结果如下所示:
从上图可以看出,我们成功统计出了在《哈姆雷特》中出现次数最多的10个单词。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200