本偏重點如下:
- 找出關鍵詞前後詞彙
- 擷取意見詞
- 評分
#程式碼
#===========================================找出關鍵詞前後距離的詞
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
分 n 招来 v 一点 m 最重 a 喜欢 v 盈盈 z 客服 n x Uedbet eng 娱乐城 n 已经 d 玩家
盈 z 放假 v 今天 t 及时 c 添加 v 彩金 n 客服 n 服务 vn 值得 v 推广 v UED eng
以上是程式碼跑出一小部分結果, 如果斷詞上不滿意,或是詞性有問題,皆可手動去更改詞庫(已教學過)
接下來就要開始評分,而我評分標準如下(僅供參考,這部分每個人做法不同,可自行修改):
- 將Output結果,存放到Excel1,撰寫程式將關鍵詞後之形容詞、動詞、副詞截取出來(要截取詞性自行挑選),存放到Excel2。
- 將Excel2結果,透過情緒詞庫分辨負面情緒或是正面情緒,分別給予分數(正+1,負-1)。
- 提供情緒詞庫網址下載,情緒詞庫一樣可以手動更新。
- 分數可自行定義
- 累積並計算此關鍵詞之分數(程式碼如下)。
#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操作
還有興趣的讀者,可以一起討論