结巴中文分词
Python中文分词组件
四种分词模式
- 精确模式:试图把句子最精确的切开,适合文本分析。
- 全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
- 搜索引擎模式: 在精确模式的基础上,对长词进行切分,提高召回率,适用于搜索引擎分析。
- paddle模式:利用PaddlePaddle深度学习框架,训练序列标注(双向GRU)网络模型实现分词。同时支持词性标注。paddle模式使用需安装paddlepaddle-tiny,pip install paddlepaddle-tiny==1.6.1。目前paddle模式支持jieba v0.40及以上版本。jieba v0.40以下版本,请升级jieba,pip install jieba --upgrade 。
算法
- 基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词的情况所构成的有向无环图(DAG)
- 采用了动态规划法查找最大概率路径,找出基于词频的最大切分组合。
- 对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法。
主要功能
- 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 为默认分词器,所有全局分词相关函数都是该分词器的映射。
- (全局分词相关函数都是该分词器的映射)
代码示例
paddle模式
contents=['工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作',"我来到北京清华大学","乒乓球拍卖完了","中国科学技术大学"]
```python
contents=['工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作',"我来到北京清华大学","乒乓球拍卖完了","中国科学技术大学"]
for content in contents:
seg_list=jieba.cut(content,use_paddle=True)#使用paddle模式
print('Panddle Mode:'+'、'.join(list(seg_list)))
全模式和精确模式
seg_list=jieba.cut("我来到北京清华大学",cut_all=True)
print('Full Mode:'+'、'.join(seg_list))#全模式
seg_list=jieba.cut("我来到北京清华大学",cut_all=False)
print('Default Mode:'+'、'.join(seg_list))#精确模式
通过Viterbi算法新识别
seg_list = jieba.cut("我来到长津湖拍摄地拍摄长津湖电影") # 默认是精确模式
print(", ".join(seg_list))
``
搜索引擎模式
在这里插入代码片
```seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") # 搜索引擎模式
print(", ".join(seg_list))
自定义词典
- 开发者可以指定自己的自定义词典,以便包含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) 可在程序中动态修改词典。
- 使用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来。
- 注意:自动计算的词频在使用 HMM 新词发现功能时可能无效。
Gitub
学习心得
会自己慢慢的学习jieba分词,不用刻意学习,
慢慢地复现论文的时候,将各种jieba分词结构全部将其搞定。
耐着性子,用到的时候将jieba分词慢慢的学习完整都行啦的理由与打算。在连接中自己找到jieba分词都行啦的理由与打算。
本文含有隐藏内容,请 开通VIP 后查看