20180413學習筆記html
前天在對帖子的關鍵詞抽取存儲後,發現一個問題。我彷佛將每一個關鍵詞都存到分離的cell中,這樣在最後統計總詞頻的時候,比較很差處理。因而,上回的那種樣式: python
是不行的,應該把它們放到同一列(行)中,組裝成一個list或tuple再進行詞頻統計。正則表達式
wr2=load_workbook('t1.xlsx') cursheet=wr2.active #當前表單
已將前面的只有十個數據的"biao.xlsx"換成有300多條帖子的"biao2.xlsx"數組
L=[] for row in cursheet.rows: for cell in row: L.append(cell.value)
輸出看看:app
未完機器學習
這樣看總體效果不錯。函數
利用Counter函數對L進行詞頻統計。學習
須要導入Counter from collections import Counter
spa
#新開一個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')
咱們來看看效果吧:
那麼整體是完成了。
很明顯,雖然統計詞頻是完成了,可是感受效果通常。尤爲是在記錄詞彙的時候,將一些無干的詞一塊兒統計進來了。好比莫名其妙的「http」,還有其餘英文,多是爬下來的網友的名字之類的,在標註的時候過多的引用與其相關的帖子,致使出現頻率太高。另外還有一些空白的符號,jieba爲何會把這種空白符當成詞,奇怪。。。
接下來的工做是對統計的詞,進行處理分析。利用正則表達式,過濾出咱們所須要的中文詞彙,再統計一次,應該就能夠了。
剩下的就是機器學習的內容了。