一、实验目标
尝试使用jieba对《龙族》进行分词,并进行分词效果比较分析
二、使用工具
在线分词工具、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.分词效果:
初学阶段使用网络教程的示例代码:
# encoding=utf-8
import jieba
seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("Full Mode: " +"/ ".join(seg_list))# 全模式
seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " +"/ ".join(seg_list))# 精确模式
seg_list = jieba.cut("他来到了网易杭研大厦")# 默认是精确模式
print(", ".join(seg_list))
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")# 搜索引擎模式
print(", ".join(seg_list))
经尝试,得到类似结果,并将其运用到自己的分词中
3.自定义词典:(省略了词频和词性)
使用add_word(word, freq=None, tag=None)和del_word(word)可在程序中动态修改词典
jieba.add_word('楚子航')
jieba.add_word('尼伯龙根')
jieba.del_word('我们')
jieba.del_word('没有')
jieba.del_word('什么')
jieba.del_word('自己')
jieba.del_word('一个')
jieba.del_word('他们')
jieba.del_word('知道')
jieba.del_word('像是')
4.关键词提取:
import jieba.analyse
list = jieba.analyse.extract_tags(test_sent, topK=20, withWeight=False, allowPOS=())
for keys in list:
print(keys)
test_sent 为待提取的文本;topK 为返回几个 TF/IDF 权重最大的关键词,选择默认值 20
withWeight 为是否一并返回关键词权重值,选择默认值False;allowPOS 仅包括指定词性的词,默认值为空,即不筛选
5.词性标注
jieba.posseg.POSTokenizer(tokenizer=None)新建自定义分词器,tokenizer参数可指定内部使用的jieba.Tokenizer分词器。jieba.posseg.dt为默认词性标注分词器
使用jieba.posseg来进行词性标注
import jieba.posseg as pseg
result = pseg.cut(test_sent)
for w in result:
print(w.word, "/", w.flag, ", ", end=' ')
print("\n" +"="*40)
运行部分结果:
四、问题分析
部分关键词提取仍存在语气词等,因处理文档较大,需要自定义去除很多字段
因为没有设置编码格式,调用外部文档出现问题。
import jieba
jieba.load_userdict("venv/userdict.txt")
test_sent =open('venv/dragon.txt','r', encoding='utf8' ).read()
五、分词工具包
六、分词工具对比
使用在线分词工具结果
使用jieba自行编程来进行分词