jieba分词
分词模式
精确模式
- 试图将句子最精确地切开,适合文本分析
全模式
- 把句子中所有可以成词的词语扫描出来,速度快,不能解决歧义
搜索引擎模式
- 在精确模式基础上,对长词再次切分,提高召回率,适合搜索引擎分词
paddle模式
-
利用PaddlePaddle深度学习框架,训练序列标注网络模型实现分词。支持词性标注
- pip install paddlepaddle-tiny==1.6.1
- jieba.enable_paddle()
主要功能
分词
-
jieba.cut
-
需要分词的字符串
-
cut_all
- 是否采用全模式
-
hmm
- 是否使用HMM模型
-
use_paddle
- 是否使用paddle模式下的分词模式
-
-
jieba.cut_for_search
-
需要分词的字符串
-
是否使用hmm模型
-
注意
- 适用于搜索引擎构建倒排索引的分词,粒度细
-
-
jieba.cut和jieba.cut_for_search返回一个可迭代的generator
-
jieba.lcut和jieba.lcut_for_search返回list
-
jieba.dt为默认分词器,所有全局分词相关函数都是该分词器的映射
-
jieba.Tokenizer(dictionary=DEFAULT_DICT)新建自定义分词器,可用于同时使用不同词典
添加自定义词典
-
载入词典
-
jieba.load_userdict(file_name)
- 文件类对象或自定义词典的路径
-
词典格式
-
与dict.txt一样
- 一个词占一行:词语 词频(可省略) 词性(可省略)
-
file_name若为路径或二进制方式打开的文件
- 必须utf-8编码
-
-
更改分词器的tmp_dir
- 指定缓存文件所在的文件夹
-
更改分词器的cache_file
- 指定缓存文件所在的文件名
-
-
调整词典
-
add_word(word,freq=None,tag=None)
-
del_word(word)
-
suggest_freq(segment,tune=True)
-
调节单个词语的词频,使其能或不能被分出来
-
jieba.suggest_freq((‘中’, ‘将’), True)
- 将’中‘和’将‘分开
-
jieba.suggest_freq(‘台中’, True)
- 将’台中‘放在一起
-
-
-
注意
- 自动计算的词频在使用HMM新词发现功能时可能无效
-
-
关键词提取
-
基于TF-IDF算法的关键词抽取
-
import jieba.analyse
-
jieba.analyse.extract_tags(sentence,topK=20,withWeight=False,allowPOS=())
-
sentence
- 待提取文本
-
topK
- 返回几个权重最大的关键词
-
withWeight
- 是否一并返回关键词权重值
-
allowPOS
- 仅包括指定词性的词
-
-
jieba.analyse.TFIDF(idf_path=None)
- 新建TFIDF实例 idf_path为IDF频率文件
-
jieba.analyse.set_idf_path(filename)
- 逆向文件频率文本语料库可以切换成自定义语料库的路径
-
jieba.analyse.set_stop_words(file_name)
- 停用词文本语料库可以切换成自定义语料库的路径
-
-
-
基于TextRank算法的关键词抽取
-
jieba.analyse.textrank(sentence,topK=20,withWeight=False,allowPOS=(‘ns’,‘n’,‘vn’,‘v’))
-
jieba.nalyse.TextRank()
- 新建自定义TextRank实例
-
-
-
词性标注
-
jieba.posseg.POSTokenizer(Tokenizer=None)
- 新建自定义分词器
- tokenizer参数可指定内部使用的jieba.Tokenizer分词器
- jieba.posseg.dt为默认词性标注分词器
-
标注句子分词后每个词的词性,采用和ictclas兼容的标记法
-
import jieba.posseg as pseg
-
words = pseg.cut(“我爱北京天安门”) #jieba默认模式
-
paddle模式词性标注对应表
-
-
并行分词
-
将目标文本按行分割后,各行文本分配到多个python进程并行分词,然后归并结果,提升分词速度
-
不支持windows
-
用法
-
jieba.enable_parallel(4)
- 开启并行分词模式,参数为并行进程数
-
jieba.disable_parrellel()
- 关闭并行分词模式
-
-
-
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]))
- result = jieba.tokenize(u’永和服装饰品有限公司’)
-
搜索模式
- 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]))
- result = jieba.tokenize(u’永和服装饰品有限公司’, mode=‘search’)
-
-
ChineseAnalyzer for Whoosh搜索引擎
- from jieba.analyse import ChineseAnalyzer
-
命令行分词
其他词典
下载所需要的词典
-
覆盖jieba/dict.txt
-
jieba.set_dictionary(‘data/dict.txt.big’)
-
词典
-
占用内存较小的词典
- https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.small
-
支持繁体分词更好的词典
- https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.big
-