当前位置:首页 » 新媒体运营 » 正文

百度关键词分词工具,jieba分词-python最好用的中文分词工具

2779 人参与  2022年03月09日 13:06  分类 : 新媒体运营  评论

jieba是一款强大的python第三方中文分词库。目前jieba已经支持四种分词模式:

  • 精确模式:试图将句子最精确地切开,不存在冗余数据,适合文本分析。

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

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

  • paddle模式:利用PaddlePaddle深度学习框架,训练序列标注(双向GRU)网络模型实现分词。

  • QQ截图.jpg

jieba安装

jieba提供了几种安装模式。

  • 全自动安装:easy_install jieba 或者 pip install jieba / 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==..。

jieba简单使用

安装好jieba后,我们就来了解下jieba的基本分词操作。前面我们也说了jieba具有四种分词模式,其中jieba.cut用于精确模式、全模式、paddle模式,jieba.cut_for_search用于搜索引擎模式。

  • jieba.cut 方法接受四个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型;use_paddle 参数用来控制是否使用paddle模式下的分词模式,paddle模式采用延迟加载方式,通过enable_paddle接口安装paddlepaddle-tiny,并且import相关代码;

  • jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词

  • jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用jieba.lcut 以及 jieba.lcut_for_search 直接返回 list。

# encoding=utf-import jieba# 全模式seg_list = jieba.cut("结巴中文分词:做最好的 Python 中文分词组件", cut_all=True)print("/ ".join(seg_list))# 精确模式,默认seg_list = jieba.cut("结巴中文分词:做最好的 Python 中文分词组件", cut_all=False)print("/ ".join(seg_list))# 搜索引擎模式seg_list = jieba.cut_for_search("结巴中文分词:做最好的 Python 中文分词组件")print(", ".join(seg_list))# 启动paddle模式。 .版之后开始支持,早期版本不支持jieba.enable_paddle() # 使用paddle模式seg_list = jieba.cut("结巴中文分词:做最好的 Python 中文分词组件",use_paddle=True)print(&#;/&#;.join(list(seg_list)))
结巴/ 巴中/ 中文/ 分词/ :/ 做/ 最好/ 的/ /  / / Python/ /  / / 中文/ 分词/ 词组/ 组件
结巴/ 中文/ 分词/ :/ 做/ 最好/ 的/  / Python/  / 中文/ 分词/ 组件
结巴, 中文, 分词, :, 做, 最好, 的,  , Python,  , 中文, 分词, 组件
结巴/中文/分词/:/做/最好/的/ Python /中文/分词/组件
自定义词典

我们还可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率 用法: jieba.load_userdict(file_name),file_name 为文件类对象或自定义词典的路径 词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。 词频省略时使用自动计算的能保证分出该词的词频。 比如我们传入以下的词典,看看传入前后jieba精确模式下分词变化。

“””
结巴大仙 快乐结巴侠 “””
seg_list = jieba.cut_for_search("结巴大仙和快乐结巴侠是两个人")print("/ ".join(seg_list))

jieba.load_userdict(&#;jieba_dic.txt&#;) 

seg_list = jieba.cut_for_search("结巴大仙和快乐结巴侠是两个人")print("/ ".join(seg_list))
结巴/ 大仙/ 和/ 快乐/ 结巴/ 结巴侠/ 是/ 两个/ 人
结巴/ 大仙/ 结巴大仙/ 和/ 快乐/ 结巴/ 结巴侠/ 快乐结巴侠/ 是/ 两个/ 人

这里可以看到添加字典后,jieba已经能分出我们加进去的新词。 我们还可以使用add_word(word, freq=None, tag=None)和del_word(word)在程序中动态修改字典。使用suggest_freq(segment, tune=True)调整单个词的频率,使得它可以(或不能)被分割。

print(&#;/&#;.join(jieba.cut(&#;如果放到post中将出错。&#;, HMM=False)))

jieba.suggest_freq((&#;中&#;, &#;将&#;), True)print(&#;/&#;.join(jieba.cut(&#;如果放到post中将出错。&#;, HMM=False)))print(&#;/&#;.join(jieba.cut(&#;「台中」正确应该不会被切开&#;, HMM=False)))

jieba.suggest_freq(&#;台中&#;, True)print(&#;/&#;.join(jieba.cut(&#;「台中」正确应该不会被切开&#;, HMM=False)))
如果/放到/post/中将/出错/。
如果/放到/post/中/将/出错/。
「/台/中/」/正确/应该/不会/被/切开
「/台中/」/正确/应该/不会/被/切开
关键词抽取

jieba提供几种关键词抽取算法,如TF-IDF、TextRank。下面我们介绍一下TF-IDF算法。 使用前需要导入相关库jieba.analyse。然后使用jieba.analyse.extract_tags(sentence, topK=, withWeight=False, allowPOS=())提取关键词。其中:

  • sentence: 要提取的文本

  • topK:返回具有最高 TF/IDF 权重的关键字数量。默认值为

  • withWeight: 是否返回带有关键字的 TF/IDF 权重。默认值为 False

  • allowPOS:过滤包含 POS 的单词。为空不过滤。

import jieba.analyse

s = "这少年便是闰土。我认识他时,也不过十多岁,离现在将有三十年了;那时我的父亲还在世,家景也好,我正是一个少爷。那一年,我家是一件大祭祀的值年。这祭祀,说是三十多年才能轮到一回,所以很郑重;正月里供祖像,供品很多,祭器很讲究,拜的人也很多,祭器也很要防偷去。我家只有一个忙月(我们这里给人做工的分三种:整年给一定人家做工的叫长工;按日给人做工的叫短工;自己也种地,只在过年过节以及收租时候来给一定人家做工的称忙月),忙不过来,他便对父亲说,可以叫他的儿子闰土来管祭器的。"for x, w in jieba.analyse.extract_tags(s, withWeight=True):
print(&#;%s %s&#; % (x, w))
做工 .祭器 .祭祀 .我家 .家景 .闰土 .他时 .里供 .祖像 .防偷 .按日 .闰土来 .十多岁 .人家 .父亲 .供品 .整年 .短工 .收租 .忙不过来 .
词性标注

jieba还能标注句子分词后每个词的词性,除了jieba默认分词模式,提供paddle模式下的词性标注功能。

import jieba.posseg as pseg
words = pseg.cut("我爱我的祖国") #jieba默认模式for word, flag in words:print(&#;%s %s&#; % (word, flag))
我 r
爱 v
我 r
的 uj
祖国 n
返回词语在原文中的起始位置

jieba提供了Tokenize来返回词语在原文的起止位置,拥有默认和搜索两种模式。

result = jieba.tokenize(u&#;小Q的python学习笔记&#;)for tk in result:
print("word %s		 start: %d 		 end:%d" % (tk[],tk[],tk[]))
word 小   start:     end:word Q   start:     end:word 的   start:     end:word python   start:     end:word 学习   start:     end:word 笔记   start:     end:
总结

今天我们了解了一款贼好用的分词工具jieba,希望你在今后的学习工作中可以灵活使用。下一期我们将用jieba进行分词,并生成词云图。感兴趣的同学,可以点点关注。

本文链接:https://www.woshiqian.com/post/85215.html

百度分享获取地址:https://share.baidu.com/code
百度关键词分词工具  

我是钱微信/QQ:5087088

广告位、广告合作QQ:5087088

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

       

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。