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

  • 8233
  • 0
  • 2017-09-05


Text Mining Project,主要是再於分析競爭對手優缺點,並了解同產品項目中,回饋者給予之意見。
此篇會介紹我使用JIEBA之心得。

# 方法
演算法部分,網路很多分享,在此就不作介紹

# 程式語言
Python

# 先前作業
安裝 nltk與jieba

pip install jieba
pip install nltk

# 程式碼

# -*- coding: utf-8 -*-
import nltk
import jieba
import jieba.posseg as pseg
import codecs
from nltk.corpus import stopwords 

jieba.set_dictionary('/dict.txt')   **#引用預設詞庫**
stop=stopwords.words('/chinese.txt') **#引用停用詞**
content = codecs.open('D:/Comment.txt', 'rU','utf-8').read() **#開啟你要斷詞之檔案1**
myfile=codecs.open(r'D:/output_file.txt','w','utf-8') **#將結果寫入檔案2**
words = jieba.cut(content, cut_all=False)

for word,flag in words:
   if word not in stop:
      myfile.write('%s %s' % (word,flag)+'\n')
myfile.close()

 # 程式碼解說
      
       words = jieba.cut(content, cut_all=False)

Cut可以當成切割文字的意思(就是分詞拉)
結巴中文分詞支持的三種分詞模式包括:
    1. 精確模式 :將句子最精確地切開,叫適合文本分析。
        寫法:words = jieba.cut(content, cut_all=False)
    2.全模式:把句子中所有的可以成詞的詞語都掃描出來, 速度快。
        寫法:words = jieba.cut(content, cut_all=True)
    3.搜索引勤模式:在精確模式的基礎上對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。                                                                                                                                   寫法:jieba.cut_for_search(Content)

示範例子:

# encoding=utf-8
import jieba
#jieba.set_dictionary('D:/dict.txt')
jieba.load_userdict('D:/user_dict.txt')
Sentence = jieba.cut("我要成為神奇寶貝大師", cut_all=True)
print(u'全模式'+": "  + "/ ".join(Sentence))   

Sentence = jieba.cut("我要成為神奇寶貝大師", cut_all=False)
print(u'精確模式'+": " + "/ ".join(Sentence))  

Sentence = jieba.cut("我要成為神奇寶貝大師")  
print(u'Default為精確模式'+": " + "/ ".join(Sentence))

Sentence = jieba.cut_for_search("我要成為神奇寶貝大師")  
print(u'搜索引擎模式'+": " + "/ ".join(Sentence))

Output:

全模式: 我/ 要/ 成/ 為/ 神奇/ 神奇寶貝/ 大/ 師
精確模式: 我要/ 成為/ 神奇寶貝/ 大師
Default為精確模式: 我要/ 成為/ 神奇寶貝/ 大師
搜索引擎模式: 我要/ 成為/ 神奇/ 神奇寶貝/ 大師
 jieba.set_dictionary('D:/dict.txt')    =>為jieba預設詞庫                                                                                                                                                                                                                                                                                                                                                                                                                                                                            jieba.load_userdict('D:/user_dict.txt')     =>為使用者定義詞庫       

若使用預設詞庫,結果如下:

全模式: 我/ 要/ 成/ 為/ 神奇/ 寶/ 貝/ 大/ 師
精確模式: 我要/ 成為/ 神奇/ 寶貝大師
Default為精確模式: 我要/ 成為/ 神奇/ 寶貝大師
搜索引擎模式: 我要/ 成為/ 神奇/ 寶貝大師

有發現差異性了嗎?神奇寶貝在預設詞庫下,被切割掉了。

但是我在定義詞庫裡增加了"神奇寶貝"的新詞,因此可以順利幫我正確的分詞,產生我想要的結果。            

詞典格式和 dict.txt 一樣,一個詞佔一行;每一行分三部分:詞語​​詞頻(可省略)、詞性(可省略),用空格隔開,順序不可顛倒。

 *注意:文檔必須為 UTF-8 編碼。


一定有人會覺得說:還要自己手動增加新詞會不會太麻煩了?  

在做這案子時,由於資料來源都大陸使用者的留言,慣用語、流行語都和台灣不同,原先預設詞庫無法去準確的分詞

雖然 jieba 有新詞識別能力,但是自行添加新詞可以保證更高的正確率,因此這提供詞庫網址,方便大家來增加自己的詞庫

1.QQ詞庫平台

2.搜狗詞庫