基于python實(shí)現(xiàn)分析識(shí)別文章/內(nèi)容中的高頻詞和關(guān)鍵詞
nltk 和 collections 庫
首先,需要安裝 nltk 庫和 collections 庫??梢允褂靡韵旅顏戆惭b:
pip install nltk pip install collections
接下來,需要下載 nltk 庫中的 stopwords 和 punkt 數(shù)據(jù)??梢允褂靡韵麓a來下載:
import nltk
nltk.download('stopwords')
nltk.download('punkt')下載完成后,可以使用以下代碼來讀取文章并進(jìn)行分析:
import collections
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
# 讀取文章
with open('article.txt', 'r',encoding='utf-8') as f:
article = f.read()
# 分詞
tokens = word_tokenize(article)
# 去除停用詞
stop_words = set(stopwords.words('english'))
filtered_tokens = [token for token in tokens if token.lower() not in stop_words]
# 統(tǒng)計(jì)詞頻
word_freq = collections.Counter(filtered_tokens)
# 輸出高頻詞
print('Top 10 frequent words:')
for word, freq in word_freq.most_common(10):
print(f'{word}: {freq}')
# 提取關(guān)鍵詞
keywords = nltk.FreqDist(filtered_tokens).keys()
# 輸出關(guān)鍵詞
print('Keywords:')
for keyword in keywords:
print(keyword)上述代碼中,首先使用 open() 函數(shù)讀取文章,然后使用 word_tokenize() 函數(shù)將文章分詞。接著,使用 stopwords 數(shù)據(jù)集去除停用詞,使用 collections.Counter() 函數(shù)統(tǒng)計(jì)詞頻,并輸出高頻詞。最后,使用 nltk.FreqDist() 函數(shù)提取關(guān)鍵詞,并輸出關(guān)鍵詞。
需要注意的是,上述代碼中的 article.txt 文件需要替換為實(shí)際的文章文件路徑。
結(jié)巴(jieba)庫實(shí)現(xiàn)
# 導(dǎo)入必要的庫
import jieba
import jieba.analyse
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 讀取文章
with open('./data/2.txt', 'r', encoding='utf-8') as f:
article = f.read()
# 分詞
words = jieba.cut(article)
# 統(tǒng)計(jì)詞頻
word_counts = Counter(words)
# 輸出高頻詞
print('高頻詞:')
for word, count in word_counts.most_common(10):
print(word, count)
# 輸出關(guān)鍵詞
print('關(guān)鍵詞:')
keywords = jieba.analyse.extract_tags(article, topK=10, withWeight=True, allowPOS=('n', 'nr', 'ns'))
for keyword, weight in keywords:
print(keyword, weight)
# 生成詞云
wordcloud = WordCloud(font_path='msyh.ttc', background_color='white', width=800, height=600).generate(article)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()導(dǎo)入jieba庫:首先需要導(dǎo)入jieba庫,才能使用其中的分詞功能。
讀取文章:需要讀取要分析的文章,可以使用Python內(nèi)置的open函數(shù)打開文件,然后使用read方法讀取文件內(nèi)容。
分詞:使用jieba庫的cut方法對(duì)文章進(jìn)行分詞,得到一個(gè)生成器對(duì)象,可以使用for循環(huán)遍歷生成器對(duì)象,得到每個(gè)詞。
統(tǒng)計(jì)詞頻:使用Python內(nèi)置的collections庫中的Counter類,對(duì)分詞后的詞進(jìn)行統(tǒng)計(jì),得到每個(gè)詞出現(xiàn)的次數(shù)。
輸出高頻詞:根據(jù)詞頻統(tǒng)計(jì)結(jié)果,輸出出現(xiàn)頻率最高的詞,即為高頻詞。
輸出關(guān)鍵詞:使用jieba庫的analyse模塊中的extract_tags方法,根據(jù)TF-IDF算法計(jì)算每個(gè)詞的權(quán)重,輸出權(quán)重最高的詞,即為關(guān)鍵詞。
生成詞云:使用wordcloud庫生成詞云,將文章中的詞按照詞頻生成詞云,詞頻越高的詞在詞云中出現(xiàn)的越大。
到此這篇關(guān)于基于python實(shí)現(xiàn)分析識(shí)別文章/內(nèi)容中的高頻詞和關(guān)鍵詞的文章就介紹到這了,更多相關(guān)python分析識(shí)別高頻詞和關(guān)鍵詞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Python中操作日期和時(shí)間之gmtime()方法的使用
這篇文章主要介紹了在Python中操作日期和時(shí)間之gmtime()方法的使用,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05
Python邊緣檢測之prewitt,sobel和laplace算子詳解
這篇文章主要為大家詳細(xì)介紹了Python邊緣檢測中prewitt、sobel和laplace算子的使用方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-04-04
Python中Playwright?與?pyunit?結(jié)合使用詳解
這篇文章主要介紹了Python中Playwright?與?pyunit?結(jié)合使用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
python pandas多條件篩選實(shí)現(xiàn)方式
用戶在使用pandas進(jìn)行多條件篩選時(shí)發(fā)現(xiàn)無現(xiàn)成方法,自行編寫函數(shù)實(shí)現(xiàn),數(shù)據(jù)為虛構(gòu),供參考學(xué)習(xí),鼓勵(lì)支持腳本之家2025-09-09
分析機(jī)器學(xué)習(xí)之決策樹Python實(shí)現(xiàn)
決策樹是一種非參數(shù)的有監(jiān)督學(xué)習(xí)方法,它能夠從一系列有特征和標(biāo)簽的數(shù)據(jù)中總結(jié)出決策規(guī)則,并用樹狀圖的結(jié)構(gòu)來呈現(xiàn)這些規(guī)則,以解決分類和回歸問題。決策樹算法容易理解,適用各種數(shù)據(jù),在解決各種問題時(shí)都有良好表現(xiàn)2021-06-06
Python實(shí)現(xiàn)過濾單個(gè)Android程序日志腳本分享
這篇文章主要介紹了Python實(shí)現(xiàn)過濾單個(gè)Android程序日志腳本分享,本文講解了原理、實(shí)現(xiàn)代碼、使用方法、最新代碼等內(nèi)容,需要的朋友可以參考下2015-01-01
python?動(dòng)態(tài)規(guī)劃問題解析(背包問題和最長公共子串)
這篇文章主要介紹了python?動(dòng)態(tài)規(guī)劃(背包問題和最長公共子串),在動(dòng)態(tài)規(guī)劃中,你要將某個(gè)指標(biāo)最大化。在這個(gè)例子中,你要找出兩個(gè)單詞的最長公共子串。fish和fosh都包含的最長子串是什么呢,感興趣的朋友跟隨小編一起看看吧2022-05-05
python圖形界面開發(fā)之wxPython樹控件使用方法詳解
這篇文章主要介紹了python圖形界面開發(fā)之wxPython樹控件使用方法詳解,需要的朋友可以參考下2020-02-02

