新聞文字分類——詞雲視覺化
阿新 • • 發佈:2021-06-23
一、參考資料
文字視覺化(詞雲圖)_huanxingchen1的部落格-CSDN部落格
一、文字視覺化種類
在上篇部落格提取完文字中的關鍵詞之後,進行詞雲視覺化
1)基於文字內容的視覺化
基於文字內容的視覺化研究包括基於詞頻的視覺化和基於詞彙分佈的視覺化,常用的有詞雲、分佈圖和 Document Cards 等。
2)基於文字關係的視覺化
基於文字關係的視覺化研究文字內外關係,幫助人們理解文字內容和發現規律。常用的視覺化形式有樹狀圖、節點連線的網路圖、力導向圖、疊式圖和 Word Tree 等。
3)基於多層面資訊的視覺化
基於多層面資訊的視覺化主要研究如何結合資訊的多個方面幫助使用者從更深層次理解文字資料,發現其內在規律。其中,包含時間資訊和地理座標的文字視覺化近年來受到越來越多的關注。常用的有地理熱力圖、ThemeRiver、SparkClouds、TextFlow 和基於矩陣檢視的情感分析視覺化等。
二、步驟
在上篇部落格提取完關鍵字之後,進行資料清洗,然後繪製詞雲
1)首先讀取停用詞,生成一個停用詞列表。然後進行資料清洗。得到乾淨的文字pure_text
# 獲取停用詞列表 stopwords_path = os.path.join(path, 'stopwords.txt') stopword_list = [] with open(stopwords_path, 'r+', encoding='utf8') as f: for word in f.readlines(): if len(word)>0 and word != '\t\n': stopword_list.append(word)# 文字清洗 獲得乾淨文字 pure_text = [] for word in raw: if len(word)>1 and word != "\n\r": if not word.isdigit(): #去數字 if word.strip() not in stopword_list: #去左右空格 pure_text.append(word.strip())
2)統計詞頻
把文字列表轉成pandas的Dataframe形式,然後進行詞頻統計。
# (1)用DataFrame操作 content = pd.DataFrame(pure_text, columns=['word']) # 每個詞出現的頻率賦予一個新的列 content_new = content.groupby(by=['word'])['word'].agg({"count":np.size}) # 按頻率排序 content_new = content_new.reset_index().sort_values(by=['count'], ascending=False)
3)繪製詞雲
wordcloud = WordCloud(font_path='./zi.ttf', background_color='white', max_font_size=80) word_frequence = {x[0]:x[1] for x in content_new.head(100).values} wordcloud = wordcloud.fit_words(word_frequence) # 展示圖片 plt.imshow(wordcloud) plt.axis("off") plt.show() # 保持圖片 wordcloud.to_file('./picture/manifold.jpg')