首页 > > > 1.2.3 用户词典
结巴分词的使用是非常方便的,也是我们入门 NLP 非常好用的工具,这一节我们再介绍一个很实用的小功能——用户词典。我们先来看一个例子:
# encoding=utf\-8
import jieba
seg\_list = jieba.cut("夏博士去了日本群马县的上毛高原" cut_all=False)
print("/ ".join(seg\_list))输出结果是:
夏/ 博士/ 去/ 了/ 日本/ 群马县/ 的/ 上/ 毛/ 高原这个结果的输出其实我们很容易看出有问题。
首先,“夏博士”应该是一个词,是一位姓夏的博士,不应该分成两个词。其次,“上毛高原”是一个地名,也是一个比较冷僻的专有名词,分词模型无法正确识别出来。不过也不算很糟糕,“日本”、“群马县”这样的词汇虽然也是专有名词,但只要不是太冷僻,jieba 默认的词库也能将它们识别正确。
在结巴分词中,为了让程序员有比较简易的办法克服这个问题,是允许我们使用自定义词典的,也就是由程序员自己维护一个文本词典来记录新词汇或者生僻词汇。这对于在特殊领域工作的人来说再方便不过了,毕竟在地理、历史、化学等领域的文献会出现大量的专有名词或词汇,每次都为此专门训练一个模型不是经济的手段。那么这种词典怎么使用呢,方法很简单,我们往下看。
第一步,我们先编辑一个叫做 dic.txt 的文本文件。
夏博士 上毛高原
第二步,我们把代码做一下修改,导入这个文本文件的词典。
# encoding=utf-8
import jieba
jieba.load_userdict("./dic.txt")
seg_list = jieba.cut("夏博士去了日本群马县的上毛高原" cut_all=False)
print("/ ".join(seg_list))再次执行这个文件,会输出:'
夏博士/ 去/ 了/ 日本/ 群马县/ 的/ 上毛高原这样就得到我们想要的结果。
这种方法非常实用且简单,能够在我们日常工作中解决领域专有名词不好分割的现实问题。结巴分词这个工具非常简单易用,大家在工作中可以先慢慢用起来,相信能够让你的分词工作提高不少的效率。
思考题:如果词典太长,会不会影响分词效率?在算法层面有没有改进的办法呢?欢迎你在专栏下面的留言区留言与我互动。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69954080/viewspace-3118797/ ,如需转载,请注明出处,否则将追究法律责任。