1. jieba的江湖地位

NLP(自然语言)领域现在可谓是群雄纷争,各种开源组件层出不穷,其中一支不可忽视的力量便是jieba分词,号称要做最好的 Python 中文分词组件。

“最好的”这三个字可不是空穴来风,jieba在开源社区的受欢迎程度非常之高。

jieba项目目前的github star数已经达到24k,其他热门分词组件像HanLP star数20k、ansj_seg star数5.6k、pkuseg-python star数5k。可见jieba已经稳居中文分词领域c位。

jieba的主要功能是做中文分词,可以进行简单分词、并行分词、命令行分词,当然它的功能不限于此,目前还支持关键词提取、词性标注、词位置查询等。

更让人愉悦的是jieba虽然立足于python,但同样支持其他语言和平台,诸如:C++、Go、R、Rust、Node.js、PHP、 iOS、Android等。所以jieba能满足各类开发者的需求。

2. 如何学jieba

据我所知,jieba最靠谱的文档是github项目的readme,因为它似乎还没有独立的使用文档。但由于使用起来简单,看readme也能快速上手。

国内各大博客有关于jieba的使用教程,但需要甄别下准确度和时效性,因为jieba项目一直在更新。

当然本文不是纯粹的种草文章,会简单介绍下jieba的使用方法。

3. 安装jieba

jieba支持pip或者conda安装,直接在命令行执行:

pip install jieba

不出意外,应该能很快安装好。

你也可以下载jieba安装包再安装,jieba的pypi地址:

4. 分词初体验

分词是NLP处理的第一步,也是最基本的任务,分词的好坏直接决定了后面语义分析的精准度。

所谓分词就是将一段表述里的词汇进行分解,比如“我爱中国”,分解后有三个词:我、爱、中国,词性分别是名词、动词、名词。

jieba库中用于分词的方法有三个:

jieba.cut

给定中文字符串,分解后返回一个迭代器,需要用for循环访问。

参数解释:

strs: 需要分词的字符串;

cut_all:用来控制是否采用全模式;

HMM:用来控制是否使用 HMM 模型;

use_paddle:用来控制是否使用paddle模式下的分词模式,paddle模式采用延迟加载方式,通过enable_paddle接口安装paddlepaddle-tiny,并且import相关代码;

这里区分全模式和精确模式,举个例子先看看区别:

# 全模式

seg_list = jieba.cut("中国上海是一座美丽的国际性大都市", cut_all=True)

print("Full Mode: " + "/ ".join(seg_list))

# 返回结果

Full Mode: 中国/ 上海/ 是/ 一座/ 美丽/ 的/ 国际/ 国际性/ 大都/ 大都市/ 都市

# 精确模式

seg_list = jieba.cut("中国上海是一座美丽的国际性大都市", cut_all=False)

print("Full Mode: " + "/ ".join(seg_list))

# 返回结果

Default Mode: 中国/ 上海/ 是/ 一座/ 美丽/ 的/ 国际性/ 大都市

可以看到,全模式把句子中所有的可以成词的词语都扫描出来, 会出现一词多用、一词多意。精确模式将句子最精确的切分开,每个词都只有一种含义。

jieba.cut方法默认是精确模式。

还有一个参数控制paddle模式,会更加精确,使用这个的前提是你需要先安装paddlepaddle-tiny。

安装命令:

pip install paddlepaddle-tiny==1.6.1

详情可以去官网看下,这里不举例。

jieba.cut_for_search

该方法和cut一样,分解后返回一个迭代器,需要用for循环访问。不过它是搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

参数解释:

strs:需要分词的字符串;

HMM:是否使用 HMM 模型,默认值为 True。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细。

# 搜索引擎模式

seg_list = jieba.cut_for_search("中国上海是一座美丽的国际性大都市,拥有复旦大学、上海交通大学等知名高等学府")

print(", ".join(seg_list))

# 返回结果

Search Mode: 中国, 上海, 是, 一座, 美丽, 的, 国际, 国际性, 大都, 都市, 大都市, ,, 拥有, 复旦, 大学, 复旦大学, 、, 上海, 交通, 大学, 上海交通大学, 等, 知名, 高等, 学府, 高等学府

jieba.lcut

和jieba.cut使用方法一样,不过返回的是列表。

cut和cut_for_search方法都是支持繁体字的。

5. 添加自定义词典

如果是对专业新闻或者小说进行分词,会有很多的新词汇,jieba库里没有就没办法识别,那么就需要添加自定义的词汇,比如:奥利给。

添加自定义词汇的方法:

jieba.load_userdict(file_name)

参数是文本文件,txt、csv都可以。

自定义词典文件的词汇格式是一个词占一行,每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。

比如:

以"奥利给,管虎执导的八佰是一部让人热血沸腾的好电影。" 这段话为例,

如果不添加自定义词典,很多词没办法识别出来。

# 不添加自定义词典

seg_list = jieba.cut("奥利给,管虎执导的八佰是一部让人热血沸腾的好电影")

print("/ ".join(seg_list))

# 返回结果

奥利/ 给/ ,/ 管虎/ 执导/ 的/ 八佰是/ 一部/ 让/ 人/ 热血沸腾/ 的/ 好/ 电影

添加自定义词典后,新词、人名、电影名都可以识别出来

# 载入词典

jieba.load_userdict("dict.txt")

seg_list = jieba.cut("奥利给,管虎执导的八佰是一部让人热血沸腾的好电影")

print("/ ".join(seg_list))

