jieba分词工具的使用(自用)
jieba分词的框架图:
特点:
1、支持四种分词模式:
(1)精确模式:试图将句子最精确地切开,适合文本分析;
(2)全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
(3)搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
(4)paddle模式:利用Paddle深度学习框架,训练序列标注(双向GRU)网络模型实现分词。同时支持词性标注。paddle模式使用需安装paddlepaddle-tiny,pip install paddlepaddle-tiny==1.6.1。paddle官网
目前paddle模式支持jieba v0.40及以上版本。jieba v0.40以下版本需要升级jieba:
pip install jieba --upgrade
2、支持繁体分词
3、支持自定义词典
4、MIT 授权协议
安装说明:
代码兼容 Python 2/3
对python3:
- 全自动安装: pip install jieba:
- 半自动安装:先下载 http://pypi.python.org/pypi/jieba/ ,解压后运行 python setup.py
- install 手动安装:将 jieba 目录放置于当前目录或者 site-packages 目录
- 通过 import jieba来引用
- 如果需要使用paddle模式下的分词和词性标注功能,请先安装paddlepaddle-tiny,pip install paddlepaddle-tiny==1.6.1。
算法
- 基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)
- 采用了动态规划查找最大概率路径,找出基于词频的最大切分组合
- 对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法
主要功能
1、分词
jieba.cut 方法接受四个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型;use_paddle 参数用来控制是否使用paddle模式下的分词模式,paddle模式采用延迟加载方式,通过enable_paddle接口安装paddlepaddle-tiny,并且import相关代码;
jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细
待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8
jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用jieba.lcut 以及 jieba.lcut_for_search 直接返回 list
jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。
2、添加自定义词典
载入词典
开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率
- 用法: jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径
- 词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。file_name 若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码。
- 词频省略时使用自动计算的能保证分出该词的词频。
调整词典
- 使用 add_word(word, freq=None, tag=None) 和 del_word(word) 可在程序中动态修改词典。二者效果对比如下:
add_word(word, freq=None, tag=None):向词典中添加一个词。freq 和 tag 可以省略,freq 默认为一个计算值例如:
>>> jieba.add_word("江大桥", freq = 20000, tag = None)
>>> print( "/".join(jieba.cut("江州市长江大桥参加了长江大桥的通车仪式。")))
江州/市长/江大桥/参加/了/长江大桥/的/通车/仪式/。
del_word(word):在词典中删除一个词。>>> jieba.del_word("江大桥")
>>> print( "/".join(jieba.cut("江州市长江大桥参加了长江大桥的通车仪式。")))
江州/市/长江大桥/参加/了/长江大桥/的/通车/仪式/。
- 使用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来。
① 由下边例子可见,刚开始“中将”被识别成了一个词,通过调整词频使“中”、“将”分开:
>>> print('/'.join(jieba.cut('如果放到post中将出错。', HMM=False)))
如果/放到/post/中将/出错/。
>>> jieba.suggest_freq(('中', '将'), True)
494
>>> print('/'.join(jieba.cut('如果放到post中将出错。', HMM=False)))
如果/放到/post/中/将/出错/。
② 由下边例子可见,刚开始“台中”被识别成了两个词,通过调整词频使二者合为一个词:
>>> print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False)))
「/台/中/」/正确/应该/不会/被/切开
>>> jieba.suggest_freq('台中', True)
69
>>> print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False)))
「/台中/」/正确/应该/不会/被/切开
- 注意:自动计算的词频在使用 HMM 新词发现功能时可能无效。
3、关键词提取
(1)基于 TF-IDF 算法的关键词抽取:
import jieba.analyse
- jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
sentence 为待提取的文本
topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
withWeight 为是否一并返回关键词权重值,默认值为 False
allowPOS 仅包括指定词性的词,默认值为空,即不筛选
- jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 实例,idf_path 为 IDF 频率文件
(2)基于 TextRank 算法的关键词抽取:
- jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=(‘ns’, ‘n’, ‘vn’, ‘v’)) 直接使用,接口相同,注意默认过滤词性。
- jieba.analyse.TextRank() 新建自定义 TextRank 实例
基本思想:
- 将待抽取关键词的文本进行分词
- 以固定窗口大小(默认为5,通过span属性调整),词之间的共现关系,构建图
- 计算图中节点的PageRank,注意是无向带权图
4、词性标注
- jieba.posseg.POSTokenizer(tokenizer=None) 新建自定义分词器,tokenizer参数可指定内部使用的 jieba.Tokenizer 分词器。jieba.posseg.dt 为默认词性标注分词器。
- 标注句子分词后每个词的词性,采用和 ictclas 兼容的标记法。
- 除了jieba默认分词模式,提供paddle模式下的词性标注功能。paddle模式采用延迟加载方式,通过enable_paddle()安装paddlepaddle-tiny,并且import相关代码;
- 用法示例
>>> import jieba
>>> import jieba.posseg as pseg
>>> words = pseg.cut("我爱北京天安门") #jieba默认模式
>>> jieba.enable_paddle() #启动paddle模式。 0.40版之后开始支持,早期版本不支持
>>> words = pseg.cut("我爱北京天安门",use_paddle=True) #paddle模式
>>> for word, flag in words:
... print('%s %s' % (word, flag))
...
我 r
爱 v
北京 ns
天安门 ns
paddle模式词性标注对应表如下:
paddle模式词性和专名类别标签集合如下表,其中词性标签 24 个(小写字母),专名类别标签 4 个(大写字母)。
5、并行分词
原理:将目标文本按行分隔后,把各行文本分配到多个 Python 进程并行分词,然后归并结果,从而获得分词速度的可观提升
基于 python 自带的 multiprocessing 模块,目前暂不支持 Windows
用法:
- jieba.enable_parallel(4) # 开启并行分词模式,参数为并行进程
- jieba.disable_parallel() # 关闭并行分词模式
6、Tokenize:返回词语在原文的起止位置
注意,输入参数只接受 unicode
- 默认模式
result = jieba.tokenize(u'永和服装饰品有限公司')
for tk in result:print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))
word 永和 start: 0 end:2
word 服装 start: 2 end:4
word 饰品 start: 4 end:6
word 有限公司 start: 6 end:10
- 搜索模式
result = jieba.tokenize(u'永和服装饰品有限公司', mode='search')
for tk in result:print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))
word 永和 start: 0 end:2
word 服装 start: 2 end:4
word 饰品 start: 4 end:6
word 有限 start: 6 end:8
word 公司 start: 8 end:10
word 有限公司 start: 6 end:10
7、ChineseAnalyzer for Whoosh 搜索引擎
引用: from jieba.analyse import ChineseAnalyzer
8、命令行分词
使用示例:python -m jieba news.txt > cut_result.txt
使用: python -m jieba [options] filename结巴命令行界面。固定参数:filename 输入文件可选参数:-h, --help 显示此帮助信息并退出-d [DELIM], --delimiter [DELIM]使用 DELIM 分隔词语,而不是用默认的' / '。若不指定 DELIM,则使用一个空格分隔。-p [DELIM], --pos [DELIM]启用词性标注;如果指定 DELIM,词语和词性之间用它分隔,否则用 _ 分隔-D DICT, --dict DICT 使用 DICT 代替默认词典-u USER_DICT, --user-dict USER_DICT使用 USER_DICT 作为附加词典,与默认词典或自定义词典配合使用-a, --cut-all 全模式分词(不支持词性标注)-n, --no-hmm 不使用隐含马尔可夫模型-q, --quiet 不输出载入信息到 STDERR-V, --version 显示版本信息并退出如果没有指定文件名,则使用标准输入。
延迟加载机制
jieba 采用延迟加载,import jieba 和 jieba.Tokenizer() 不会立即触发词典的加载,一旦有必要才开始加载词典构建前缀字典。如果你想手工初始 jieba,也可以手动初始化。
import jieba
jieba.initialize() # 手动初始化(可选)
在 0.28 之前的版本是不能指定主词典的路径的,有了延迟加载机制后,可以改变主词典的路径:
jieba.set_dictionary('data/dict.txt.big')
参考链接:https://github.com/fxsjy/jieba
jieba分词工具的使用(自用)相关推荐
- 2.5.jieba分词工具、Jieba安装、全模式/精确模式、添加自定义词典、关键词抽取、词性标注、词云展示
2.5.jieba分词工具 2.5.1.Jieba安装 2.5.2.全模式/精确模式 2.5.3.添加自定义词典 2.5.4.关键词抽取 2.5.5.词性标注 2.5.6.词云展示 2.5.jieba ...
- Jieba分词工具介绍及相关API使用方法
Jieba Introduction Project description jieba分词算法使用了基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能生成词情况所构成的有向无环图(DAG), 再 ...
- jieba分词工具的使用方法
20210401 https://www.cjavapy.com/article/745/ jieba并行分词 作为我这样的萌新,python代码的第一步是:#coding=utf-8 环境:pyth ...
- 分词工具使用系列——jieba使用
分词工具使用系列 第一章 sentencepiece使用 第二章 jieba工具使用 分词工具使用系列--jieba使用 分词工具使用系列 一.Jieba工具是什么 二.jieba分词和sentenc ...
- 结巴(jieba)分词器入门
安装jieba # pip install jieba 分词工具 import jieba input="我来到北京大学" seg_list=jieba.cut(input) pr ...
- 详细介绍NLP中文分词原理及分词工具
基于词表的分词方法 正向最大匹配算法FMM 从左到右扫描文本,得到词的最大匹配. 案例分析: 用正向最大匹配法对"秦皇岛今天晴空万里"进行中文分词,见下表. 词典 :"秦 ...
- 中文分词工具使用方法及比较
中文分词工具 分词背景介绍 安装及介绍(jieba.hanlp.pkuseg.thulac.snownlp.nlpir) windowst系统分词工具安装 Linux系统分词工具安装 使用方法介绍 数 ...
- Jieba分词Python简单实现
为什么80%的码农都做不了架构师?>>> 上一章分享了IK Analyzer中文分词及词频统计基于Hadoop的MapReducer框架Java实现.这次将与大家分享Jieba ...
- 中文分词工具jieba分词器的使用
1.常见的中文分词工具 中科院计算所的NLPIR 哈工大LTP 清华大学THULAC 斯坦福分词器 Hanlp分词器 jieba分词 IKAnalyzer 2.jieba分词算法主要有以下三种: 1. ...
最新文章
- Python-列表和元组
- Python 3 利用 subprocess 实现管道( pipe )交互操作读/写通信
- Eclipse 的一些调试技巧
- python 乱码转码_Python解决乱码问题
- matlab 二值化_撸了一份 ostu二值化,需要的小伙伴请拿走
- c++容器定义、初始化、赋值
- Ubuntu gnome 14.10下MySQLdb安装
- Sentinel授权规则及规则持久化
- spring注解式参数校验
- r2dbc_使用Spring Data R2DBC进行异步RDBMS访问
- nmake错误:VC\bin\cl.EXE: 返回代码“0xc0000135“
- Could not create the view: An unexpected exception was thrown.
- mysql 5.7 ddl 原子_mysql 8 新特性二DDL操作的原子化
- c语言程序与设计第三版-苏小红--第一轮学习笔记、难点整理
- Java之序列化和反序列化
- Aizu0189 Convenient Location【Floyd算法】
- Logic Pro for Mac(音频制作软件)V10.6.2中文版 支持M1芯片版mac
- 安装及卸载CrossOver for Mac
- 神经网络——IoU & NMS 正负样本均衡
- 力扣编程题-解法汇总
热门文章
- 最新ChatGPT GPT-4 NLU应用之实体分类识别与模型微调(附ipynb与python源码及视频)——开源DataWhale发布入门ChatGPT技术新手从0到1必备使用指南手册(六)
- 李勇 湖南大学计算机通信学院,刘彩苹-湖大信息科学与工程学院
- Python中with用法详解
- oracle中Start with 用法
- 2019-CVPR 缺陷/瑕疵检测论文介绍及基于pytorch实现的代码
- 2023最新互联网公司时长排行榜出炉!
- java中onclick的用法_JavaScript onclick事件使用方法详解
- 数据库(DB)和数据仓库(DW)的区别
- R语言使用dweibull函数生成威布尔(韦伯分布)分布密度数据、使用plot函数可视化威布尔分布密度数据(Weibull Distribution)
- 更多单词/词组/短语补充和总结(二)