第1篇:三分钟热情学NLP-Jieba分词
NLP,自然语言理解,即计算机对人类语言进行理解;NLP是人工智能皇冠上的明珠,是AI最难的领域之一;
1、人类语言有多复杂
人类语言是经过加工的,需要有有背景知识才能理解;比如
“夏天能穿多少就穿多少,冬天能传多少就穿多少”
“单身的原因是喜欢上一个人,还可能是喜欢上一个人”
可见,语言理解是1道“很有门槛”的事情,理解句子,从分词开始,
2、jieba分词-总览
jieba的git主页https://github.com/fxsjy/jieba/,目前累计有2.5W个stars了,工业级的应用,大部分使用的是jieba分词。
jieba目前支持4种模式
1、精确模式,试图将句子最精确地切开,适合文本分析;
2、全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
3、搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
4、paddle模式
paddle是百度推出的深度学习平台https://www.paddlepaddle.org.cn/,本文不做演示;
精确模式、全模式和搜索引擎模式,代码演示如下:
import jieba
strs = '我正在用三分钟热情学习自然语言处理技术'
seg_list = jieba.cut(strs, cut_all=True)
# 使用jieba.cut方法,且参数cut_all= Ture,即为全模式
print('全模式:', '/ '.join(seg_list))
seg_list = jieba.cut(strs, cut_all=False)
# 使用jieba.cut方法,且参数cut_all=False,即为精确模式
print('精确模式:', '/ '.join(seg_list))
seg_list = jieba.cut(strs)
# 使用jieba.cut方法,且参数cut_all缺省,默认精确模式
print('默认精确模式:', '/ '.join(seg_list))
seg_list = jieba.cut_for_search(strs)
# 使用cut_for_search方法,即为搜索引擎模式
print('搜索引擎模式', '/ '.join(seg_list))
运行结果:
全模式: 我/ 正在/ 用/ 三分/ 三分钟/ 分钟/ 热情/ 学习/ 自然/ 自然语言/ 语言/ 处理/ 技术
精确模式: 我/ 正在/ 用/ 三分钟/ 热情/ 学习/ 自然语言/ 处理/ 技术
默认精确模式: 我/ 正在/ 用/ 三分钟/ 热情/ 学习/ 自然语言/ 处理/ 技术
搜索引擎模式 我/ 正在/ 用/ 三分/ 分钟/ 三分钟/ 热情/ 学习/ 自然/ 语言/ 自然语言/ 处理/ 技术
3、jieba分词-自定义词典
我们可以自定义的词典,以包含 jieba 词库里没有的词,或者
import jieba
jieba.add_word('自然语言处理')
strs = '我正在用三分钟热情学习自然语言处理技术'
seg_list = jieba.cut(strs, cut_all=True)
# 使用jieba.cut方法,且参数cut_all= Ture,即为全模式
print('全模式:', '/ '.join(seg_list))
seg_list = jieba.cut(strs, cut_all=False)
# 使用jieba.cut方法,且参数cut_all=False,即为精确模式
print('精确模式:', '/ '.join(seg_list))
seg_list = jieba.cut(strs)
# 使用jieba.cut方法,且参数cut_all缺省,默认精确模式
print('默认精确模式:', '/ '.join(seg_list))
运行结果
全模式: 我/ 正在/ 用/ 三分/ 三分钟/ 分钟/ 热情/ 学习/ 自然/ 自然语言/ 自然语言处理/ 语言/ 处理/ 技术
精确模式: 我/ 正在/ 用/ 三分钟/ 热情/ 学习/ 自然语言处理/ 技术
默认精确模式: 我/ 正在/ 用/ 三分钟/ 热情/ 学习/ 自然语言处理/ 技术
搜索引擎模式 我/ 正在/ 用/ 三分/ 分钟/ 三分钟/ 热情/ 学习/ 自然/ 语言/ 处理/ 自然语言处理/ 技术
从结果中,可以看到,“自然语言处理”这个词,作为1个独立的分词出现。