我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

jieba结巴分词,如果对于分词结果不满意的话,可以使用load_userdict函数加载自定义分词词典,也可以使用add_word函数加载某一条条目,同时还可以自定义词性和权重,通过调整权重就可以影响最终的分词结果。

苏南大叔:jieba结巴分词,如何加载自定义分词词典?条目词性权重 - 结巴分词自定义分词词典
jieba结巴分词,如何加载自定义分词词典?条目词性权重(图3-1)

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文描述结巴分词加载自定义条目的两种方式。测试环境:win10python@3.6.8jieba@0.42.1

jieba.add_word()

基本格式:

jieba.add_word(文字, 权重, 词性)
jieba.add_word(文字)
jieba.add_word(文字, tag="")

这种方式的弊端就是:如果权重填的太低,比如“0”。那么,这个条目极有可能是不生效的。

测试代码如下:

jieba.add_word("毕业于", 999, "aaa")

add_word()函数,就有del_word()函数。参考:

jieba.del_word("毕业于")
jieba.del_word("毕业于", tag="aaa")
  • jieba.add_word(),用于添加一个条目。但是,存在几个变种。
  • 如果相关条目没有生效,就需要增加权重值。
  • 最后一个参数,用于定义一个词性。当然,词性归属需要遵守通用的词性标准。

jieba.load_userdict()

比起一个一个的条目单个添加,也可以把这些条目定义在一个.txt文本里面,格式如下:

文本  权重  词性

或者

文本  词性

格式如下图所示:

苏南大叔:jieba结巴分词,如何加载自定义分词词典?条目词性权重 - 用户词典格式
jieba结巴分词,如何加载自定义分词词典?条目词性权重(图3-2)

测试代码:

jieba.load_userdict("dict.txt")

可能遇到的问题

在实际的代码运行过程中,可能会出现找不到文件的情况。报错信息类似如下:

File "/opt/anaconda3/lib/python3.8/site-packages/jieba/__init__.py", line 398, in load_userdict
  f = open(f, 'rb')
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'

那么,可以考虑下面的类似代码,使用os来拼接一下【绝对路径】。

jieba.load_userdict(os.path.join(os.path.dirname(__file__), "userdict.txt"))

最终代码

结合上一次的结巴分词的文章,相关链接:

苏南大叔:jieba结巴分词,如何加载自定义分词词典?条目词性权重 - 自定义词典
jieba结巴分词,如何加载自定义分词词典?条目词性权重(图3-3)

添加自定义词典的功能,测试代码如下:

import jieba, jieba.posseg, os
jieba.load_userdict(os.path.join(os.path.dirname(__file__), "userdict.txt"))
jieba.add_word("毕业于", 999, "aaa")
# jieba.del_word("毕业于")
words = "苏南大叔毕业于北京大学"
seg_list = jieba.cut(words)
print('/ '.join(seg_list))          # 苏南大叔/ 毕业于/ 北京大学
result = jieba.posseg.cut(words)
res = ""
for w in result:
    res += w.word+"/"+w.flag + " "
print(res)                          # 苏南大叔/nnn 毕业于/aaa 北京大学/nt

如果没有自定义词典的话,这个分词结果是:

苏南/ 大叔/ 毕业/ 于/ 北京大学
苏南/ns 大叔/n 毕业/n 于/p 北京大学/nt

有了自定义词典之后,分词结果如下:

苏南大叔/ 毕业于/ 北京大学
苏南大叔/nnn 毕业于/aaa 北京大学/nt

当然,这里的nnn词性和aaa词性,都是瞎编的。实际上在通用的标准里面,并没有这两个词性定义。如果想知道更多的词性原始设定,可以参考下面这篇文章:

相关文档

综述

结巴分词可以通过自定义分词词典来获得更好的分词效果。其中,如果自定义的分词词条如果没有生效的话,需要增加权重。更多结巴分词的经验文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python    jieba