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

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

20180413學習筆記html

1、工做

前天在對帖子的關鍵詞抽取存儲後,發現一個問題。我彷佛將每一個關鍵詞都存到分離的cell中,這樣在最後統計總詞頻的時候,比較很差處理。因而,上回的那種樣式: python

是不行的,應該把它們放到同一列(行)中,組裝成一個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)

輸出看看:app

未完機器學習

這樣看總體效果不錯。函數

3.詞頻統計

利用Counter函數對L進行詞頻統計。學習

須要導入Counter from collections import Counterspa

#新開一個xlsx文件,將詞頻統計結果寫入
ww2=Workbook()
sheet3 =ww2.active
sheet3.title="statis"

#Counter返回的的是一個dict
LC=Counter(L)

輸出看看:excel

#可是這樣存儲起來沒法使用,因此須要排一下序,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')

咱們來看看效果吧:

那麼整體是完成了。

2、總結反思

很明顯,雖然統計詞頻是完成了,可是感受效果通常。尤爲是在記錄詞彙的時候,將一些無干的詞一塊兒統計進來了。好比莫名其妙的「http」,還有其餘英文,多是爬下來的網友的名字之類的,在標註的時候過多的引用與其相關的帖子,致使出現頻率太高。另外還有一些空白的符號,jieba爲何會把這種空白符當成詞,奇怪。。。

3、接下來的任務

接下來的工做是對統計的詞,進行處理分析。利用正則表達式,過濾出咱們所須要的中文詞彙,再統計一次,應該就能夠了。

剩下的就是機器學習的內容了。

相關文章
相關標籤/搜索