• jieba三种分词模式1

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

    1. 基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)
    2. 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
    3. 对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法
  • 主要功能代码示范

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

import jieba
jieba.initialize() # 手工初始化
jieba.set_dictionary('data/dict.txt.big') # 改变主词典的路径

1.分词

jieba.cut(“String”, cut_all = Defalt False采用精确模式\True采用全模式, HMM = 是否采用隐式马尔可夫模型)
import jieba
seg_list = jieba.cut("我来到北京清华大学", cut_all= True) # 全模式
print("Full Mode:"+"/".join(seg_list))
seg_list = jieba.cut("我来到北京清华大学", cut_all= False) # 精确模式
print("Accurte Mode:"+"/".join(seg_list))
seg_list = jieba.cut("我来到北京清华大学", cut_all= False, HMM= False) # 不用HMM
print("Accurate Mode with No Hiden Markov Model:"+"/".join(seg_list))
print(type(seg_list))
print(seg_list)
Full Mode:我/来到/北京/清华/清华大学/华大/大学
Accurte Mode:我/来到/北京/清华大学
Accurate Mode with No Hiden Markov Model:我/来到/北京/清华大学
<class 'generator'>
<generator object Tokenizer.cut at 0x00000176126972A0>
jieba.cut_for_search(“Sting to be segmented”, HMM = 是否采用隐式马尔可夫模型)
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")  # 搜索引擎模式
print(", ".join(seg_list)) # 搜索引擎模式
print(type(seg_list))
print(seg_list)
小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, ,, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造
<class 'generator'>
<generator object Tokenizer.cut_for_search at 0x00000176126972A0>
jieba.lcut() jieba.lcut_for_search()返回list结构
seg_list = jieba.lcut("我来到北京清华大学") # 精确模式,返回list
print(type(seg_list))
print(seg_list)
print("\n")
seg_list = jieba.lcut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")  # 搜索引擎模式,返回list00
print(type(seg_list))
print(seg_list)
<class 'list'>
['我', '来到', '北京', '清华大学']

<class 'list'>
['小明', '硕士', '毕业', '于', '中国', '科学', '学院', '科学院', '中国科学院', '计算', '计算所', ',', '后', '在', '日本', '京都', '大学', '日本京都大学', '深造']

2.添加自定义词典

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

  1. 词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。
  2. 词频省略时使用自动计算的能保证分出该词的词频
  3. file_name 若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码。
jieba.load_userdict(file_name) 载入词典
动态修改词典
1. add_word(word, freq = None词频, tag = True词性)
2. del_word(word)
3. siuggest_freq(segment, tune= True) 可调节单个词语的词频,使其能(或不能)被分出来。
print("/".join(jieba.cut("如果放到post中将出错", HMM= False)))
jieba.suggest_freq(("中","将"), True)
print("/".join(jieba.cut("如果放到post中将出错", HMM= False)))
如果/放到/post/中将/出错
如果/放到/post/中/将/出错
print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False)))
jieba.suggest_freq('台中', True)
print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False)))
「/台/中/」/正确/应该/不会/被/切开
「/台中/」/正确/应该/不会/被/切开

3.关键字提取

基于IF-IDF算法的关键词抽取
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
  1. sentence 为待提取的文本
  2. topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
  3. withWeight 为是否一并返回关键词权重值,默认值为 False
  4. allowPOS 仅包括指定词性的词,默认值为空,即不筛选

jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 实例,idf_path 为 IDF 频率文件

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

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

基于TextRank算法的关键词抽取

jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=(‘ns’, ‘n’, ‘vn’, ‘v’)) 直接使用,接口相同,注意默认过滤词性。

jieba.analyse.TextRank() 新建自定义TextRank示例

4.词性标注

jieba.posseg.POSTokenizer(tokenizer=None) 新建自定义分词器,tokenizer 参数可指定内部使用的 jieba.Tokenizer 分词器。jieba.posseg.dt 为默认词性标注分词器。

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

5.并行分词

将目标文本按行分隔后,把各行文本分配到多个 Python 进程并行分词,然后归并结果,从而获得分词速度的可观提升.

基于 python 自带的 multiprocessing 模块,目前暂不支持 Windows

6.Tokenize返回词语在原文的起止位置

输入参数只接受 unicode
jieba.tokenize(u"segment", mode= “default” or “search”, HMM=Ture)

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

7.ChineseAnalyzer for Whoosh搜索引擎

8.命令行分词

python -m jieba [options] filename

  1. fxsjy,jieba official document,github,2018.12 ↩︎

  2. Quant_By_Python,精确率(Precision、查准率)与召回率(Recall Rate、查全率),CSDN,2019.6 ↩︎

