专栏首页光城(guangcity)Python实现jieba分词

Python实现jieba分词

Python实现jieba分词


今日知图替换

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

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


0.说在前面

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

1.结巴分词三种模式

默认模式

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

精确模式

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

搜索引擎模式

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

以上结果

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

2.自定义字典

jieba默认分词

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

加载自定义字典

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

以上结果

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

3.动态修改字典

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

以上结果

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

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

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

以上结果

医疗 n
卫生事业 n
是 v
强国 n
安民 nr
的 uj
光荣事业 nz
, x
是 v
为 p
实现 v
中国梦 nl
奠定基础 nz
的 uj
伟大事业 nz
。 x

5.高级使用

自定义处理:

----------自定义字典文件test_string.txt--------
光荣事业 4 nz
中国梦 4 nl
奠定基础 4 nz
----------issue.py----------
import jieba
test_string=("医疗卫生事业是强国安民的光荣事业,是为实现中国梦奠定基础的伟大事业。")
words=jieba.cut(test_string)
print('jieba默认分词效果')
print('/'.join(words))
# 加载自定义字典
jieba.load_userdict('test_string.txt')
words=jieba.cut(test_string)
print("加载自定义字典后,分词效果")
print('/'.join(words))
----------output----------
医疗卫生/事业/是/强国/安民/的/光荣/事业/,/是/为/实现/中国/梦/奠定/基础/的/伟大事业/。
加载自定义字典后,分词效果
医疗卫生/事业/是/强国/安民/的/光荣事业/,/是/为/实现/中国/梦/奠定基础/的/伟大事业/。

问题

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

于是得出以下结论: jieba 分词自定义词典只对长词起作用 对如果定义的词比jieba自己分的短,则没有用

那如何解决呢?

直接改变主字典路径(0.28 之前的版本是不能指定主词典的路径的,有了延迟加载机制后,你可以改变主词典的路径),不用jieba默认的: 将issue.py中的jieba.load_userdict('test_string.txt') 替换为jieba.set_dictionary('test_string.txt') 此时输出:

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

本文分享自微信公众号 - 光城(guangcity),作者:lightcity

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python基础长文

    最近发的一些都是python的一些实际应用篇,今天落地,从基础出发,将我的python自学之路:本年4月开始学python的基础笔记,分享给各位,本文字数跟阅读...

    公众号guangcity
  • 还怕Github被墙?项目团队开发必备技能!

    最近在做一个大项目,代码量非常大,需要一个代码库存放,而现有的Github、GitLab不适合存放私密的代码,于是自建代码服务器,存放代码,于是今天这篇文章应任...

    公众号guangcity
  • Numpy实战全集

    0.导语1.Numpy基本操作1.1 列表转为矩阵1.2 维度1.3 行数和列数()1.4 元素个数2.Numpy创建array2.1 一维array创建2.1...

    公众号guangcity
  • python对象销毁(垃圾回收)

    py3study
  • Python面向对象基础

    NOTE: 重要强调:     Python的作用域和命名空间 (1)命名空间 是从命名到对象的映射     ①内置命名空间     ②全局命名空间:模块   ...

    py3study
  • C#格式化输出(记录)

    owent
  • Python实现汉英字典

    实现一个翻译功能,中英文的互相转换。并可以播放翻译后的内容。 翻译接口调用的是百度翻译的api接口。

    子乾建建-Jeff
  • python语句-while

    PS:运行程序的时候不能使用pycharmIDE,因为python的IDE不带自动隐藏密码的功能,运行程序的时候进入cmd,使用python test_whil...

    py3study
  • 如何仅用递归函数和栈操作逆序一个栈

    仇诺伊
  • 机器学习在统计套利中的应用

    谢谢大家的支持!现在该公众号开通了评论留言功能,你们对每篇推文的留言与问题,可以通过【写评论】给圈主留言,圈主会及时回复您的留言。 1. 简介 在投资领域,统计...

    量化投资与机器学习微信公众号

扫码关注云+社区

领取腾讯云代金券