查看原文
其他

中文分词-jieba库知识大全

2017-04-30 大邓 大邓带你玩python

jieba特性介绍

支持三种分词模式:

1、精确模式,试图将句子最精确地切开,适合文本分析;

2、全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;

3、搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

分词

 jieba.lcut 方法接受三个输入参数: 

1、需要分词的字符串;

2、cut_all 参数用来控制是否采用全模式;

3、HMM 参数用来控制是否使用 HMM 模型。

返回generator,可for循环获得分词后的每个词

>>>seg_list = jieba.cut("我来到北京清华大学", cut_all=True)

>>>print("Full Mode: " + "/ ".join(seg_list)) 

>>>我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学




jieba.lcut_for_search 方法接受两个参数:

1、需要分词的字符串;

2、是否使用 HMM 模型。

3、该方法粒度比较细,适合用于搜索引擎构建倒排索引的分词,

返回generator,可for循环获得分词后的每个词

>>>seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") 

>>>print(", ".join(seg_list))
>>>小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院,          中国科学院, 计算, 计算所, 后, 在, 日本, 京都,          大学, 日本京都大学, 深造

载入词典

有时候为了防止jieba把我们想要的词,如“编程大师”分成了“编程”、“大师”,我们需要自定义词典,将“编程大师”存入其中,避免词语再次被切分。


用法: 

 jieba.load_userdict(file_name)

file_name自定义词典txt文件路径,TXT文件格式:

1、一个词占一行;

2、每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。

3、file_name文件必须为 UTF-8 编码。

file_name文件形如:

创新办 3 i
云计算 5
凱特琳 nz
台中

TD-IDF关键词抽取

基于TD-IDF的关键词抽取方法

import jieba.analyse

jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())

sentence 为待提取的文本

topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20

withWeight 为是否一并返回关键词权重值,默认值为 False

allowPOS 仅包括指定词性的词,默认值为空,即不筛选


 jieba.analyse.set_stop_words(file_name) 

关键词提取所使用停止词(Stop Words)文本语料库可以切换成自定义语料库的路径

file_name为自定义语料库的路径



jieba.analyse.TFIDF(idf_path=None) 

关键词提取所使用逆向文件频率(IDF)文本语料库可以切换成自定义语料库的路径

新建 TFIDF 实例,idf_path 为 IDF 频率文件


TextRank 算法的关键词抽取

jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'))

 直接使用,与TD-IDF关键词抽取的接口相同,注意默认过滤词性。

jieba.analyse.TextRank()

 新建自定义 TextRank 实例


词性标注

标注句子分词后每个词的词性,采用和 ictclas 兼容的标记法。


用法示例

>>> import jieba.posseg as pseg
>>> words = pseg.cut("我爱北京天安门")
>>> for word, flag in words:
...    print('%s %s' % (word, flag))

...
我 r
爱 v
北京 ns
天安门 ns

请输入标题     abcdefg

 并行分词

原理:将文本按行分隔后,把各行文本分配到多个 Python 进程并行分词,归并结果获得分词速度的大幅度提升。基于 python 自带的 multiprocessing 模块,目前暂不支持 Windows


用法:

jieba.enable_parallel(4) 

#开启并行分词模式,参数为并行进程数

jieba.disable_parallel() # 关闭并行分词模式


是单进程版的 3倍多

请输入标题     bcdef


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


相比打赏,我更喜欢你做知识分享者

更多内容

文本分析

  python居然有情感??真的吗??  

  文本分析之网络关系

  自然语言处理库之snowNLP

  用gensim库做文本相似性分析

  基于共现发现人物关系的python实现

  用python计算两文档相似度

数据分析

酷炫的matplotlib

文本分析之网络关系  

pandas库读取csv文件

用词云图解读“于欢案”

神奇的python

  初识Python的GUI编程

 怜香惜玉,我用python帮助办公室文秘

 逆天的量化交易分析库-tushare     

 开扒皮自己微信的秘密

 8行代码实现微信聊天机器人

 使用Python登录QQ邮箱发送QQ邮件

爬虫

  爬虫实战视频专辑

【视频】手把手教你抓美女~

  当爬虫遭遇验证码,怎么办

【视频】于欢案之网民的意见(1)?

【视频】有了selenium,小白也可以自豪的说:“去TMD的抓包、cookie”

【视频】快来get新技能--抓包+cookie,爬微博不再是梦

【视频教程】用python批量抓取简书用户信息

  爬豆瓣电影名的小案例(附视频操作)

  爬豆瓣电影名的小案例2(附视频操作)

  用Python抓取百度地图里的店名,地址和联系方式


请输入标题     abcdefg打赏

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存