当前位置:   article > 正文

Python实现jieba分词

python中jieba分词

640?wx_fmt=png

Python实现jieba分词


今日知图替换

  1. r  替换当前字符
  2. R  替换当前行光标后的字符

0.说在前面1.结巴分词三种模式2.自定义字典3.动态修改字典4.词性标注及关键字提取5.高级使用6.作者的话


0.说在前面

微信群讨论了jieba,这里我将学到的jieba分享一波,大家一起来学习一下。

1.结巴分词三种模式

默认模式

  1. s_list=jieba.cut("我来到北京清华大学",cut_all=True) # 默认为False
  2. print("[全模式]:"+'/'.join(s_list))

精确模式

  1. s_list=jieba.cut("我来到北京清华大学",) # 默认是精确模式cut_all=False
  2. print("[默认模式]:"+'/'.join(s_list))

搜索引擎模式

  1. s_list=jieba.cut_for_search("小米毕业于中科院计算所,后来在日本东京大学留学深造") # 搜索引擎模式
  2. print("[默认模式]:"+'/'.join(s_list))

以上结果

  1. [全模式]:我/来到/北京/清华/清华大学/华大/大学
  2. [默认模式]:我/来到/北京/清华大学
  3. [默认模式]:小米/毕业/于/中科/计算/中科院/计算所/中科院计算所/,/后来/在/日本/东京/大学/日本东京大学/留学/深造

2.自定义字典

jieba默认分词

  1. test_string=("医疗卫生事业是强国安民的光荣事业,是为实现中国梦奠定基础的伟大事业。")
  2. words=jieba.cut(test_string)
  3. print('jieba默认分词效果')
  4. print('/'.join(words))

加载自定义字典

  1. # 自定义字典 test_string.txt
  2. 光荣事业 4 nz
  3. 中国梦 4 nl
  4. 奠定基础 4 nz
  5. # 自定义字典实现
  6. jieba.load_userdict('test_string.txt')
  7. words=jieba.cut(test_string)
  8. print("加载自定义字典后,分词效果")
  9. print('/'.join(words))

以上结果

  1. jieba默认分词效果
  2. 医疗卫生/事业/是/强国/安民/的/光荣/事业/,/是/为/实现/中国/梦/奠定/基础/的/伟大事业/。
  3. 加载自定义字典后,分词效果
  4. 医疗卫生/事业/是/强国/安民/的/光荣事业/,/是/为/实现/中国/梦/奠定基础/的/伟大事业/。

3.动态修改字典

  1. t=jieba.suggest_freq(('医疗','卫生'),True)
  2. print(t)
  3. print('/'.join(jieba.cut(test_string, HMM=False)))
  4. t=jieba.suggest_freq(('中国梦'),True)
  5. print(t)
  6. print('/'.join(jieba.cut(test_string, HMM=False)))

以上结果

  1. 0
  2. 医疗/卫生事业/是/强国/安民/的/光荣事业/,/是/为/实现/中国/梦/奠定基础/的/伟大事业/。
  3. 9
  4. 医疗/卫生事业/是/强国/安民/的/光荣事业/,/是/为/实现/中国梦/奠定基础/的/伟大事业/。

4.词性标注及关键字提取

  1. import jieba.posseg as pseg
  2. words=pseg.cut(test_string)
  3. for word, flag in words:
  4.     print('%s %s' % (word, flag))

以上结果

  1. 医疗 n
  2. 卫生事业 n
  3. 是 v
  4. 强国 n
  5. 安民 nr
  6. 的 uj
  7. 光荣事业 nz
  8. , x
  9. 是 v
  10. 为 p
  11. 实现 v
  12. 中国梦 nl
  13. 奠定基础 nz
  14. 的 uj
  15. 伟大事业 nz
  16. 。 x

5.高级使用

自定义处理:

  1. ----------自定义字典文件test_string.txt--------
  2. 光荣事业 4 nz
  3. 中国梦 4 nl
  4. 奠定基础 4 nz
  5. ----------issue.py----------
  6. import jieba
  7. test_string=("医疗卫生事业是强国安民的光荣事业,是为实现中国梦奠定基础的伟大事业。")
  8. words=jieba.cut(test_string)
  9. print('jieba默认分词效果')
  10. print('/'.join(words))
  11. # 加载自定义字典
  12. jieba.load_userdict('test_string.txt')
  13. words=jieba.cut(test_string)
  14. print("加载自定义字典后,分词效果")
  15. print('/'.join(words))
  16. ----------output----------
  17. 医疗卫生/事业/是/强国/安民/的/光荣/事业/,/是/为/实现/中国/梦/奠定/基础/的/伟大事业/。
  18. 加载自定义字典后,分词效果
  19. 医疗卫生/事业/是/强国/安民/的/光荣事业/,/是/为/实现/中国/梦/奠定基础/的/伟大事业/。

问题

观察以上output会发现,光荣事业跟奠定基础按照了字典文件进行了合并,但是中国梦并没有,这是什么问题呢?

于是得出以下结论:

那如何解决呢?

直接改变主字典路径(0.28 之前的版本是不能指定主词典的路径的,有了延迟加载机制后,你可以改变主词典的路径),不用jieba默认的:

  1. jieba默认分词效果
  2. 医疗卫生/事业/是/强国/安民/的/光荣/事业/,/是/为/实现/中国/梦/奠定/基础/的/伟大事业/。
  3. 加载自定义字典后,分词效果
  4. 医疗/卫生/事业/是/强国安民/的/光荣事业/,/是/为/实现/中国梦/奠定基础/的/伟大事业/。

6.作者的话

如果您觉得本公众号对您有帮助,欢迎转发,更多内容请关注本公众号知识图谱系列!

需要源代码的点击阅读原文,即可获取,不要忘记star哦!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/348446
推荐阅读
相关标签
  

闽ICP备14008679号