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 ...
随机推荐
- MinIO客户端快速入门指南
官方文档地址:http://docs.minio.org.cn/docs/master/minio-client-quickstart-guide MinIO Client (mc)为ls,cat,c ...
- 路径参数和数值校验: Path_Parameters_and_Numeric_Validations
官方文档地址: https://fastapi.tiangolo.com/zh/tutorial/path-params-numeric-validations/ # -*- coding: UTF- ...
- Elasticsearch:定制分词器(analyzer)及相关性
转载自:https://elasticstack.blog.csdn.net/article/details/114278163 在许多的情况下,我们使用现有的分词器已经足够满足我们许多的业务需求,但 ...
- 使用docker-compose部署WordPress项目
创建空文件夹 假设新建一个名为 wordpress 的文件夹,然后进入这个文件夹. 创建 docker-compose.yml 文件 docker-compose.yml 文件将开启一个 wordpr ...
- DophineSheduler上下游任务之间动态传参案例及易错点总结
作者简介 淡丹 数仓开发工程师 5年数仓开发经验,目前主要负责百得利MOBY新车业务 二手车业务及售后服务业务系统数仓建设 业务需求 在ETL任务之间调度时,我们有的时候会需要将上游的 ...
- LeetCode - 统计数组中的元素
1. 统计数组中元素总结 1.1 统计元素出现的次数 为了统计元素出现的次数,我们肯定需要一个map来记录每个数组以及对应数字出现的频次.这里map的选择比较有讲究: 如果数据的范围有限制,如:只有小 ...
- [CG从零开始] 3. 安装 pyassimp 库加载模型文件
assimp 是一个开源的模型加载库,支持非常多的格式,还有许多语言的 binding,这里我们选用 assimp 的 python 的 binding 来加载模型文件.不过社区主要是在维护 assi ...
- P5431 【模板】乘法逆元 2
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int N = 5e6 ...
- spring boot项目使用mybatis-plus代码生成实例
前言 mybatis-plus官方地址 https://baomidou.com mybatis-plus是mybatis的增强,不对mybatis做任何改变,涵盖了代码生成,自定义ID生成器,快速实 ...
- Jquery关于checkbox选中第二次失效的问题。
$(".selector input[type='checkbox']").attr("checked",true); $(".selector in ...