一、實(shí)驗(yàn)?zāi)繕?biāo)
嘗試使用jieba對《龍族》進(jìn)行分詞,并進(jìn)行分詞效果比較分析
二、使用工具
在線分詞工具、jieba
三、分詞步驟
1.代碼演示:
# encoding:utf-8
from __future__import print_function, unicode_literals
import sys
sys.path.append("../")
import jieba
jieba.load_userdict("venv/userdict.txt")
import jieba.analyse
import jieba.possegas pseg
jieba.add_word('楚子航')
jieba.add_word('尼伯龍根')
jieba.del_word('廢柴')
test_sent =open('venv/dragon.txt','r', encoding='utf8' ).read()
words = jieba.cut(test_sent)
print('/'.join(words))
print("="*40)
words = jieba.cut(test_sent, cut_all=True)
print('/'.join(words))
print("="*40)
result = pseg.cut(test_sent)
for win result:
print(w.word, "/", w.flag, ", ", end=' ')
print("\n" +"="*40)
list = jieba.analyse.extract_tags(test_sent, topK=20, withWeight=False, allowPOS=())
for keysin list:
print(keys)
2.分詞效果:
初學(xué)階段使用網(wǎng)絡(luò)教程的示例代碼:
# encoding=utf-8
import jieba
seg_list = jieba.cut("我來到北京清華大學(xué)", cut_all=True)
print("Full Mode: " +"/ ".join(seg_list))# 全模式
seg_list = jieba.cut("我來到北京清華大學(xué)", cut_all=False)
print("Default Mode: " +"/ ".join(seg_list))# 精確模式
seg_list = jieba.cut("他來到了網(wǎng)易杭研大廈")# 默認(rèn)是精確模式
print(", ".join(seg_list))
seg_list = jieba.cut_for_search("小明碩士畢業(yè)于中國科學(xué)院計(jì)算所,后在日本京都大學(xué)深造")# 搜索引擎模式
print(", ".join(seg_list))
經(jīng)嘗試,得到類似結(jié)果,并將其運(yùn)用到自己的分詞中

3.自定義詞典:(省略了詞頻和詞性)

使用add_word(word, freq=None, tag=None)和del_word(word)可在程序中動(dòng)態(tài)修改詞典

jieba.add_word('楚子航')
jieba.add_word('尼伯龍根')
jieba.del_word('我們')
jieba.del_word('沒有')
jieba.del_word('什么')
jieba.del_word('自己')
jieba.del_word('一個(gè)')
jieba.del_word('他們')
jieba.del_word('知道')
jieba.del_word('像是')

4.關(guān)鍵詞提?。?/h4>
import jieba.analyse
list = jieba.analyse.extract_tags(test_sent, topK=20, withWeight=False, allowPOS=())
for keys in list:
print(keys)
import jieba.analyse
list = jieba.analyse.extract_tags(test_sent, topK=20, withWeight=False, allowPOS=())
for keys in list:
print(keys)
test_sent 為待提取的文本;topK 為返回幾個(gè) TF/IDF 權(quán)重最大的關(guān)鍵詞,選擇默認(rèn)值 20
withWeight 為是否一并返回關(guān)鍵詞權(quán)重值,選擇默認(rèn)值False;allowPOS 僅包括指定詞性的詞,默認(rèn)值為空,即不篩選

5.詞性標(biāo)注
jieba.posseg.POSTokenizer(tokenizer=None)新建自定義分詞器,tokenizer參數(shù)可指定內(nèi)部使用的jieba.Tokenizer分詞器。jieba.posseg.dt為默認(rèn)詞性標(biāo)注分詞器
使用jieba.posseg來進(jìn)行詞性標(biāo)注
import jieba.posseg as pseg
result = pseg.cut(test_sent)
for w in result:
print(w.word, "/", w.flag, ", ", end=' ')
print("\n" +"="*40)
運(yùn)行部分結(jié)果:

四、問題分析
部分關(guān)鍵詞提取仍存在語氣詞等,因處理文檔較大,需要自定義去除很多字段

因?yàn)闆]有設(shè)置編碼格式,調(diào)用外部文檔出現(xiàn)問題。
import jieba
jieba.load_userdict("venv/userdict.txt")
test_sent =open('venv/dragon.txt','r', encoding='utf8' ).read()
五、分詞工具包


六、分詞工具對比
使用在線分詞工具結(jié)果

使用jieba自行編程來進(jìn)行分詞