Python中文分词库jieba用法代码示例相关推荐

  1. Python中文分词库——jieba的用法

    1.介绍 jieba是优秀的中文分词第三方库.由于中文文本之间每个汉字都是连续书写的,我们需要通过特定的手段来获得其中的每个单词,这种手段就叫分词.而jieba是Python计算生态中非常优秀的中文分 ...

  2. python dateformatter_Python dates.DateFormatter方法代码示例

    本文整理汇总了Python中matplotlib.dates.DateFormatter方法的典型用法代码示例.如果您正苦于以下问题:Python dates.DateFormatter方法的具体用法 ...

  3. python paperclip_Python pyplot.sca方法代码示例

    本文整理汇总了Python中matplotlib.pyplot.sca方法的典型用法代码示例.如果您正苦于以下问题:Python pyplot.sca方法的具体用法?Python pyplot.sca ...

  4. python fonttool_Python wx.Font方法代码示例

    本文整理汇总了Python中wx.Font方法的典型用法代码示例.如果您正苦于以下问题:Python wx.Font方法的具体用法?Python wx.Font怎么用?Python wx.Font使用 ...

  5. python res_Python models.resnet152方法代码示例

    本文整理汇总了Python中torchvision.models.resnet152方法的典型用法代码示例.如果您正苦于以下问题:Python models.resnet152方法的具体用法?Pyth ...

  6. python画折线图代码实现_python如何绘制分布折线图 python绘制分布折线图代码示例...

    python如何绘制分布折线图?本篇文章小编给大家分享一下python绘制分布折线图代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 用Pyth ...

  7. python dropout_Python slim.dropout方法代码示例

    本文整理汇总了Python中tensorflow.contrib.slim.dropout方法的典型用法代码示例.如果您正苦于以下问题:Python slim.dropout方法的具体用法?Pytho ...

  8. python batch_size_Python config.batch_size方法代码示例

    本文整理汇总了Python中config.batch_size方法的典型用法代码示例.如果您正苦于以下问题:Python config.batch_size方法的具体用法?Python config. ...

  9. python pool_Python pool.Pool方法代码示例

    本文整理汇总了Python中multiprocessing.pool.Pool方法的典型用法代码示例.如果您正苦于以下问题:Python pool.Pool方法的具体用法?Python pool.Po ...

  10. python nextpow2_Python signal.hann方法代码示例

    本文整理汇总了Python中scipy.signal.hann方法的典型用法代码示例.如果您正苦于以下问题:Python signal.hann方法的具体用法?Python signal.hann怎么 ...

最新文章

  1. DataGridView使用技巧十一:DataGridView用户输入时,单元格输入值的设定
  2. connect time out 获取token失败_Power Query之获取钉钉日志自动刷新Power BI报告
  3. 使用JSF 2.2功能来开发可滚动,可延迟加载的Ajax数据表
  4. IDEA—使用插件反编译jar包
  5. JavaWeb前台异常处理
  6. 聊聊Lambda架构
  7. Linux下如何从mysql数据库里导出导入数据
  8. 方法级别的java日志输出控制(一)
  9. Markdown接口文档模板
  10. ERP能力计划与排产
  11. 推荐一个磁盘清理工具
  12. Python-计算三角形边长和面积
  13. 从单体应用到微服务开发旅程
  14. 5G手机今日“下凡”,价格大战暗流涌动
  15. charles对iOS手机的https进行抓包(图文教程)
  16. Matlab R2020a + Yalmip + IBM ILOG CPLEX Optimization Studio V12.10
  17. java生成8位的uuid_分布式系统全局唯一ID简介、特点、生成
  18. dlink客户端 android,DLink IP Cam Viewer by OWLR
  19. linux里nohup用法,小飞博客-Linux nohup用法
  20. 【因果学习】因果推断分析

热门文章

  1. 嵌入式开发日记(6)——对串口数据读取的优化以及处理程序的改写
  2. 问题:加入导航条后webView的UIWebBrowserView位置偏移
  3. tm影像辐射定标_ENVI中TM的辐射定标和大气校正
  4. pandas 二维表与一维记录的转换
  5. android 汉字拼音排序,Android实现中文按拼音排序方法
  6. 《游戏系统设计四》游戏资源系统太复杂? 啥?你不会?一步一步带你分析并实现,源码直接拿走
  7. java版 简易斗地主(三)
  8. HRBUST 1212 乘积最大
  9. 移动硬盘打不开提示格式化怎么办?
  10. 机器视觉镜头基础知识详解