[Text Mining]JIEBA介紹與教學-Part3

  • 747
  • 0
  • 2016-09-23

本偏重點如下:

  • 找出關鍵詞前後詞彙
  • 擷取意見詞
  • 評分   

#程式碼

#===========================================找出關鍵詞前後距離的詞
import nltk
import jieba
import codecs
jieba.set_dictionary('/dict.txt')
content = codecs.open('input_file.txt', 'rb','utf-8').read()
token=nltk.word_tokenize(content)
text=nltk.Text(token)
list1=[text.concordance(u'客服',60,lines=all)]

#程式碼解說

concordance:找某個字之前後文,以本例子來說,找尋'客服'前後各30字元的詞彙

而要找尋的詞就是上一篇所找出來的關鍵詞,目的在於找出關鍵詞前後詞彙

Output:

 n 提款 v 速度 n 慢 adj 一点 m 在线 b 客服 n 说 v  肯定 v 客户 n 太多 ns 造成 v
分 n 招来 v 一点 m 最重 a 喜欢 v 盈盈 z 客服 n x Uedbet eng 娱乐城 n 已经 d 玩家
盈 z 放假 v 今天 t 及时 c 添加 v 彩金 n 客服 n 服务 vn 值得 v 推广 v  UED eng 

以上是程式碼跑出一小部分結果, 如果斷詞上不滿意,或是詞性有問題,皆可手動去更改詞庫(已教學過)

接下來就要開始評分,而我評分標準如下(僅供參考,這部分每個人做法不同,可自行修改):

  1. 將Output結果,存放到Excel1,撰寫程式將關鍵詞後之形容詞、動詞、副詞截取出來(要截取詞性自行挑選),存放到Excel2。
  2. 將Excel2結果,透過情緒詞庫分辨負面情緒或是正面情緒,分別給予分數(正+1,負-1)。
    1. 提供情緒詞庫網址下載,情緒詞庫一樣可以手動更新。
    2. 分數可自行定義
  3. 累積並計算此關鍵詞之分數(程式碼如下)。
#python读取excel
import xlrd
import codecs
from nltk.corpus import stopwords
def main():
    myfile1=stopwords.words('/NTUSD_positive_simplified.txt')
    myfile2=stopwords.words('/NTUSD_negative_simplified.txt')
    xls=xlrd.open_workbook("C:\FileName.xlsx")
    try:
        mysheet=xls.sheet_by_name("SheetName")#找工作表。
    except:
        print("没有此工作表")
        return

    print("共有 %d 行, %d 列。"%(mysheet.nrows,mysheet.ncols))
#將内容印出来:  
    for row in range(0,mysheet.nrows):
        for col in range(0,mysheet.ncols):
            if mysheet.cell(row,col).value not in [None, ''] :
                temp=mysheet.cell(row,col).value
                if  type(temp) != float :
                    print temp,
                    if temp in myfile1 :
                        print " +1",
                    if temp in myfile2:
                        print " -1",                        
        print '\n'                                                    
if __name__=='__main__':
    main()

myfile1與2為載入情緒詞庫,由於關鍵詞前後詞彙存入excel,因此這邊會呼叫此工作表來作給分的動作

當詞彙與情緒詞庫相呼應時就會給予分數,如無法辨識詞彙,可手動自行加入,或是寫程式自動匯入

接下來就可以對每個關鍵字進行排名,評估這產品的評價與優劣。

Text Mining一直是相當熱門之議題,在大數據領域中也是占有一席之地,這系列文章讓大家初步了解jieba操作

還有興趣的讀者,可以一起討論