基于python實(shí)現(xiàn)分析識別文章/內(nèi)容中的高頻詞和關(guān)鍵詞
nltk 和 collections 庫
首先,需要安裝 nltk 庫和 collections 庫。可以使用以下命令來安裝:
pip install nltk pip install collections
接下來,需要下載 nltk 庫中的 stopwords 和 punkt 數(shù)據(jù)。可以使用以下代碼來下載:
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)計詞頻
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)計詞頻,并輸出高頻詞。最后,使用 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)計詞頻
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方法對文章進(jìn)行分詞,得到一個生成器對象,可以使用for循環(huán)遍歷生成器對象,得到每個詞。
統(tǒng)計詞頻:使用Python內(nèi)置的collections庫中的Counter類,對分詞后的詞進(jìn)行統(tǒng)計,得到每個詞出現(xiàn)的次數(shù)。
輸出高頻詞:根據(jù)詞頻統(tǒng)計結(jié)果,輸出出現(xiàn)頻率最高的詞,即為高頻詞。
輸出關(guān)鍵詞:使用jieba庫的analyse模塊中的extract_tags方法,根據(jù)TF-IDF算法計算每個詞的權(quán)重,輸出權(quán)重最高的詞,即為關(guān)鍵詞。
生成詞云:使用wordcloud庫生成詞云,將文章中的詞按照詞頻生成詞云,詞頻越高的詞在詞云中出現(xiàn)的越大。
到此這篇關(guān)于基于python實(shí)現(xiàn)分析識別文章/內(nèi)容中的高頻詞和關(guān)鍵詞的文章就介紹到這了,更多相關(guān)python分析識別高頻詞和關(guān)鍵詞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python邊緣檢測之prewitt,sobel和laplace算子詳解
這篇文章主要為大家詳細(xì)介紹了Python邊緣檢測中prewitt、sobel和laplace算子的使用方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-04-04
Python中Playwright?與?pyunit?結(jié)合使用詳解
這篇文章主要介紹了Python中Playwright?與?pyunit?結(jié)合使用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
python pandas多條件篩選實(shí)現(xiàn)方式
用戶在使用pandas進(jìn)行多條件篩選時發(fā)現(xiàn)無現(xiàn)成方法,自行編寫函數(shù)實(shí)現(xiàn),數(shù)據(jù)為虛構(gòu),供參考學(xué)習(xí),鼓勵支持腳本之家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ù),在解決各種問題時都有良好表現(xiàn)2021-06-06
Python實(shí)現(xiàn)過濾單個Android程序日志腳本分享
這篇文章主要介紹了Python實(shí)現(xiàn)過濾單個Android程序日志腳本分享,本文講解了原理、實(shí)現(xiàn)代碼、使用方法、最新代碼等內(nèi)容,需要的朋友可以參考下2015-01-01
python?動態(tài)規(guī)劃問題解析(背包問題和最長公共子串)
這篇文章主要介紹了python?動態(tài)規(guī)劃(背包問題和最長公共子串),在動態(tài)規(guī)劃中,你要將某個指標(biāo)最大化。在這個例子中,你要找出兩個單詞的最長公共子串。fish和fosh都包含的最長子串是什么呢,感興趣的朋友跟隨小編一起看看吧2022-05-05
python圖形界面開發(fā)之wxPython樹控件使用方法詳解
這篇文章主要介紹了python圖形界面開發(fā)之wxPython樹控件使用方法詳解,需要的朋友可以參考下2020-02-02

