NLP之中文分词库jieba+python
结巴jieba: 最好的中文分词开源库
github传送门: https://github.com/fxsjy/jieba (20k star的开源项目)
1. 配置和安装
法一: pip安装
pip3 install jieba
法二: github源码安装
git clone https://github.com/fxsjy/jieba
进入jieba目录后输入 python setup.py install 进行安装
2. jieba分词简单用例
# @envir: macOS + python3 + jieba0.39
import jieba
string = '吕布是一名南京大学计算机系的大四学生'
gen = jieba.lcut(string)
print('/'.join(gen))
分词结果:
'吕布/是/一名/南京大学/计算机系/的/大四/学生'
两种函数cut和lcut区别
- cut生成一个产生器generator, 可以用for来取其中元素
- lcut直接生成一个列表
jieba.posseg库的使用
- posseg库的cut和lcut函数能够分辨词性
import jieba.posseg as jp
string = '吕布是一名南京大学计算机系的大四学生'
gen = jp.lcut(string)
print(gen)
分词结果如下:
[pair('吕布', 'nr'), pair('是', 'v'), pair('一名', 'm'), pair('南京大学', 'nt'), pair('计算机系', 'n'), pair('的', 'uj'), pair('大四', 'm'), pair('学生', 'n')]
3. 自定义词典
对于某些新的或生僻名词, jieba库无法识别, 因此可以载入自己的词典;
萧炎的异火名为青莲地心火
jieba分词结果为: 萧炎/的/异火/名为/青莲/地/心火
自定义词典:
- jieba的默认此点位dict.txt, 在sit-package/jieba目录下可见
- 新建txt文本词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开 (如下图所示)
// mydict.txt
青莲地心火 n
- 此时使用jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径
jb.load_userdict('mydict.txt')
载入新词典的分词结果:萧炎/的/异火/名为/青莲地心火