特点

1,支持三种分词模式:

a,精确模式,试图将句子最精确地切开,适合文本分析;
    b,全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
    c,搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

2,支持繁体分词

3,支持自定义词典

算法实现:

基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)
采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法

功能

功能 1):分词

jieba.cut方法接受两个输入参数: 1) 第一个参数为需要分词的字符串 2)cut_all参数用来控制是否采用全模式
    jieba.cut_for_search方法接受一个参数:需要分词的字符串,该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细
    注意:待分词的字符串可以是gbk字符串、utf-8字符串或者unicode
    jieba.cut以及jieba.cut_for_search返回的结构都是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(unicode),也可以用list(jieba.cut(...))转化为list
代码示例( 分词 )

#encoding=utf-8
import jieba
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)  # 精确模式
seg_list = jieba.cut("他来到了网易杭研大厦")  # 默认是精确模式
print ", ".join(seg_list)
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")  # 搜索引擎模式
print ", ".join(seg_list)

Output:
【全模式】: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
【精确模式】: 我/ 来到/ 北京/ 清华大学
【新词识别】:他, 来到, 了, 网易, 杭研, 大厦    (此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了)
【搜索引擎模式】: 小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造

功能 2) :添加自定义词典

开发者可以指定自己自定义的词典,以便包含jieba词库里没有的词。虽然jieba有新词识别能力,但是自行添加新词可以保证更高的正确率
用法:

jieba.load_userdict(file_name) # file_name为自定义词典的路径

词典格式和dict.txt一样,一个词占一行;每一行分三部分,一部分为词语,另一部分为词频,最后为词性(可省略),用空格隔开
范例:
自定义词典:

云计算 5
李小福 2 nr
创新办 3 i
easy_install 3 eng
好用 300
韩玉赏鉴 3 nz

用法示例:

import sys
import jieba
jieba.load_userdict("userdict.txt")
import jieba.posseg as psegtest_sent = "李小福是创新办主任也是云计算方面的专家;"

words = jieba.cut(test_sent)
for w in words:print wresult = pseg.cut(test_sent)#词性标注
for w in result:print w.word, "/",w.flag, ", ",print "\n========"

terms = jieba.cut('easy_install is great')#带下划线的词会被分割
for t in terms:print t

之前: 李小福 / 是 / 创新 / 办 / 主任 / 也 / 是 / 云 / 计算 / 方面 / 的 / 专家 /
加载自定义词库后: 李小福 / 是 / 创新办 / 主任 / 也 / 是 / 云计算 / 方面 / 的 / 专家 /
词性标注结果:李小福 / nr ,  是 / v ,  创新办 / i ,  主任 / b ,  也 / d ,  是 / v ,  云计算 / x ,  方面 / n ,  的 / uj ,  专家 / n ,  ; / x

功能 3) :关键词提取

jieba.analyse.extract_tags(sentence,topK) #需要先import jieba.analyse

说明

setence为待提取的文本

topK为返回几个TF/IDF权重最大的关键词,默认值为20
代码示例 (关键词提取)

import sys
sys.path.append('../')import jieba
import jieba.analyse
from optparse import OptionParserUSAGE = "usage: python extract_tags.py [file name] -k [top k]"parser = OptionParser(USAGE)
parser.add_option("-k", dest="topK")
opt, args = parser.parse_args()if len(args) < 1:print USAGEsys.exit(1)file_name = args[0]if opt.topK is None:topK = 10
else:topK = int(opt.topK)content = open(file_name, 'rb').read()tags = jieba.analyse.extract_tags(content, topK=topK)print ",".join(tags)

功能 4) : 词性标注

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

>>> import jieba.posseg as pseg
>>> words = pseg.cut("我爱北京天安门")
>>> for w in words:
...    print w.word, w.flag
...
我 r
爱 v
北京 ns
天安门 ns

功能 5) : 并行分词

原理:将目标文本按行分隔后,把各行文本分配到多个python进程并行分词,然后归并结果,从而获得分词速度的可观提升
基于python自带的multiprocessing模块,目前暂不支持windows
用法:

