ITPub博客

首页 > > > 1.2.3 用户词典

1.2.3 用户词典

作者:RayChou 时间:2019-12-27 10:11:11 0 删除 编辑

结巴分词的使用是非常方便的,也是我们入门 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/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 8.3 BERT模型介绍
下一篇: 6.1 循环神经网络
请登录后发表评论 登录
全部评论
现任金山办公软件人工智能组高级AI研发工程师。多年从事机器学习,特别是NLP自然语言处理算法的研究及开发工作。拥有丰富的软件开发经验,以及丰富的人工智能算法训练平台开发经验。

注册时间:2019-11-14

  • 博文量
    71
  • 访问量
    60567