python讀取txt文字資料進行分詞並生成詞雲圖片

檸檬味的Cat發表於2020-11-21

python對資料分詞,生成詞雲圖片

小編在日常生活工作中學習到的點,在此記錄一下,希望能夠幫助有需要的小夥伴。



前言

對文字資料內容有個直觀的感受,如小說哪些內容出現的最多,主要講述什麼事情等等。


提示:以下是本篇文章正文內容,下面案例可供參考

一、全部程式碼

import re # 正規表示式庫
import collections # 詞頻統計庫
import numpy as np # numpy資料處理庫
import jieba # 結巴分詞
import wordcloud # 詞雲展示庫
from PIL import Image # 影像處理庫
import matplotlib.pyplot as plt # 影像展示庫

# 讀取檔案
fn = open('result.txt','r',encoding='utf-8') # 開啟檔案
string_data = fn.read() # 讀出整個檔案
fn.close() # 關閉檔案

# 文字預處理
pattern = re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|"') # 定義正規表示式匹配模式
string_data = re.sub(pattern, '', string_data) # 將符合模式的字元去除

# 文字分詞
seg_list_exact = jieba.cut(string_data, cut_all = False) # 精確模式分詞
object_list = []
remove_words = [u'的', u',',u'和', u'是', u'隨著', u'對於', u'對',u'等',u'能',u'都',u'。',u' ',u'、',u'中',u'在',u'了',
                u'通常',u'如果',u'我們',u'需要'] # 自定義去除詞庫

for word in seg_list_exact: # 迴圈讀出每個分詞
    if word not in remove_words: # 如果不在去除詞庫中
        object_list.append(word) # 分詞追加到列表

# 詞頻統計
word_counts = collections.Counter(object_list) # 對分詞做詞頻統計
word_counts_top10 = word_counts.most_common(10) # 獲取前10最高頻的詞
print (word_counts_top10) # 輸出檢查
word_counts_top10 = str(word_counts_top10)

# 詞頻展示
mask = np.array(Image.open('image.jpg')) # 定義詞頻背景
wc = wordcloud.WordCloud(
    font_path='simfang.ttf', # 設定字型格式
    mask=mask, # 設定背景圖
    max_words=200, # 最多顯示詞數
    max_font_size=150, # 字型最大值
    background_color='white',
    width=800, height=600,
)

wc.generate_from_frequencies(word_counts) # 從字典生成詞雲
plt.imshow(wc) # 顯示詞雲
plt.axis('off') # 關閉座標軸
plt.show() # 顯示影像
wc.to_file('wordcloud.png')

注意:simfang.ttf檔案需要在網上下載放入本地中


選用的圖片和效果圖

注意:選用的圖片要以白色為底,如下圖
在這裡插入圖片描述
在這裡插入圖片描述

相關文章