python 中文分词工具
python 中文分词工具
- jieba,https://github.com/fxsjy/jieba
- jieba_fast,https://github.com/deepcs233/jieba_fast
- nltk,https://github.com/nltk/nltk
- FoolNLTK,https://github.com/rockyzhengwu/FoolNLTK/blob/master/README_CH.md
- thulac,https://github.com/thunlp/THULAC-Python
- genius,https://github.com/duanhongyi/genius
- snownlp,https://github.com/isnowfy/snownlp
- pynlpir,https://github.com/tsroten/pynlpir
jieba
“结巴”中文分词:https://github.com/fxsjy/jieba
算法
1)基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG);
2)采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合;
3)对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法。
1、分词
支持三种分词模式:
精确模式,试图将句子最精确地切开,适合文本分析;
全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
import jieba
seg1 = jieba.cut("好好学学python,有用。", cut_all=True)
print('全模式:', ' '.join(seg1))
seg2 = jieba.cut("好好学学python,有用。", cut_all=False)
print("精确模式(也是默认模式):", ' '.join(seg2))
seg3 = jieba.cut_for_search("好好学学python,有用。")
print("搜索引擎模式:", ' '.join(seg3))
print("\n")
seg_list1 = jieba.lcut("好好学学python,有用。", cut_all=True)
print(seg_list1)
seg_list2 = jieba.lcut("好好学学python,有用。", cut_all=False)
print(seg_list2)
seg_list_search = jieba.lcut_for_search("好好学学python,有用。")
print(seg_list_search)
输出:
全模式: 好好 好好学 好学 学学 python 有用
精确模式(也是默认模式): 好好 学学 python , 有用 。
搜索引擎模式: 好好 学学 python , 有用 。
['好好', '好好学', '好学', '学学', 'python', '', '有用', '', '']
['好好', '学学', 'python', ',', '有用', '。']
['好好', '学学', 'python', ',', '有用', '。']
特别地:
jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语,或者用jieba.lcut 以及 jieba.lcut_for_search 直接返回 list。
2、词性标注
import jieba.posseg as pseg
words = pseg.cut("好好学习,天天向上。")
for word, flag in words:
print('%s %s' % (word, flag))
输出:
好好学习 n
, x
天天向上 l
。 x
3、关键词抽取
基于 TF-IDF 算法的关键词抽取
语法:
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
sentence 为待提取的文本
topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
withWeight 为是否一并返回关键词权重值,默认值为 False
allowPOS 仅包括指定词性的词,默认值为空,即不筛选
import jieba.analyse
keyword = jieba.analyse.extract_tags('流云在天边,行囊在眼前,有一条通往太阳的路无边又无沿。')
print(keyword)
keywords = jieba.analyse.extract_tags('流云在天边,行囊在眼前,有一条通往太阳的路无边又无沿。',
topK=5, withWeight=True)
print(keywords)
输出:
['流云', '行囊', '天边', '无边', '通往', '太阳', '眼前', '一条']
[('流云', 1.33032263925), ('行囊', 1.20652280124125), ('天边', 1.1546548197325), ('无边', 1.02799048121375), ('通往', 0.90122942182)]
基于 TextRank 算法的关键词抽取
语法:
jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=(‘ns’, ‘n’, ‘vn’, ‘v’)) 直接使用,接口相同,注意默认过滤词性。
论文:
Mihalcea R, Tarau P. TextRank: Bringing Order into Texts[J]. Emnlp, 2004:404-411.
基本思想:
将待抽取关键词的文本进行分词
以固定窗口大小(默认为5,通过span属性调整),词之间的共现关系,构建图
计算图中节点的PageRank,注意是无向带权图
import jieba.analyse
keyword = jieba.analyse.textrank('流云在天边,行囊在眼前,有一条通往太阳的路无边又无沿。')
print(keyword)
keywords = jieba.analyse.textrank('流云在天边,行囊在眼前,有一条通往太阳的路无边又无沿。',
topK=30, withWeight=True)
print(keywords)
输出:
['行囊', '流云']
[('行囊', 1.0), ('流云', 0.9961264494011037)]
jieba_fast
使用cpython重写了jieba分词库中计算DAG和HMM中的vitrebi函数,速度得到大幅提升。
https://github.com/deepcs233/jieba_fast
python 中文分词工具的更多相关文章
- PyNLPIR python中文分词工具
官网:https://pynlpir.readthedocs.io/en/latest/ github:https://github.com/tsroten/pynlpir NLP ...
- python中文分词工具——结巴分词
传送门: http://www.iteye.com/news/26184-jieba
- 中文分词工具探析(二):Jieba
1. 前言 Jieba是由fxsjy大神开源的一款中文分词工具,一款属于工业界的分词工具--模型易用简单.代码清晰可读,推荐有志学习NLP或Python的读一下源码.与采用分词模型Bigram + H ...
- NLP(十三)中文分词工具的使用尝试
本文将对三种中文分词工具进行使用尝试,这三种工具分别为哈工大的LTP,结巴分词以及北大的pkuseg. 首先我们先准备好环境,即需要安装三个模块:pyltp, jieba, pkuseg以及L ...
- 基于开源中文分词工具pkuseg-python,我用张小龙的3万字演讲做了测试
做过搜索的同学都知道,分词的好坏直接决定了搜索的质量,在英文中分词比中文要简单,因为英文是一个个单词通过空格来划分每个词的,而中文都一个个句子,单独一个汉字没有任何意义,必须联系前后文字才能正确表达它 ...
- 中文分词工具简介与安装教程(jieba、nlpir、hanlp、pkuseg、foolnltk、snownlp、thulac)
2.1 jieba 2.1.1 jieba简介 Jieba中文含义结巴,jieba库是目前做的最好的python分词组件.首先它的安装十分便捷,只需要使用pip安装:其次,它不需要另外下载其它的数据包 ...
- 中文分词工具——jieba
汉字是智慧和想象力的宝库. --索尼公司创始人井深大 简介 在英语中,单词就是"词"的表达,一个句子是由空格来分隔的,而在汉语中,词以字为基本单位,但是一篇文章的表达是以词来划分的 ...
- 中文分词工具探析(一):ICTCLAS (NLPIR)
1. 前言 ICTCLAS是张华平在2000年推出的中文分词系统,于2009年更名为NLPIR.ICTCLAS是中文分词界元老级工具了,作者开放出了free版本的源代码(1.0整理版本在此). 作者在 ...
- 开源中文分词工具探析(三):Ansj
Ansj是由孙健(ansjsun)开源的一个中文分词器,为ICTLAS的Java版本,也采用了Bigram + HMM分词模型(可参考我之前写的文章):在Bigram分词的基础上,识别未登录词,以提高 ...
- 开源中文分词工具探析(四):THULAC
THULAC是一款相当不错的中文分词工具,准确率高.分词速度蛮快的:并且在工程上做了很多优化,比如:用DAT存储训练特征(压缩训练模型),加入了标点符号的特征(提高分词准确率)等. 1. 前言 THU ...
随机推荐
- Elasticsearch:跨集群搜索 Cross-cluster search (CCS)
转载自:https://blog.csdn.net/UbuntuTouch/article/details/104588232 跨集群搜索(cross-cluster search)使您可以针对一个或 ...
- K8s deployments的故障排查可视化指南已更新(2021 中文版)
转载自:https://mp.weixin.qq.com/s/07S930e6vsN2iToo0gP0zg 英文版 高清图地址:https://learnk8s.io/a/a-visual-guide ...
- 使用ko安装的nexus想作为maven仓库使用
默认安装的nexus并不能作为maven仓库使用,只能添加maven仓库来使用,具体可以查看该文档:使用nexus3配置maven私有仓库 https://www.cnblogs.com/sanduz ...
- python动态参数
Python的动态参数有两种,分别是*args和**kwargs,这里面的关键是一个和两个星号的区别,而不是args和kwargs在名字上的区别,实际上你可以使用*any或**whatever的方式. ...
- jmeter录制登录脚本
1.添加代理服务器 在非测试元件添加http代理服务器,端口写8888,域写127.0.0.1 在排除模式里填入.*.(js|css|PNG|jpg|ico|png|gif|woff|ttf).* 2 ...
- core3商城DDD实战(一)建模
我所在学校部门的一个校园商城项目(学生售卖二手物品与发布悬赏求助等,在线上确认,校园内线下交易) 我们使用DDD的软件开发方法,这是我们进入编程世界上手的第二个项目,从创建仓库到现在已经过去二十多天, ...
- JVM内存结构模型
- java:找不到符号
出现这种情况的原因之一:实体类的字段修改过.实体类中的变量名修改.然而其他地方调用的字段名还是修改之前的变量.
- Shell揭秘——程序退出状态码
程序退出状态码 前言 在本篇文章当中主要给大家介绍一个shell的小知识--状态码.这是当我们的程序退出的时候,子进程会将自己程序的退出码传递给父进程,有时候我们可以利用这一操作做一些进程退出之后的事 ...
- 更换SSD系统启动盘-PE重装系统
由于把C盘所在的磁盘替换为了另一张大容量SSD,因此必须借助于PE系统重装Win10,基本步骤如下: 由于每个人电脑不同,遇到的情况也不同,我的电脑是惠普暗影精灵,在PE系统中需要用分区助手把新磁盘进 ...