jieba分词入门实践

ryluo 2020-06-14 01:29:22
自然语言处理

在自然语言处理之前,需要处理的文本都需要进行分词,而jieba就是基于python包的分词工具。

jieba分词入门实践

在自然语言处理之前,需要处理的文本都需要进行分词,而jieba就是基于python包的分词工具。

1. 基本分词

import jieba
sentence = "中国是一个非常强大的国家,环境好,机会多!"

# 1.基本分词
seg_list = jieba.cut(sentence)
print('/'.join(seg_list))
# 分词结果:中国/是/一个/非常/强大/的/国家/,/环境/好/,/机会/多/!

# 2.全分词模式
# 全分词模式会识别出多种分词可能
seg_list = jieba.cut(sentence, cut_all=True)
print('/'.join(seg_list))
# 分词结果:中国/国是/一个/非常/强大/的/国家/,/环境/好/,/机会/多/!

2. 添加自定义的词典

有些情况下jieba自带的词典中对于一些专有名词并不涉及,但是仍要对这些专有名词进行分词就应该添加用户自定义的词典。首先从下面的结果可以看出添加词典后是可以正确的将歌名“被风吹过的夏天”分出来的。

sentence = "被风吹过的夏天这首歌很好听"
seg_list = jieba.cut(sentence)
print('/'.join(seg_list))
# 分词结果:被/风吹/过/的/夏天/这/首歌/很/好听
# 上述没有加词典的分词结果可以看出,“被风吹过的夏天” 这个歌名没有分出来

# 添加词典
filename = 'song.txt'
jieba.load_userdict(filename)
seg_list = jieba.cut(sentence)
print('/'.join(seg_list))
# 分词结果:被风吹过的夏天/这/首歌/很/好听

添加的词典的文本格式也是有固定的格式的,一般格式为:一个词占一行,每一行分三部分:词语,词频(可省略),词性(可省略)。这三部分通过空格隔开(注意:filename若为路径或者二进制方式打开的文件,则文件必须为UTF-8格式)

被风吹过的夏天 10 song
后来 10 song
杀破狼 10 film

3. 词性识别

import jieba
import jieba.posseg as pseg
sentence = '被风吹过的夏天是杀破狼的主题曲'
filename = 'song.txt'
jieba.load_userdict(filename)

pseg_list = pseg.cut(sentence)
for word, tag in pseg_list:
    print(word, tag)

'''
被风吹过的夏天 song
是 v
杀破狼 film
的 uj
主题曲 n
'''

参考资料:《有三AI》公众号NLP专栏