今日分享:Jieba中文分词基础入门
近年来,随着NLP自然语言处理技术的日益成熟,开源实现的分词工具也越来越多,比如NLTK:其在英文分词较为成熟,分词效果较好,在处理中文分词方面则显得力不足;在处理中文分词时,Jieba这一工具普遍为大家所接受,很多企业也都是利用这一工具来处理涉及中文分词的项目;其他的开源分词工具比如Ansj、盘古分词等,感兴趣的小伙伴可以去搜索一下,本文章重点介绍Jieba分词工具。
使用Jieba分词工具主要基于以下几点:
1、社区活跃。GitHub上Jieba社区活跃度高,表明该项目会一直得到维护并持续更新,适合长期使用。
2、功能丰富。其不仅可以进行分词处理,还可以进行词性标注,关键词提取等。
3、使用简单。基于Python语言来说,其配置非常简单,方便上手。
Jieba分词工具的安装
作为Python的第三方库,和其他库的安装方式一样,打开cmd命令窗口,执行以下命令,等待一段时间即可完成安装:
pip install jieba
Jieba分词结合了基于规则和基于统计这两类方法:
1、规则分词:
基于规则的分词是一种机械分词方法,主要是通过维护词典,在切分语句时,将语句的每个字符串与词表中的词进行逐一匹配,找到则切分,否则不予切分。
按照匹配切分的方式,主要有正向匹配法、逆向最大匹配法以及双向最大匹配法。
2、统计分词:
其主要思想是把每个词看作是由词的最小单位的各个字组成的,如果相连的字在不同的文本中出现的次数越多,就证明这相连的字很可能就是一个词。
Jieba分词是基于以上两种方法,也就是混合分词。先基于词典的方式进行分词,然后再用统计分词方法进行辅助,这样的话既能保证词典分词的准确率,又能做到对未登录词和歧义词有较好的识别。
Jieba的三种分词模式
import jieba
#语料demo
sent = '中文分词是文本处理不可或缺的一步!'
seg_list = jieba.cut(sent, cut_all=True)
#'/'用来词与词之间的间隔,也可以用别的符号来间隔
print('全模式:', '/ ' .join(seg_list))
#该模式下将所有可能为词的状况进行穷举
全模式: 中文/ 分词/ 是/ 文本/ 文本处理/ 本处/ 处理/ 不可/ 不可或缺/ 或缺/ 的/ 一步/ !
seg_list = jieba.cut(sent, cut_all=False)
print('精确模式:', '/ '.join(seg_list))
精确模式: 中文/ 分词/ 是/ 文本处理/ 不可或缺/ 的/ 一步/ !
seg_list = jieba.cut(sent)
print('默认精确模式:', '/ '.join(seg_list))
默认精确模式: 中文/ 分词/ 是/ 文本处理/ 不可或缺/ 的/ 一步/ !
seg_list = jieba.cut_for_search(sent)
print('搜索引擎模式:', '/ '.join(seg_list))
#和全模式下的返回结果类似
搜索引擎模式: 中文/ 分词/ 是/ 文本/ 本处/ 处理/ 文本处理/ 不可/ 或缺/ 不可或缺/ 的/ 一步/ !
# 方法lcut返回的是一个分割后的词列表,在实际项目中多采用该方法进行切词,返回的列表便于后续的处理。
seg_list = jieba.lcut(sent)
print(seg_list)
['中文', '分词', '是', '文本处理', '不可或缺', '的', '一步', '!']
JIeba词性标注分词
#带词性分词
import jieba.posseg as psg
sent = '我爱北京天安门,天安门上太阳升'
seg_list = psg.cut(sent)
result = []
for w in seg_list:
# print(w)
# print(w.word) #词
# print(w.flag) #词性
result.append(w)
print(result)
[pair('我', 'r'), pair('爱', 'v'), pair('北京', 'ns'), pair('天安门', 'ns'),
pair(',', 'x'), pair('天安门', 'ns'), pair('上', 'f'), pair('太阳升', 'nr')]
#词性说明:
r:代词 v:动词 ns:地名 n:名词 x:非语素词 f:方位词 nr:人名
#按照词性来看:最后一个词太阳升的词性nr(人名)有点不合逻辑
免费分享干货部分截图
关注公众号即可一键领取
省去找资料的麻烦 为您的进阶学习保驾护航
公众号 QQ群
扫QQ群二维码进交流学习群
或在后台回复:加群
网友评论