jieba.enable_parallel(4) # 开启并行分词模式,参数为并行进程数
jieba.disable_parallel() # 关闭并行分词模式

例子:

import urllib2
import sys,time
import sys
sys.path.append("../../")
import jieba
jieba.enable_parallel(4)url = sys.argv[1]
content = open(url,"rb").read()
t1 = time.time()
words = list(jieba.cut(content))t2 = time.time()
tm_cost = t2-t1log_f = open("1.log","wb")
for w in words:
print >> log_f, w.encode("utf-8"), "/" ,print 'speed' , len(content)/tm_cost, " bytes/second"

实验结果:在4核3.4GHz Linux机器上,对金庸全集进行精确分词,获得了1MB/s的速度,是单进程版的3.3倍。

其他词典

占用内存较小的词典文件 https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.small
支持繁体分词更好的词典文件 https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.big
下载你所需要的词典,然后覆盖jieba/dict.txt 即可或者用jieba.set_dictionary('data/dict.txt.big')

模块初始化机制的改变:lazy load (从0.28版本开始)

jieba采用延迟加载,"import jieba"不会立即触发词典的加载,一旦有必要才开始加载词典构建trie。如果你想手工初始jieba,也可以手动初始化。

import jieba
jieba.initialize()  # 手动初始化(可选)

在0.28之前的版本是不能指定主词典的路径的,有了延迟加载机制后,你可以改变主词典的路径:

jieba.set_dictionary('data/dict.txt.big')

例子:

#encoding=utf-8
import sys
sys.path.append("../")
import jiebadef cuttest(test_sent):result = jieba.cut(test_sent)print " ".join(result)def testcase():cuttest("这是一个伸手不见五指的黑夜。我叫孙悟空,我爱北京,我爱Python和C++。")                                        
if __name__ == "__main__":testcase()jieba.set_dictionary("foobar.txt")print "================================"testcase()

关键词提取
基于 TF-IDF 算法的关键词抽取import jieba.analysejieba.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 频率文件
代码示例 (关键词提取)
import jieba.analyse
text = "我有一头小毛驴!"
tags = jieba.analyse.extract_tags(text,3)
print "基于 TF-IDF 算法的关键词抽取"," / ".join(tags)
关键词提取所使用逆向文件频率(IDF)文本语料库可以切换成自定义语料库的路径用法: jieba.analyse.set_idf_path(file_name) # file_name为自定义语料库的路径自定义语料库示例:https://github.com/fxsjy/jieba/blob/master/extra_dict/idf.txt.big用法示例:https://github.com/fxsjy/jieba/blob/master/test/extract_tags_idfpath.py关键词提取所使用停止词(Stop Words)文本语料库可以切换成自定义语料库的路径用法: jieba.analyse.set_stop_words(file_name) # file_name为自定义语料库的路径自定义语料库示例:https://github.com/fxsjy/jieba/blob/master/extra_dict/stop_words.txt用法示例:https://github.com/fxsjy/jieba/blob/master/test/extract_tags_stop_words.py关键词一并返回关键词权重值示例用法示例:https://github.com/fxsjy/jieba/blob/master/test/extract_tags_with_weight.py基于 TextRank 算法的关键词抽取jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) 直接使用,接口相同,注意默认过滤词性。jieba.analyse.TextRank() 新建自定义 TextRank 实例算法论文: TextRank: Bringing Order into Texts基本思想:将待抽取关键词的文本进行分词以固定窗口大小(默认为5,通过span属性调整),词之间的共现关系,构建图计算图中节点的PageRank,注意是无向带权图使用示例
import jieba.analyse
text = "我有一头小毛驴!"
tags = jieba.analyse.textrank(text,3)
print "基于 TextRank 算法的关键词抽取"," / ".join(tags)

