1. 程式人生 > >Python3 利用openpyxl 以及jieba 對帖子進行關鍵詞抽取——對抽取的關鍵詞進行詞頻統計

Python3 利用openpyxl 以及jieba 對帖子進行關鍵詞抽取——對抽取的關鍵詞進行詞頻統計

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 對帖子進行關鍵詞抽取——對抽取的關鍵詞進行詞頻統計