python - 從excel 數據提取問答字段生產詞雲
准備工作:
1.數據表,這里需要截取的是數據表ceshi的 提問內容 這個列的數據
2.字體
windwos環境下 可以從 C:\Windows\Fonts 獲取
3.無背景的圖
3.代碼
v1.0 from PIL import Image from RemoveWord.rword import rw as rws import matplotlib.pyplot as plt import wordcloud as wc import numpy as np import matplotlib.image as mpimg import wordcloud import pandas as pd import jieba wenjian = '' object_list = [] # 通過鍵值對的形式存儲詞語及其出現的次數 counts = {} # 從外部引入 # remove_words = [u'的', u',',u'和', u'是', u'隨着', u'對於', u'對',u'等',u'能',u'都',u'。',u' ',u'、',u'中',u'在',u'了', # u'通常',u'如果',u'我們',u'需要', u'無法', u'怎么',u'連接',u'設置',u'文件',u'進不去',u'怎么辦',u'問題', # u'申請',u'公司',u'加入',u'請問',u'查看',u'文件夾',u'不到',u'修改',u'哥哥',u'錯誤',u'什么',u'辦公',u'哪里',u'不了', # u'查詢',u'多少',u'反應',u'哪兒',u'沒有',u'資料',u'御家',u'出現',u'不能',u'一直',u'報錯',u'技術', # u'自動',u'同時',u'收不到',u'如何','可以',u'使用指南',u'默認',u'原始',u'處理',u'這個',u'線條',u'成功',u'不是',u'10' # ] # 自定義去除詞庫 # 讀取文件,獲取相應列的所有字符合集 df = pd.read_excel("ceshi.xls") for i in range(df.__len__()): wenjian += df['提問內容'].values[i] # 分詞 alist = jieba.lcut(wenjian) # 分詞過濾不需要的詞 for word in alist: # 循環讀出每個分詞 if word not in rws: # 如果不在去除詞庫中 object_list.append(word) # 分詞追加到列表 #計算分詞的次數 for word in object_list: if len(word) == 1: # 單個詞語不計算在內 continue else: counts[word] = counts.get(word, 0) + 1 # 遍歷所有詞語,每出現一次其對應的值加 1 items = list(counts.items()) # 將鍵值對轉換成列表 items.sort(key=lambda x: x[1], reverse=True) # 根據詞語出現的次數進行從大到小排序 items2 = dict(items) # 基本使用,將文字轉換為圖的形式顯示 img = mpimg.imread("333.jpg") c = wordcloud.WordCloud( # prefer_horizontal=0.5, #詞語水平方向排版出現的頻率,默認 0.9 (所以詞語垂直方向排版出現頻率為 0.1 ) scale=4, #默認為1,按照比例進行放大畫布,如設置為1.5,則長和寬都是原來畫布的1.5倍 background_color='white', #背景顏色 # width=400, #生成的圖片寬度 # height=300, #生成的圖片高度 # min_font_size=10, #指定詞雲中字體的最小字號,默認4號 # max_font_size=20, #指定詞雲中字體的最大字號,根據高度自動調節 # font_step=2, #指定詞雲中字體字號的步進間隔,默認為1 font_path=r'D:\python_project\T1\msyhl.ttc', #指定字體文件的路徑,默認None # max_words=5, #指定詞雲顯示的最大單詞數量,默認200 # stopwords=[], #指定詞雲的排除詞列表,即不顯示的單詞列表 mask=img, #指定詞雲形狀,默認為長方形,需要引用imread()函數 collocations=1, #bool, default=True 是否包括兩個詞的搭配 colormap='viridis', #string or matplotlib colormap, default=”viridis” #給每個單詞隨機分配顏色,若指定color_func,則忽略該方法 random_state=None #int or None #為每個單詞返回一個PIL顏色 # regexp=None #string or None (optional)使用正則表達式分隔輸入的文本 ) c.generate_from_frequencies(items2) #根據詞頻生成詞雲 # c.generate(items2) #根據文本生成詞雲 # c.generate_from_text(text) #根據文本生成詞雲 # c.fit_words(frequencies) #根據詞頻生成詞雲 # c.process_text(text) #將長文本分詞並去除屏蔽詞(此處指英語,中文分詞還是需要自己用別的庫先行實現,使用上面的 fit_words(frequencies) ) # c.recolor([random_state, color_func, colormap]) #對現有輸出重新着色。重新上色會比重新生成整個詞雲快很多 # c.to_array() #轉化為 numpy array # c.to_file(filename) #輸出到文件 # 保存為圖片 c.to_file("ciyun.png") # # # 打印顯示圖片 # plt.imshow(c) # plt.axis("off") # plt.show()