英文詞頻統(tǒng)計

該案例以莎士比亞的四大悲劇之一《哈姆雷特》為例,來統(tǒng)計該文章中的詞語出現(xiàn)的頻率??傮w的步驟為讀入文本,大小寫轉(zhuǎn)換,特殊字符轉(zhuǎn)換,分詞,詞頻統(tǒng)計,排序。通過觀察詞語頻率最高的幾個詞,我們大致可以了解該文章的主要內(nèi)容。這一小節(jié),我們沒有涉及到英文文章中去停用詞的操作。

停用詞:出現(xiàn)的頻率很高,但對文章表達(dá)主旨沒有太大影響的詞。在英文文章中,如:I, and, but, here, there, some之類的詞語等。

文檔鏈接:鏈接:https://pan.baidu.com/s/17ehiYKripA--noIjfFLBbQ
提取碼:yuhq

下面是英文詞頻統(tǒng)計的代碼示例:

#導(dǎo)入文本
f = open('./data/hamlet.txt','r')
txt = f.read()
print(txt)

#這里只打印部分內(nèi)容
# The Tragedy of Hamlet, Prince of Denmark
# Shakespeare homepage | Hamlet | Entire play
# ACT I

# SCENE I. Elsinore. A platform before the castle.

# FRANCISCO at his post. Enter to him BERNARDO

#將文本內(nèi)容全部轉(zhuǎn)化為小寫格式
txt = txt.lower()

#將特殊字符轉(zhuǎn)化為空格
for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':
    txt = txt.replace(ch,' ')
    
#以空格為分隔符,取出所有單詞
words = txt.split()
print(words)
#['the','tragedy','of','hamlet','prince','of'......]

#查看詞語的數(shù)量
len(words)
#32259

#查看無重復(fù)單詞的數(shù)量
len(set(words))  #set()函數(shù)的功能就是去除序列中的重復(fù)元素
#4793

#統(tǒng)計詞語的頻率
counts = {}
for word in words:
    counts[word] = counts.get(word,0) + 1
    
#將統(tǒng)計得到的字典counts轉(zhuǎn)換為列表
counts = list(counts.items())
print(counts)
#[('the', 1138),('tragedy', 3),('of', 669),('hamlet', 462),('prince', 10)......]

#對counts列表按照詞云頻率進(jìn)行排序
counts.sort(key = lambda x:x[1],reverse = True)

#打印頻率最高的前10個詞語
for i in range(10):
    print(counts[i][0],counts[i][1])
# the 1138
# and 965
# to 754
# of 669
# you 550
# i 542
# a 542
# my 514
# hamlet 462
# in 436

由于我們沒有做去停用詞操作,從我們打印的前10個詞語中可以看出,the, and, to, of, you等這些對文章主旨影響不大的詞的頻率最高。這也符合我們的常識,任何一篇文章中出現(xiàn)最多的都是這些詞。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容