jieba分词_从零开始学自然语言处理(一)—— jieba 分词

   今天,我们正式开始《从零开始学自然语言处理》系列文章的更新。 内容会涉及自然语言处理的各个方面知识内容和具体操作:包括但不仅限于词法分析,句法分析,语义分析,文本聚类,文本分类,情感分析,文本摘要生成,主题模型,词嵌入,文本语义相似度,自然语言推理,机器翻译,语言模型,信息抽取,关系预测,对话,指代消解等等。 从最基础的内容开始讲起,欢迎持续关注学习。 (温馨提示:文章中代码部分左右滑动可查看全部) 针对中文的自然语言处理,我们需要先将段落和句子切分为词语,这是最基础的一步操作,分词属于词法分析的基础部分。 本文聊聊 jieba 这个工具包。 jieba 是一款优秀的中文分词工具。 如何安装 jieba 呢? 我们可以通过 Python 的 pip 直接安装:
pip install jieba
jieba 采用的算法为:
  • 基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)
  • 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
  • 对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法
jieba 有三种分词模式:
  • 精确模式,试图将句子最精确地切开,适合文本分析;
  • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
  • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
我们接下来开始具体操作 首先我们使用全模式进行分词:
import jiebaseg_list = jieba.cut("我来到北京清华大学", cut_all=True)print("Full Mode: " + "/ ".join(seg_list))  # 全模式
结果为: 8af78791e8ed8b08d301138682877b79.png 使用精确模式(默认的也是精确模式,即去掉cut_all参数也是精确模式):
seg_list = jieba.cut("我来到北京清华大学", cut_all=False)print("Default Mode: " + "/ ".join(seg_list))  # 精确模式
0364dbf421dab6979fa73f65476a7d09.png 使用搜索引擎模式:
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")  # 搜索引擎模式print(", ".join(seg_list))
c5e6bd51b8c61a37106ae24d9876da7a.png 但是当我们遇到一些新词的时候,jieba 可能并不能正确分词,例如我们在对以下句子进行分词时:
seg_list = jieba.cut("新研发的产品名为一网搜索。", cut_all=False)print("Default Mode: " + "/ ".join(seg_list))  # 精确模式
2edb3c4a2f917b7f1bce8851d21dc328.png 那如何解决这个问题呢? 我们只需要创建一个自定义词典文件,文件格式为 txt  词典格式和  dict.txt  一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。 file_name  若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码。词频省略时使用自动计算的能保证分出该词的词频。 例如,我在本地创建了一个名为 userdict.txt 的文件 aba1400fea9506b09d2f8904dc1aa0a0.png 然后将 “一网搜索” 加入自定义词典,后面的 5 表示词的词频(词频越高,对该词分词的准确度和优先级越高),然后保存。 77a4f109c32fb9a2ff9a785c3b825015.png 用法:jieba.load_userdict(file_name)  file_name 为文件类对象或自定义词典的路径 然后使用如下代码即可完成正确分词:
jieba.load_userdict(r'E:/jieba/userdict.txt') seg_list = jieba.cut("新研发的产品名为一网搜索。", cut_all=False)print("Default Mode: " + "/ ".join(seg_list))  # 精确模式
23e840e7c5093e253008571fd4f9c970.png 想对 jieba 分词有更深入的了解 可以传送到 jieba 的 github:https://github.com/fxsjy/jieba 对《从零开始学自然语言处理》系列文章有兴趣的话,欢迎持续关注学习。 deffdb88aba907a88f2c423749dafbec.png 你点的每个在看,我都认真当成了喜欢
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值