Python3 利用openpyxl 以及jieba 對帖子進行關鍵詞抽取——對抽取的關鍵詞進行詞頻統計
阿新 • • 發佈:2018-04-13
n-2 好處 二維 返回 多條 當前 記錄 htm IT
Python3 利用openpyxl 以及jieba 對帖子進行關鍵詞抽取 ——對抽取的關鍵詞進行詞頻統計
20180413學習筆記
一、工作
前天在對帖子的關鍵詞抽取存儲後,發現一個問題。我似乎將每個關鍵詞都存到分離的cell中,這樣在最後統計總詞頻的時候,比較不好處理。於是,上回的那種樣式:
是不行的,應該把它們放到同一列(行)中,組裝成一個list或tuple再進行詞頻統計。
1.讀取輸出文件“t1.xlsx”
wr2=load_workbook(‘t1.xlsx‘)
cursheet=wr2.active #當前表單
2.將表格中的所有數據讀到L[]中
已將前面的只有十個數據的"biao.xlsx"換成有300多條帖子的"biao2.xlsx"
L=[]
for row in cursheet.rows:
for cell in row:
L.append(cell.value)
輸出看看:
未完
這樣看整體效果不錯。
3.詞頻統計
利用Counter函數對L進行詞頻統計。
需要導入Counter from collections import Counter
#新開一個xlsx文件,將詞頻統計結果寫入
ww2=Workbook()
sheet3 =ww2.active
sheet3.title="statis"
#Counter返回的的是一個dict
LC=Counter(L)
輸出看看:
#但是這樣存儲起來無法使用,所以需要排一下序,sorted返回的是一個二維list
LC2=sorted(LC.items(),key=lambda d:d[1],reverse=True)
輸出看看:
為了將二維數組中的每個元素,分別存儲在excel表格中的兩列,需要將的元素拆開。於是我找到了Python3的相關文檔:
https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions
將其一層層分離:
#用n來計數,奇數存儲(str,num)中的前面字符串,偶數存儲後面的出現次數,感覺這樣做很蠢。。。但是暫時還不能像c那樣熟練地使用 c1=1 for k in LC2: n=1 for v in k: if n%2==1: sheet3["A%d" % c1].value=v n=n+1 else: sheet3["B%d" % c1].value=v c1=c1+1 ww2.save(‘sta.xlsx‘)
我們來看看效果吧:
那麽總體是完成了。
二、總結反思
很明顯,雖然統計詞頻是完成了,但是感覺效果一般。尤其是在記錄詞匯的時候,將一些無幹的詞一起統計進來了。比如莫名其妙的“http”,還有其他英文,可能是爬下來的網友的名字之類的,在標註的時候過多的引用與其相關的帖子,導致出現頻率過高。另外還有一些空白的符號,jieba為什麽會把這種空白符當成詞,奇怪。。。
三、接下來的任務
接下來的工作是對統計的詞,進行處理分析。利用正則表達式,過濾出我們所需要的中文詞匯,再統計一次,應該就可以了。
剩下的就是機器學習的內容了。
Python3 利用openpyxl 以及jieba 對帖子進行關鍵詞抽取——對抽取的關鍵詞進行詞頻統計