1. 程式人生 > >Python文本處理: 分詞和詞雲圖

Python文本處理: 分詞和詞雲圖

wordcloud jieba python3 詞雲 分詞

‘‘‘ import os import jieba # 分詞包 import numpy # numpy計算包 import codecs # codecs提供open方法指定打開的文件的語言編碼,它會在讀取時自動轉換為內部的unicode import pandas # 統計學工具包 import matplotlib.pyplot as plt from wordcloud import WordCloud, ImageColorGenerator # 詞雲包 from scipy.misc import imread from time import sleep def join_txt(): # ---- 合並txt文件 # 獲取目標文件夾的路徑 meragefiledir = os.getcwd() + ‘\\corpus‘ # 獲取當前文件夾中的文件名稱列表 filenames = os.listdir(meragefiledir) # 打開當前目錄下的result.txt文件,如果沒有則創建 file = open(‘all_result.txt‘, ‘w‘) # 向文件中寫入字符 先遍歷文件名 for filename in filenames: filepath = meragefiledir + ‘\\‘ filepath = filepath + filename # 遍歷單個文件,讀取行數 for line in open(filepath,encoding=‘utf-8‘): file.writelines(line) file.write(‘\n‘) file.close() def make_pic(): # 導入文本,分詞處理 file = codecs.open(u‘all_result.txt‘, ‘r‘) content = file.read() file.close() segment = [] segs = jieba.cut(content) # 使用jieba分詞 for seg in segs: if len(seg) > 1 and seg != ‘\r\n‘: segment.append(seg) # 去停用詞(文本去噪) words_df = pandas.DataFrame({‘segment‘: segment}) words_df.head() stopwords = pandas.read_csv("stopword.txt", index_col=False, quoting=3, sep=‘\t‘, names=[‘stopword‘], encoding="utf8") words_df = words_df[~words_df.segment.isin(stopwords.stopword)] # print(words_df.head(6)) # 詞匯頻率表 words_stat = words_df.groupby(by=[‘segment‘])[‘segment‘].agg({"count": numpy.size}) words_stat = words_stat.reset_index().sort_values(by="count", ascending=False) # 自定義詞雲背景 bimg = imread(‘mangguo.png‘) wordcloud = WordCloud(background_color="white", mask=bimg, font_path=‘msyh.ttf‘) wordcloud = wordcloud.fit_words(dict(words_stat.head(990000).itertuples(index=False))) # 從背景圖片生成顏色值 bimgColors = ImageColorGenerator(bimg) plt.axis("off") plt.imshow(wordcloud.recolor(color_func=bimgColors)) # plt.show() wordcloud.to_file( "ciyun.png") if __name__ == ‘__main__‘: join_txt() sleep(2) print(‘txt 文件整合完成!----‘) make_pic() print(‘ 詞雲 圖片生成 完成-----ciyun.png ‘) ‘‘‘

win 上 wordcloud包需要自己安裝,可以去 https://www.lfd.uci.edu/~gohlke/pythonlibs/
下載對應的whl版本。

需要註意:

wordcloud = wordcloud.fit_words(dict(words_stat.head(990000).itertuples(index=False)))
這裏接受的是一個 dict類型

Python文本處理: 分詞和詞雲圖