“结巴”中文分词:做最好的 Python 中文分词组件
“Jieba” (Chinese for “to stutter”) Chinese text segmentation: built to be the best Python Chinese word segmentation module.
完整文档见 :
GitHub: https://github.com/fxsjy/jieba
先介绍主要的使用功能,再展示代码输出。jieba分词的主要功能有如下几种:
1. jieba.cut:该方法接受三个输入参数:需要分词的字符串; cut_all 参数用来控制是否采用全模式;HMM参数用来控制是否适用HMM模型
2. jieba.cut_for_search:该方法接受两个参数:需要分词的字符串;是否使用HMM模型,该方法适用于搜索引擎构建倒排索引的分词,粒度比较细。
3. 待分词的字符串可以是unicode或者UTF-8字符串,GBK字符串。注意不建议直接输入GBK字符串,可能无法预料的误解码成UTF-8,
4. jieba.cut 以及jieba.cut_for_search返回的结构都是可以得到的generator(生成器), 可以使用for循环来获取分词后得到的每一个词语或者使用
5. jieb.lcut 以及 jieba.lcut_for_search 直接返回list
6. jieba.Tokenizer(dictionary=DEFUALT_DICT) 新建自定义分词器,可用于同时使用不同字典,jieba.dt为默认分词器,所有全局分词相关函数都是该分词器的映射。
2.1.精确模式(返回结果是一个生成器,对大量数据分词很重要,占内存小):
import jieba
s = '我想大口吃肉大碗喝酒!!!'
cut=jieba.cut(s)
print(cut)
#精确模式
print('精确模式输出:')
print(','.join(cut))
输出为:
2.2.全模式(返回结果也是生成器,特点是把文本分成尽可能多的词):
import jieba
s = '我想大口吃肉大碗喝酒!!!'
print('全模式:')
result=jieba.cut(s, cut_all=True)
print(result)
print(' '.join(result))
输出为:
2.3.搜索引擎模式:
import jieba
s = '我想大口吃肉大碗喝酒!!!'
print('搜索引擎模式:')
result=jieba.cut_for_search(s)
print(result)
print(','.join(result))
输出为:
2.4:单个字模式:不用jieba,直接用list(sentence) 即可
train_df = pd.read_csv(dir)[:10].Report
def seg(sentence):
return list(sentence.strip())
word_list = train_df.apply(seg)
》》》
2 [行, 驶, 没, 有, 顿, 挫, 的, 感, 觉, 原, 地, 换, 挡, 有, 闯, ...
3 [举, 起, 车, 辆, 在, 左, 前, 轮, 这, 边, 的, 缸, 体, 上]
4 [家, 庭, 用, 车, 可, 以, 入, 手, 的, 维, 修, 保, 养, 价, 格, ...
分词及输出词性:
import jieba.posseg as psg
s = '我想大口吃肉大碗喝酒!!!'
print('分词及词性:')
result=psg.cut(s)
print(result)
print([(x.word,x.flag) for x in result])
输出为
过滤词性,如获取名词: 直接加个条件判断就行了
import jieba.posseg as psg
s = '我想大口吃肉大碗喝酒!!!'
print('分词及词性:')
result=psg.cut(s)
print(result)
#筛选为名词的
print([(x.word,x.flag) for x in result if x.flag=='n'])
输出为
# 开启并行分词模式,参数为并发执行的进程数
jieba.enable_parallel(5)
# 关闭并行分词模式
jieba.disable_parallel()
如:
from collections import Counter
words_total=open('1',encoding='utf-8').read()
c = Counter(words_total).most_common(20)
print (c)
jieba分词器还有一个方便的地方是开发者可以指定自己的自定义词典,以便包含词库中没有的词,虽然jieba分词有新词识别能力,但是自行添加新词可以保证更高的正确率。
使用命令:
jieba.load_userdict(filename) # filename为自定义词典的路径。在使用的时候,词典的格式和jieba分词器本身的分词器中的词典格式必须保持一致,一个词占一行,每一行分成三部分,一部分为词语,一部分为词频,最后为词性(可以省略),用空格隔开。
github:https://github.com/fxsjy/jieba
参考:https://www.baidu.com/s?ie=UTF-8&wd=jieba%20posseg