亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python統(tǒng)計(jì)中文詞頻的四種方法小結(jié)

 更新時(shí)間:2023年08月25日 14:54:25   作者:PythonFun  
統(tǒng)計(jì)中文詞頻是Python考試中常見的操作,本文我們總結(jié)了四種常見的中文詞頻統(tǒng)計(jì)方法,并列出代碼,具有一定的參考價(jià)值,感興趣的可以了解一下

統(tǒng)計(jì)中文詞頻是Python考試中常見的操作,由于考察內(nèi)容較多,因此比較麻煩,那么有沒有好的方法來(lái)實(shí)現(xiàn)呢?今天,我們總結(jié)了四種常見的中文詞頻統(tǒng)計(jì)方法,并列出代碼,供大家學(xué)習(xí)參考。

中文詞頻統(tǒng)計(jì)主要是通過open()打開文本,然后read()方法讀取后,采用結(jié)巴分詞(jieba)模塊進(jìn)行分詞,接著用推表推導(dǎo)式、Counter或者是字典的方法來(lái)統(tǒng)計(jì)詞頻,也可以采用NLTK的方法,最后格式化打印出來(lái)。

題目:統(tǒng)計(jì)中文文本文件【詞頻統(tǒng)計(jì)文本.txt】中長(zhǎng)度大于1的詞的詞頻,然后打印出詞頻數(shù)最高的10個(gè)詞。

默認(rèn)系統(tǒng)里已經(jīng)安裝好了jieba這個(gè)模塊。如果還沒有安裝,可以在cmd下通過pip install jieba來(lái)安裝這個(gè)模塊。

一、字典法——常用的方法

先讀取文本,然后jieba分詞,再對(duì)分詞后的列表進(jìn)行遍歷,然后用字典統(tǒng)計(jì)詞頻。這里排除了單個(gè)詞,代碼如下:

import jieba
txt = open("詞頻統(tǒng)計(jì)文本.txt", "r").read()
words = jieba.lcut(txt)
counts = {}
for word in words:
    if len(word) == 1: #排除單個(gè)字符的分詞結(jié)果
        continue
    else:
        counts[word] = counts.get(word,0) + 1
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(10):
    word, count = items[i]
    print("{0:<10}{1:>5}".format(word,count))
print ('已統(tǒng)計(jì)數(shù)量排前10的詞')

二、Counter法——代碼簡(jiǎn)單,速度快

先生成Counter對(duì)象,再排序,最后再打印出來(lái)。這里我們使用了most_common的方法,代碼更為簡(jiǎn)潔,更好理解一點(diǎn)。代碼如下:

import jieba
from collections import Counter
with open("詞頻統(tǒng)計(jì)文本.txt", "r",encoding="utf-8") as f:
    words = jieba.lcut(f.read())
    words = [item for item in words if len(item)>1]
counts = Counter(words)
for word,count in counts.most_common(10):
    print(word,count)
print ('已統(tǒng)計(jì)數(shù)量排前10的詞')

三、NLTK方法——有點(diǎn)兒小麻煩

利用列表推導(dǎo)式篩選列表,利用NLTK中的FreqDist來(lái)統(tǒng)計(jì)列表中的詞步,代碼如下。

import jieba,os
from nltk.probability import FreqDist
with open("詞頻統(tǒng)計(jì)文本.txt","r",encoding="utf-8") as f:
    text = f.read()
words = jieba.lcut(text)
lst = [i for i in words if len(i)>1]
freq = FreqDist(lst)
for item in freq.most_common(10):
    word,count=item
    print(f"{word:<10}\t{count:<5}")
print ('已統(tǒng)計(jì)數(shù)量排前10的詞')

使用這種方法,得安裝nltk包,較為麻煩。

四、列表推導(dǎo)式法

如果不借助其它包,我們可以充分利用Python自帶的count方法和列表推導(dǎo)式,實(shí)現(xiàn)詞頻的統(tǒng)計(jì)。這其中與前面排序的方法不同的是,我們采用了sorted的方法,完整代碼如下:

import jieba,os
with open("詞頻統(tǒng)計(jì)文本.txt","r",encoding="utf-8") as f:
    text = f.read()
words = jieba.lcut(text)
lst = [(key,words.count(key)) for key in set(words) if len(key)>1]
items = sorted(lst,key=lambda x:x[1],reverse=True)
for i in range(10):
    word, count = items[i]
    if len(word) == 1: #排除單個(gè)字符的分詞結(jié)果
        continue
    else:
        print(f"{word:<10}\t{count:<5}")
print ('已統(tǒng)計(jì)數(shù)量排前10的詞')

五、學(xué)后反思

1. 中文詞頻統(tǒng)計(jì)主要考察文本的讀取、列表的遍歷、jieba分詞、詞頻統(tǒng)計(jì)、排序、結(jié)果的格式化和打印輸出等綜合能力。因此,它是Python二級(jí)中??嫉念}目,認(rèn)真學(xué)習(xí),并找出多種詞頻統(tǒng)計(jì)的方法可以更好地理解Python中的相關(guān)概念和基礎(chǔ)語(yǔ)法知識(shí)。

2. 四種方法中最麻煩的是NLTK法和列表推導(dǎo)式化,字典法和Counter方法最為常用,字典法常出現(xiàn)在考試中,而Counter的方法實(shí)用性更強(qiáng),大家可以有選擇地使用。

3. 有了詞頻表,后續(xù)可以進(jìn)行可視化的圖表生成,包括詞云圖和線形圖等,以便更直觀地觀察語(yǔ)篇中詞的特點(diǎn)。

到此這篇關(guān)于Python統(tǒng)計(jì)中文詞頻的四種方法小結(jié)的文章就介紹到這了,更多相關(guān)Python統(tǒng)計(jì)中文詞頻內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論