基於Python實現詞雲制作


1 第三方庫的安裝與簡介

1.1 Python第三方庫 jieba(中文分詞)

1. 特點

(1)支持三種分詞模式:

  • 精確模式,試圖將句子最精確地切開,適合文本分析;
  • 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
  • 搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜索引擎分詞。

(2)支持繁體分詞

(2)支持自定義詞典

(3)MIT 授權協議

2. 安裝和使用說明

pip install jieba / pip3 install jieba

通過 import jieba 進行引用

3. 主要功能

這里主要涉及到的是分詞功能,詳述如下:

(1)jieba.cut 方法接受三個輸入參數:

  • 需要分詞的字符串;
  • cut_all 參數用來控制是否采用全模式;
  • HMM 參數用來控制是否使用 HMM 模型。

(2)jieba.cut_for_search 方法接受兩個參數:

  • 需要分詞的字符串;
  • 是否使用 HMM 模型。

該方法適合用於搜索引擎構建倒排索引的分詞,粒度比較細。

1. 待分詞的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。

2. 不建議直接輸入 GBK 字符串,可能無法預料地錯誤解碼成 UTF-8。

3. jieba.cut 以及 jieba.cut_for_search 返回的結構都是一個可迭代的 generator,可以使用 for 循環來獲得分詞后得到的每一個詞語(unicode),或者用jieba.lcut 以及jieba.lcut_for_search 直接返回 list。

(3)jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定義分詞器,可用於同時使用不同詞典。jieba.dt 為默認分詞器,所有全局分詞相關函數都是該分詞器的映射。

4. 示例代碼

(1)實現代碼:

 1 # coding=utf-8
 2 import jieba
 3 
 4 text = "輕輕地我走了正如我輕輕地來"
 5 
 6 seg_list = jieba.cut(text, cut_all=False)
 7 print("Default Mode: " + "/ ".join(seg_list))       # 精確模式
 8 
 9 seg_list = jieba.cut(text, cut_all=True)
10 print("Full Mode: " + "/ ".join(seg_list))          # 全模式
11 
12 seg_list = jieba.cut_for_search(text)
13 print("Search Mode: " + "/ ".join(seg_list))        # 搜索引擎模式

 

(2)運行結果:

 

1.2 Python第三方庫wordcloud(詞雲)

1. 安裝和使用說明

pip install wordcloud / pip3 install wordcloud

通過 import wordcloud 進行引用

2. 主要功能

wordcloud把詞雲當作一個對象,它可以將文本中詞語出現的頻率作為一個參數繪制詞雲,而詞雲的大小、顏色、形狀等都是可以設定的。

生成詞雲的步驟如下:

(1)配置對象參數

(2)加載詞雲文本

(3)輸出詞雲文件 (如果不加說明默認的圖片大小為400 * 200)

3. 常見的參數列表

 

2 制作生成詞雲

2.1 生成《新冠病毒無症狀感染者管理規范》的詞雲

(1)實現代碼:

 1 # coding=utf-8
 2 import matplotlib.pyplot as plt
 3 import jieba
 4 from wordcloud import WordCloud
 5 
 6 # 1.讀入txt文本數據
 7 with open("test.txt", 'r') as f:
 8           text=f.read()
 9 
10 # 2.分詞
11 cut_text = " ".join(jieba.cut(text))
12 
13 # 3.生成詞雲
14 wc = WordCloud(
15     font_path=r'.\simhei.ttf',
16     background_color = 'white',
17     width = 1000,
18     height = 880,
19 ).generate(cut_text)
20 
21 # 4.顯示詞雲圖片
22 plt.imshow(wc, interpolation="bilinear")
23 plt.axis('off')
24 plt.show()

 

(2)運行結果:

 

2.2 生成《關於做好高校畢業生就業創業工作的通知》的詞雲

(1)實現代碼:

 1 # coding=utf-8
 2 import PIL.Image as image
 3 import numpy as np
 4 import matplotlib.pyplot as plt
 5 import jieba
 6 from wordcloud import WordCloud, ImageColorGenerator
 7 
 8 def GetWordCloud():
 9     path_txt = "test.txt"
10     path_img = "test.jpg"
11     # 1.讀入txt文本數據
12     with open(path_txt, 'r') as f:
13           text=f.read()
14     background_image = np.array(image.open(path_img))
15 
16     # 2.分詞
17     cut_text = " ".join(jieba.cut(text))
18 
19     # 3.生成詞雲
20     wc = WordCloud(
21         font_path=r'.\simhei.ttf',
22         background_color = 'white',
23         mask=background_image
24     ).generate(cut_text)
25 
26     # 生成顏色值
27     image_colors = ImageColorGenerator(background_image)
28 
29     # 4.顯示詞雲圖片
30     plt.imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")
31     plt.axis('off')
32     plt.show()
33 
34 
35 if __name__ == "__main__":
36     GetWordCloud()

 

(2)運行結果:

 

Python第三方庫jieba(中文分詞)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM