一、安裝jieba庫
:\>pip install jieba #或者 pip3 install jieba
二、jieba庫解析
jieba庫主要提供提供分詞功能,可以輔助自定義分詞詞典。
jieba庫中包含的主要函數如下:
jieba.cut(s) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 精確模式,返回一個可迭代的數據類型
jieba.cut(s,cut_all=True) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 全模式,輸出文本s中所有可能的單詞
jieba.cut_for_search(s) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 搜索引擎模式,適合搜索引擎建立索引的分詞結果
jieba.lcut(s) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 精確模式,返回一個列表類型,建議使用
jieba.lcut(s,cut_all=True) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 全模式,返回一個列表類型,建議使用
jieba.lcut_for_search(s) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 搜索引擎模式,返回一個列表類型,建議使用
jieba.add_word(w) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 向分詞詞典中增加新詞w
三、用jieba庫統計文本的詞頻
《流浪地球》是劉慈欣的一部作品。該書講述了龐大的地球逃脫計劃,逃離太陽系,前往新家園。從網上獲取該書的文本文件,保存于桌面上,命名為“流浪地球。”
現統計其文本中出現次數最多的是個詞語,源代碼如下:
importjieba
txt= open("C:\\Users\\Administrator\\Desktop\\流浪地球.txt", "r", encoding='utf-8').read()
words=jieba.lcut(txt)
counts={}for word inwords:if len(word) == 1: #排除單個字符的分詞結果
continue
else:
counts[word]= counts.get(word,0) + 1items=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))
運行程序后,輸出結果如下:
故容易得知流浪地球中出現頻次較高的詞語
四、結合jieba庫的詞頻統計制作詞云圖
1、準備工作:pip 安裝 jieba , wordcloud ,matplotlib
2以阿Q正傳為例:
源代碼為:
from wordcloud importWordCloudimportmatplotlib.pyplot as pltimportjieba#生成詞云
defcreate_word_cloud(filename):
text= open("{}.txt".format(filename)).read()#結巴分詞
wordlist = jieba.cut(text, cut_all=True)
wl= " ".join(wordlist)#設置詞云
wc =WordCloud(#設置背景顏色
background_color="white",#設置最大顯示的詞云數
max_words=2000,#這種字體都在電腦字體中,一般路徑
font_path='C:\Windows\Fonts\simfang.ttf',
height=1200,
width=1600,#設置字體最大值
max_font_size=200,#設置有多少種隨機生成狀態,即有多少種配色方案
random_state=100,
)
myword= wc.generate(wl) #生成詞云
#展示詞云圖
plt.imshow(myword)
plt.axis("off")
plt.show()
wc.to_file('p.png') #把詞云保存下
if __name__ == '__main__':
create_word_cloud('C:\\Users\\Administrator\\Desktop\\阿Q正傳')
運行程序后,輸出結果如下:
故可得出文本的云詞圖。