分词练习

一、实验目标

尝试使用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))

经尝试,得到类似结果,并将其运用到自己的分词中

分词练习_第1张图片
四种不同模式的分词效果

3.自定义词典:(省略了词频和词性)


分词练习_第2张图片
自定义词典词语表

使用add_word(word, freq=None, tag=None)和del_word(word)可在程序中动态修改词典

分词练习_第3张图片
修改前

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张图片
修改后

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()

五、分词工具包


分词练习_第5张图片
来源百度


分词练习_第6张图片
来源百度

六、分词工具对比

使用在线分词工具结果


分词练习_第7张图片
在线分词工具

使用jieba自行编程来进行分词

分词练习_第8张图片
运行结果

你可能感兴趣的:(分词练习)