1. jieba的江湖地位

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

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771

“最好的”这三个字可不是空穴来风,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也能快速上手。

https:// github.com/fxsjy/jieba

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

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

3. 安装jieba

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

pip install jieba

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

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

http:// pypi.python.org/pypi/ji eba/

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

jieba分词-强大的Python 中文分词库的更多相关文章

  1. 共有11款Python 中文分词库开源软件

    件过滤: 排序: 收录时间 | 浏览数 Python 中文分词库 Yaha "哑哈"中文分词,更快或更准确,由你来定义.通过简单定制,让分词模块更适用于你的需求. "Ya ...

  2. jieba(结巴)—— Python 中文分词

    学术界著名的分词器: 中科院的 ICTCLAS,代码并不十分好读 哈工大的 ltp, 东北大学的 NIU Parser, 另外,中文 NLP 和英文 NLP 不太一致的地方还在于,中文首先需要分词,针 ...

  3. python 中文分词库 jieba库

    jieba库概述: jieba是优秀的中文分词第三方库 中文文本需要通过分词获得单个的词语 jieba是优秀的中文分词第三方库,需要额外安装 jieba库分为精确模式.全模式.搜索引擎模式 原理 1. ...

  4. python中文分词库——pyltp

    pyltp在win10下安装比较麻烦,因此参考以下安装方式, 1.下载 win10下python3.6 2.安装 下载好了以后, 在命令行下, cd到wheel文件所在的目录, 然后使用命令pip i ...

  5. python中文分词库——pynlpir

    安装 pip install pynlpir import pynlpir #加载包 pynlpir.open() #加载nlpir的库,这步是必须的 #否则会出现 段错误/段转储 segment f ...

  6. 自然语言处理之中文分词器-jieba分词器详解及python实战

    (转https://blog.csdn.net/gzmfxy/article/details/78994396) 中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块,在进行中文自 ...

  7. Python中文分词组件 jieba

    jieba "结巴"中文分词:做最好的Python中文分词组件 "Jieba" Feature 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分 ...

  8. $好玩的分词——python jieba分词模块的基本用法

    jieba(结巴)是一个强大的分词库,完美支持中文分词,本文对其基本用法做一个简要总结. 安装jieba pip install jieba 简单用法 结巴分词分为三种模式:精确模式(默认).全模式和 ...

  9. Python自然语言处理学习——jieba分词

    jieba——“结巴”中文分词是sunjunyi开发的一款Python中文分词组件,可以在Github上查看jieba项目. 要使用jieba中文分词,首先需要安装jieba中文分词,作者给出了如下的 ...

随机推荐

  1. 问题记录,php webserver端跨子域setcookie后浏览器不存

    如题. path已设置成/,domain也已指定成父级域名,数据包response中可见Set-Cookie header为期望的cookie数据,但浏览器就是不接收.存储该cookie, 浏览器端也 ...

  2. [转] SpringBoot返回json 数据以及数据封装

    作者:武哥     来源:武哥聊编程   https://mp.weixin.qq.com/s/QZk0sKxBX4QZiCTHQIA6pg 1. Spring Boot关于Json的知识点 在项目开 ...

  3. Spring Boot必备技能之Starter自定义

    本文摘自于<Spring Cloud微服务 入门 实战与进阶>一书.  作者:尹吉欢 Spring Boot的方便体现在简化了很多繁琐的配置,对开发人员来说是一个福音,通过引入各种Spri ...

  4. 基于asp.net core 从零搭建自己的业务框架(二)

    前言 对于项目的迭代,如何降低复杂性的要求高于性能以及技术细节的 一个易用的项目,才能迭代到比拼性能,最后拼刺刀的阶段 传统单体项目,都是传统三层,直接请求响应的模式,这类称为Rpc模式,易用性上非常 ...

  5. day22:面向对象封装对象操作&类操作&面向对象删除操作

    面向对象程序开发 1.类的三种定义方式 class MyClass: pass class MyClass(): #(推荐) pass class MyClass(object): # object类 ...

  6. 方法解析之Method与ConstMethod介绍

    HotSpot通过Method与ConstMethod来保存方法元信息. 1.Method Method没有子类,定义在method.hpp文件中,其类继承关系如下图: Method用于表示一个Jav ...

  7. python处理转载博客html

    前景 在转载别人博客的时候通常我们会通过复制html然后放到编辑器里面, 但是通常html里有很多杂七杂八的东西, 比如script, svg这些标签导致排版出现问题 例如由lu标签引起的 由svg标 ...

  8. 思维导图概览SpringCloud

    @ 目录 1.什么是微服务 1.1.架构演进 1.2.微服务架构 1.3.微服务解决方案 2.SpringCloud概览 2.1.什么是SpringCloud 2.1.SpringCloud主要组件 ...

  9. CSS动画基础知识

    CSS动画就是通过CSS (Cascading Style Sheet,层叠样式表)代码搭建的网页动画.它允许设计师和开发人员通过编辑网站的CSS代码来添加页面动画,从而轻松取代传统动画图片或flas ...

  10. 记一次mysql数据库被勒索(下)

    背景: nextcloud的mysql数据库被黑,删库勒索.参考:记一次mysql数据库被勒索(上) mysql数据库恢复成功,nextcloud还是无法连接.参考:记一次mysql数据库被勒索(中) ...