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也能快速上手。https://github.com/fxsjy/jieba

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

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

3. 安装jieba

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

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

你也可以下载jieba安装包再安装,jieba的pypi地址:http://pypi.python.org/pypi/jieba/

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 lcut精确分词_jieba分词-Python中文分词领域的佼佼者相关推荐

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

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

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

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

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

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

  4. 分词器以及ik中文分词器

    文章目录 分词器以及ik中文分词器 概念 ik分词器的安装 环境准备 设置jdk环境变量 下载maven安装包并解压 设置path 验证maven是否安装成功 下载IK分词器并安装 使用IK分词器 查 ...

  5. python lcut精确分词_Python jieba库分词模式实例用法

    在中文分词中,jiebe库是最为常见的,主要的原因还是它独特的支持分词模式如:精确模式.全模式.搜索引擎模式.也对应着三种方式,包括jieba.cut()方法.jieba.lcut()方法.jieba ...

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

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

  7. python中文分词统计_python 实现中文分词统计

    总是看到别人用Python搞各种统计,前端菜鸟的我也来尝试了一把.有各种语义分析库在,一切好像并不是很复杂.不过Python刚开始看,估计代码有点丑. 一.两种中文分词开发包 thulac (http ...

  8. 【python 走进NLP】利用jieba技术中文分词并写入txt

    简单介绍: 近年来,随着NLP自然语言处理技术的日益成熟,开源实现的分词工具也越来越多,比如NLTK:其在英文分词较为成熟,分词效果较好,在处理中文分词方面则显得力不足:在处理中文分词时,Jieba这 ...

  9. Python在Jupyter上使用HMM进行中文分词,将新闻文本分词后提取其中的高频词

    首先,需要三个.txt文件: 需要提取高频词的搜狐新闻文本news.txt(需要5积分,不能白嫖,气四~) 训练HMM的trainCorpus.txt(需要5积分,不能白嫖,气四~) 停顿词stopw ...

最新文章

  1. 机器学习算法(3:决策树算法)
  2. 企业该如何实现数字化转型?
  3. Spring3+MyBatis3整合无法输出SQL语句问题的解决
  4. 编程思想之多线程与多进程——以操作系统的角度述说线程与进程
  5. Netty 服务 接收新数据
  6. 管理项目的问题跟踪器的提示
  7. 商业智能BI和报表的区别?
  8. 概率论由相关性求数学期望和方差的公式_2020.3.30 | 考研数学—概率论与数理统计:各章节考试重点...
  9. 学python要什么基础-要学Python编程,需要什么样的基础呢?想找这方面工作
  10. 更改Xcode项目名及app名称
  11. 1156 Sexy Primes (20 分)(质数 模拟
  12. 2021中国开源年会无锡城市分会场开源点亮无锡
  13. static变量的生存期问题
  14. PHP pdo查询sqlite,PHP PDO 操作 sqlite数据库 案例
  15. 1.试用期个人工作总结(篇一)
  16. 软件版本各阶段英文名称
  17. mumu模拟器PUBG显示服务器,刺激战场使用MuMu模拟器最新的过检测方法
  18. hiveserver2 的HA 配置
  19. 计算机专业暑假计划,考研计算机:最适合复习的暑假黄金期来了
  20. 【codeforces 776B】Sherlock and his girlfriend

热门文章

  1. 草图:设计流程的开始
  2. 视频剪辑,教你最简单的方法转换视频格式
  3. (八)ElasticSearch之文档映射
  4. 优秀软件及网站推荐推荐(一)
  5. react angular vue流行度对比
  6. 计算机软件理论基础集合论,从数理逻辑观点看计算机专业的理论基础探讨.doc...
  7. 魁拔Ⅲ战神崛起: 我的小鱼你醒了, 还认识早晨吗?
  8. 区块链课堂|从0开始了解区块链,通过代币学智能合约开发(线上课程)
  9. TOP 测试网系列活动正式启动!
  10. 浙江工商大学计算机考研调剂,浙江工商大学计算机学院2013考研调剂信息