nltk之統計詞頻,去除停用詞,生成詞雲(一)

原文鏈接:https://www.jianshu.com/p/b41222dded2a
導包
import nltk, urllib.request
from bs4 import BeautifulSoup
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba
import PIL.Image as image
import numpy as np
獲取網絡文本,清除干擾詞
response = urllib.request.urlopen(‘http://python.org/’)
html = response.read()
html = nltk.clean_html(html)
html = BeautifulSoup(html).get_text()
tokens = [tok for tok in html.split()]
獲取詞頻
Freq_dist_nltk=nltk.FreqDist(tokens)
print(Freq_dist_nltk.plot(50, cumulative=False))
for k,v in Freq_dist_nltk.items():
print(str(k)+’:’+str(v)
去除停用詞,畫詞頻曲線圖
stopwords = [word.strip().lower() for word in open(“stop.txt”)]
clean_tokens = [tok for tok in tokens if len(tok.lower()) > 1 and (tok.lower() not in stopwords)]
Freq_dist_nltk=nltk.FreqDist(clean_tokens)
print(Freq_dist_nltk.plot(50, cumulative=False))
屏幕快照 2019-04-28 下午21.14.15 下午.png
中文分詞
def trans_CN(text):
word_list = jieba.cut(text)
result = " ".join(word_list)
return result
生成中文詞雲
wordcloud = WordCloud(
# 添加遮罩層
mask=mask,
# 生成中文字的字體,必須要加,不然看不到中文
font_path=“STFANGSO.ttf”
).generate(text)
image_produce = wordcloud.to_image()
image_produce.show()
生成英文詞雲
wordcloud = WordCloud(
background_color=“white”, #設置背景爲白色,默認爲黑色
width=1500, #設置圖片的寬度
height=960, #設置圖片的高度
margin=10 #設置圖片的邊緣
).generate(str(clean_tokens))

繪製圖片

plt.imshow(wordcloud)

消除座標軸

plt.axis(“off”)

展示圖片

plt.show()

保存圖片

wordcloud.to_file(‘my_test2.png’)
生成效果圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章