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為精確模式: 我要/ 成為/ 神奇寶貝/ 大師 搜索引擎模式: 我要/ 成為/ 神奇/ 神奇寶貝/ 大師
若使用預設詞庫,結果如下:
全模式: 我/ 要/ 成/ 為/ 神奇/ 寶/ 貝/ 大/ 師 精確模式: 我要/ 成為/ 神奇/ 寶貝大師 Default為精確模式: 我要/ 成為/ 神奇/ 寶貝大師 搜索引擎模式: 我要/ 成為/ 神奇/ 寶貝大師
有發現差異性了嗎?神奇寶貝在預設詞庫下,被切割掉了。
但是我在定義詞庫裡增加了"神奇寶貝"的新詞,因此可以順利幫我正確的分詞,產生我想要的結果。
詞典格式和 dict.txt 一樣,一個詞佔一行;每一行分三部分:詞語、詞頻(可省略)、詞性(可省略),用空格隔開,順序不可顛倒。
*注意:文檔必須為 UTF-8 編碼。
一定有人會覺得說:還要自己手動增加新詞會不會太麻煩了?
在做這案子時,由於資料來源都大陸使用者的留言,慣用語、流行語都和台灣不同,原先預設詞庫無法去準確的分詞
雖然 jieba 有新詞識別能力,但是自行添加新詞可以保證更高的正確率,因此這提供詞庫網址,方便大家來增加自己的詞庫
1.QQ詞庫平台