# 返回结果

奥利给/ ,/ 管虎/ 执导/ 的/ 八佰/ 是/ 一部/ 让/ 人/ 热血沸腾/ 的/ 好/ 电影

6. 结论

jieba无疑是一款优秀的分词工具,而且在不断地优化成长。前面讲了一些基本的使用,大家还可以尝试使用停用词、提取关键词、词性标注、词位置查询等功能,也是十分的便捷。

python中文分词库_jieba分词-强大的Python 中文分词库相关推荐

  1. python俄语词库_jieba分词-强大的Python 中文分词库

    1. jieba的江湖地位 NLP(自然语言)领域现在可谓是群雄纷争,各种开源组件层出不穷,其中一支不可忽视的力量便是jieba分词,号称要做最好的 Python 中文分词组件. "最好的& ...

  2. python高效办公_用强大的Python高效处理海量Excel,告别耗时加班!

    原标题:用强大的Python高效处理海量Excel,告别耗时加班! 版权声明:本文为CSDN博主「CGS_______」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本 ...

  3. python神器排行_9款强大的Python工具包,第5款神器期待已久!

    专注Python.AI.大数据 @七步编程 Python是一门简洁.优美且强大的编程语言,它的强大,很大一部分原因来自于丰富的第三方工具包. ​通过这些第三方工具包,它可以轻松应对机器学习.数据分析. ...

  4. 自然语言处理之中文分词(基于Python)

    人生苦短,我用python 除了给你生孩子,python都能给你做到. 这句话所言不假,python拥有丰富的库,能完成各种各样的的功能. 只有你想不到的,没有python做不到的.下面我们来看看py ...

  5. Lucene分词器,使用中文分词器,扩展词库,停用词

    2019独角兽企业重金招聘Python工程师标准>>> Lucene分词器,使用中文分词器,扩展词库,停用词 博客分类: 搜索引擎,爬虫 停止词:lucene的停止词是无功能意义的词 ...

  6. python 分词工具训练_Python中文分词工具大合集:安装、使用和测试

    这篇文章事实上整合了前面两篇文章的相关介绍,同时添加一些其他的Python中文分词相关资源,甚至非Python的中文分词工具,仅供参考. 首先介绍之前测试过的8款中文分词工具,这几款工具可以直接在AI ...

  7. python 分词工具训练_中文分词入门和分词工具汇总攻略

    [注意]如果寻找分词和文本分析软件,为了完成内容分析和其他文本研究任务,直接使用集搜客分词和文本分析软件就可以了.本文是为了讲解集搜客分词和文本分析的实现原理,是给产品设计者和开发者看的. 最近在整理 ...

  8. python中文分词工具_结巴中文分词工具的安装使用 Python分词教程

    结巴分词 中文分词是中文文本处理的一个基础性工作,结巴分词利用进行中文分词.其基本实现原理有三点: 1.基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG) ...

  9. 简易中文分词算法(python)_自然语言处理(NLP)中的的中文分词算法及 Python 实现...

    本 Chat 首先简单介绍了自然语言处理中中文分词的概念和应用场景.然后通过两个简单的小例子展示了算法的步骤.接着编写了 Python 代码,并在<红楼梦>上做了测试.最后,总结了我在写代 ...

最新文章

  1. 今日 Paper | 虚拟试穿网络;人群计数基准;联邦元学习;目标检测等
  2. win10任务栏怎么还原到下面_Windows10 系统桌面底部的任务栏在侧边了怎么还原
  3. MyBatis多对多关联查询示例——MyBatis学习笔记之十八
  4. FZOJ 2014年11月份月赛 ytaaa(dp + RMQ)
  5. 被阿里P8面了两个小时,技术、业务有来有回......
  6. python小游戏之二
  7. django-用户文件的上传-后台上传
  8. java程序员 css_好程序员Web前端分享前端CSS篇
  9. Linux QQ 2.0.0 Beta2 发布
  10. extjs tree下拉列表_Extjs中ComboBoxTree实现的下拉框树效果(自写)_extjs
  11. 【老生谈算法】matlab实现免疫算法源码——免疫算法
  12. SVN创建分支-查看分支创建之前文件的历史记录
  13. android 安装在笔记本,笔记本安装安卓系统图解_笔记本电脑如何安装安卓系统-win7之家...
  14. 报价单与贸易术语关系
  15. 源支付5.18源码/三网免挂/带云端/附源码搭建教程
  16. android 前摄屏幕补光,移动终端的前置摄像头的补光方法及装置与流程
  17. 设计基于HTML5的APP登录功能及安全调用接口的方式(原理篇)
  18. iOS - 解决Warning: Attempt to present which is already presenting
  19. php where 时间条件,thinkphp5日期时间查询比较和whereTime使用方法
  20. 瀚云轩玉石系统瀚云轩玉石竞拍系统开发玩法与开发源码分享

热门文章

  1. Amazon DeepRacer 错误排查手册
  2. 小键盘录入软件_天呐!这个人竟然在电脑上用小键盘打字!RIME小狼毫输入法编译定制指南...
  3. html文本过长自动换行,css 长文本及长链接自动换行的几种方法
  4. Python:替换不吉利数字
  5. delphi修改电脑IP
  6. deepin15.11下QQ闪退和图片不加载问题
  7. 个人备案的网站有什么限制?能做什么行业?
  8. CYQ.Data Json
  9. 小明的保险箱(暴力破解zip)-学习笔记
  10. css命名规范--小技巧