Python jiba 分词相关推荐

  1. 【NLP】jieba分词-Python中文分词领域的佼佼者

    1. jieba的江湖地位 NLP(自然语言)领域现在可谓是群雄纷争,各种开源组件层出不穷,其中一支不可忽视的力量便是jieba分词,号称要做最好的 Python 中文分词组件. "最好的& ...

  2. 斯坦福python中文分词stanza

    斯坦福python中文分词stanza 1 下载 Stanford CoreNLP相关文件 下载完整的组件 https://stanfordnlp.github.io/CoreNLP/index.ht ...

  3. python jieba分词_从零开始学自然语言处理(八)—— jieba 黑科技

    小编喜欢用 jieba 分词,是因为它操作简单,速度快,而且可以添加自定义词,从而让 jieba 分出你想要分出的词,特别适用于特定场景的中文分词任务. 然鹅,万事都有两面性,jieba 分词这么好用 ...

  4. Python中文分词及词频统计

    Python中文分词及词频统计 中文分词 中文分词(Chinese Word Segmentation),将中文语句切割成单独的词组.英文使用空格来分开每个单词的,而中文单独一个汉字跟词有时候完全不是 ...

  5. python结巴分词实例_python 结巴分词(jieba)详解

    "结巴"中文分词:做最好的 Python 中文分词组件 "Jieba" (Chinese for "to stutter") Chinese ...

  6. python 中文分词工具

    python 中文分词工具 jieba,https://github.com/fxsjy/jieba jieba_fast,https://github.com/deepcs233/jieba_fas ...

  7. 导出微信聊天记录,使用python进行分词,生成词云

    导出微信聊天记录,使用python进行分词,生成词云 导出微信聊天记录,使用python进行分词,生成词云 备份数据 浏览.导出数据 查看数据 操作数据库,分析生成词云 下载全部文件 导出微信聊天记录 ...

  8. Python 英文分词

    Python 英文分词,词倒排索引 [一.一般多次查询] ''' Created on 2015-11-18 ''' #encoding=utf-8# List Of English Stop Wor ...

  9. 『开发技术』Python中文分词工具SnowNLP教程

    介绍一个好用多功能的Python中文分词工具SnowNLP,全称Simplified Chinese Text Processing.在实现分词的同时,提供转换成拼音(Trie树实现的最大匹配)及繁体 ...

  10. “结巴”中文分词:做最好的 Python 中文分词组件

    jieba "结巴"中文分词:做最好的 Python 中文分词组件 "Jieba" (Chinese for "to stutter") C ...

最新文章

  1. [Quick-x]制作新手引导高亮区域方法之二:裁剪模式
  2. 热门云服务超87GB电子邮箱和密码泄露,黑客已验证大部分数据
  3. 那个好好玩的特效,每个人都可以做到哦
  4. npm执行命令后无任何响应(windows下)
  5. 形位公差符号大全_玩转CAD快捷键(大全),一篇文章就够了
  6. C# OpenTK教程 - 目录
  7. vi保存退出:x与:wq的区别
  8. linux网络命令详解
  9. ActivityMq的使用(小例子)
  10. linux下载安装花生壳
  11. 回顾2020年(1)
  12. 计算机辅助翻译实践总结,trados计算机辅助翻译实践报告材料
  13. 448. Find All Numbers Disappeared in an Array -- Python
  14. Excel实现行列转换的三种方式
  15. java版本电子招标采购系统源码—企业战略布局下的采购
  16. 2022年9月电子学会Python等级考试试卷(一级)答案解析
  17. 小学计算机基础知识题目,小学信息技术基础知识复习题(清华版第三册)
  18. linux下usb转串口驱动分析
  19. codeforces 545D. Queue
  20. 刘慈欣:元宇宙将是整个人类文明的一次内卷

热门文章

  1. 感谢同事的临别赠言,愿自己一路顺风
  2. 武汉市星创天地申报条件和程序
  3. 转载:Fiddler 教程
  4. 【产品功能】弹性网卡支持私网多IP
  5. 百度2005年面试题
  6. 知乎上的那些神回复,已笑趴~~~
  7. java 词频统计_Java实现的词频统计
  8. ubantu软件安装
  9. IDEA中TODO的使用、配置和设置TODO过滤器
  10. lh服务器注册,登不进去的人请看这里:LH服无法登录问题官方解释