jieba:我虽然结巴,但是我会分词啊

介绍

jieba目前是一款比较好分词模块

分词

python

import jieba

# 可以使用jieba.cut进行分词
sentence = "失去恋人所带来的苦痛远远超过了他的承受范围"
"""
函数大致如下
jieba.cut(sentence, cut_all=False, HMM=True)

sentence:分词的句子
cut_all:是否使用全模式,默认是False,表示精准模式
HMM:是否使用隐藏马尔科夫模型,默认为True
"""
seg = jieba.cut(sentence)
# 得到的seg是一个生成器
print(list(seg))  # [‘失去‘, ‘恋人‘, ‘所‘, ‘带来‘, ‘的‘, ‘苦痛‘, ‘远远‘, ‘超过‘, ‘了‘, ‘他‘, ‘的‘, ‘承受‘, ‘范围‘]
# 可以看到分的还是蛮准确的

# 如果使用全模式呢
seg = jieba.cut(sentence, cut_all=True)
print(list(seg))  # [‘失去‘, ‘恋人‘, ‘所‘, ‘带来‘, ‘的‘, ‘苦痛‘, ‘远远‘, ‘远超过‘, ‘超过‘, ‘了‘, ‘他‘, ‘的‘, ‘承受‘, ‘范围‘]

# 默认一般都是用精准模式

# 除了jieba.cut之外还有一个jieba.lcut,两者之间功能一样,只不过后者会直接返回一个列表

# 搜索引擎模式
seg = jieba.cut_for_search(sentence)
print(list(seg))  # [‘失去‘, ‘恋人‘, ‘所‘, ‘带来‘, ‘的‘, ‘苦痛‘, ‘远远‘, ‘超过‘, ‘了‘, ‘他‘, ‘的‘, ‘承受‘, ‘范围‘]
# 由于句子比较简单,导致和cut的结果是类似的
# 同理也有lcut_for_search,也是直接返回一个列表

添加自定义词典

python

import jieba

# 可以使用jieba.cut进行分词
sentence = "古明地觉来自于东方地灵殿,是一个超级可爱的女孩"
print(jieba.lcut(sentence))  # [‘古明‘, ‘地觉‘, ‘来自‘, ‘于‘, ‘东方‘, ‘地灵‘, ‘殿‘, ‘,‘, ‘是‘, ‘一个‘, ‘超级‘, ‘可爱‘, ‘的‘, ‘女孩‘]

# 注意到,古明地觉四个字被进行了切割,可以如果我想让它作为整体出现呢
# jieba分词会使用一个词典,根据词典里面的词进行分词,如果像人名之类的,不再jieba使用的词典里,那么分词就会出现不预期之内的结果

# 所以我们可以自定义词典,追加到jieba使用的词典里面

自定义的词典格式如下:

词语 词频(可省略) 词性(可省略)

至于词频和词性后面会说

自定义一个1.txt文件,里面包含内容如下

古明地觉
东方地灵殿

python

import jieba

sentence = "古明地觉来自于东方地灵殿,是一个超级可爱的女孩"
print(jieba.lcut(sentence))  # [‘古明‘, ‘地觉‘, ‘来自‘, ‘于‘, ‘东方‘, ‘地灵‘, ‘殿‘, ‘,‘, ‘是‘, ‘一个‘, ‘超级‘, ‘可爱‘, ‘的‘, ‘女孩‘]

jieba.load_userdict("1.txt")
print(jieba.lcut(sentence))  # [‘古明地觉‘, ‘来自‘, ‘于‘, ‘东方地灵殿‘, ‘,‘, ‘是‘, ‘一个‘, ‘超级‘, ‘可爱‘, ‘的‘, ‘女孩‘]

# 可以看到,在将我们自定义的词典load进去之后,就能分出我们想要的结果了
# 因为jieba使用词典里的单词,词性标注,词频等等来切割单词
# 但如果词不在里面的话,就不行了,因此我们可以自己定义告诉结巴,‘古明地觉‘和‘东方地灵殿‘都是一个整体,不要进行切割

除此之外,还可以不用通过加载文件的方式来加载词典

python

import jieba

sentence = "古明地觉来自于东方地灵殿,是一个超级可爱的女孩"
print(jieba.lcut(sentence))  # [‘古明‘, ‘地觉‘, ‘来自‘, ‘于‘, ‘东方‘, ‘地灵‘, ‘殿‘, ‘,‘, ‘是‘, ‘一个‘, ‘超级‘, ‘可爱‘, ‘的‘, ‘女孩‘]

# 通过add_word的方式同样可以添加我们自己定义的词语
jieba.add_word("古明地觉")
jieba.add_word("东方地灵殿")
print(jieba.lcut(sentence))  # [‘古明地觉‘, ‘来自‘, ‘于‘, ‘东方地灵殿‘, ‘,‘, ‘是‘, ‘一个‘, ‘超级‘, ‘可爱‘, ‘的‘, ‘女孩‘]

# 当然也可以动态参数
jieba.del_word("东方地灵殿")
print(jieba.lcut(sentence))  # [‘古明地觉‘, ‘来自‘, ‘于‘, ‘东方‘, ‘地灵‘, ‘殿‘, ‘,‘, ‘是‘, ‘一个‘, ‘超级‘, ‘可爱‘, ‘的‘, ‘女孩‘]

# 可以看到,在删除‘东方地灵殿‘之后,又分的不准了

关键词提取

jieba 提供了两种关键词提取方法,分别基于 TF-IDF 算法和 TextRank 算法。

  • TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率)

    一个词语在一篇文章中出现次数越多,同时在所有文档中出现次数越少,越能够代表该文章

    python

    import jieba
    import jieba.analyse
    
    sentence = """
    
    地灵殿的主人。
    虽然地底都市已经被排除在地狱之外,但那些曾经是地狱设施的遗迹里
    依然还残留着无数充满怨念的灵们,因而必须有人对他们进行管理。
    在灼热地狱遗址上建立起了地灵殿,她就在那里居住了下来。
    因为她能够读取他人心中的想法,不管是任何妖怪,怨灵都为之感到恐惧,
    不知从何时起几乎没有人再来地灵殿造访了。
    但是,相反因为能读心而受到那些不会说话的动物们的喜爱,地灵殿逐渐
    变成了充满火焰猫,地狱鸦等宠物们的房屋。
    因为宠物的增多结果导致灼热地狱遗迹无法完美的管理,最后只得把很多
    管理事项交由宠物们去做。
    把宠物的管理交给宠物去做。
    把庭院的修缮交给宠物去做。
    把陪妹妹玩的工作交给宠物去做,如此。
    但是,突然出现不应该出现的地上的人类,在听说怨灵和间歇泉异变
    之后她大吃一惊。
    怨灵的管理她交由阿燐去做,灼热地狱的火力调节则交给了阿空。
    她们应该都是忠心于觉不会做什么坏事才对。她相信决不会发生
    什么异变才对。
    搞不好,也许是眼前这个人类撒谎有什么别的企图,她这么想着。
    读了那人类心中的想法之后,她又吃了一惊。
    她们的心中,几乎没有任何关于怨灵和间歇泉的情报。
    觉诧异了,她决定先试探一下她们。
    """
    for x in jieba.analyse.extract_tags(sentence, withWeight=True):
        """
        接收参数如下:
        sentence:句子
        topK:返回几个 TF/IDF 权重最大的关键词,默认值为20
        withWeight:是否一并返回关键词权重值,默认值为 False
        allowPOS:仅包括指定词性的词,默认值为空
        """
        print(x)
    """
    (‘宠物‘, 0.42209719717412125)
    (‘地灵‘, 0.31035309971636366)
    (‘地狱‘, 0.29652634405236367)
    (‘怨灵‘, 0.2898125455248485)
    (‘灼热‘, 0.16584643925200002)
    (‘交给‘, 0.1567760269529697)
    (‘管理‘, 0.14164445757030303)
    (‘异变‘, 0.13837298184484847)
    (‘间歇泉‘, 0.13345825326181818)
    (‘她们‘, 0.11076269718599999)
    (‘交由‘, 0.10921610331818181)
    (‘人类‘, 0.10237571981272728)
    (‘心中‘, 0.09523635988763636)
    (‘遗迹‘, 0.09067494210703031)
    (‘想法‘, 0.08044421223127274)
    (‘充满‘, 0.07707872184351516)
    (‘因为‘, 0.07360687520381819)
    (‘灵们‘, 0.07245313638121212)
    (‘读心‘, 0.07245313638121212)
    (‘鸦等‘, 0.07245313638121212)
    """
    
  • 基于 TextRank 算法的关键词提取

    python

    import jieba
    import jieba.analyse
    
    sentence = """
    
    地灵殿的主人。
    虽然地底都市已经被排除在地狱之外,但那些曾经是地狱设施的遗迹里
    依然还残留着无数充满怨念的灵们,因而必须有人对他们进行管理。
    在灼热地狱遗址上建立起了地灵殿,她就在那里居住了下来。
    因为她能够读取他人心中的想法,不管是任何妖怪,怨灵都为之感到恐惧,
    不知从何时起几乎没有人再来地灵殿造访了。
    但是,相反因为能读心而受到那些不会说话的动物们的喜爱,地灵殿逐渐
    变成了充满火焰猫,地狱鸦等宠物们的房屋。
    因为宠物的增多结果导致灼热地狱遗迹无法完美的管理,最后只得把很多
    管理事项交由宠物们去做。
    把宠物的管理交给宠物去做。
    把庭院的修缮交给宠物去做。
    把陪妹妹玩的工作交给宠物去做,如此。
    但是,突然出现不应该出现的地上的人类,在听说怨灵和间歇泉异变
    之后她大吃一惊。
    怨灵的管理她交由阿燐去做,灼热地狱的火力调节则交给了阿空。
    她们应该都是忠心于觉不会做什么坏事才对。她相信决不会发生
    什么异变才对。
    搞不好,也许是眼前这个人类撒谎有什么别的企图,她这么想着。
    读了那人类心中的想法之后,她又吃了一惊。
    她们的心中,几乎没有任何关于怨灵和间歇泉的情报。
    觉诧异了,她决定先试探一下她们。
    """
    for x in jieba.analyse.textrank(sentence, withWeight=True):
        """
        接收参数如下,和extract_tags参数一致,但allowPOS默认值不会空:
        sentence:句子
        topK:返回几个 TF/IDF 权重最大的关键词,默认值为20
        withWeight:是否一并返回关键词权重值,默认值为 False
        allowPOS:仅包括指定词性的词,默认值不为空
        """
        print(x)
    """
    (‘宠物‘, 1.0)
    (‘地狱‘, 0.8169410022497963)
    (‘管理‘, 0.7111631257164159)
    (‘怨灵‘, 0.6872520018950034)
    (‘交给‘, 0.5766849288790858)
    (‘不会‘, 0.5671709845112852)
    (‘地灵‘, 0.5418423145115177)
    (‘人类‘, 0.4235967140492308)
    (‘怨念‘, 0.40976053284203795)
    (‘遗迹‘, 0.3890312542892664)
    (‘出现‘, 0.38728082208337444)
    (‘异变‘, 0.3678994864195963)
    (‘间歇泉‘, 0.3523723288507097)
    (‘导致‘, 0.3217237709168045)
    (‘读心‘, 0.3193653873378865)
    (‘受到‘, 0.29192544019397326)
    (‘听说‘, 0.2910761395893028)
    (‘说话‘, 0.28670968889003423)
    (‘动物‘, 0.28639826197065527)
    (‘试探‘, 0.2805685960379144)
    """

词性标注

jieba.cut只是分词,其实jieba.posseg.cut在分词的时候还能给出词性

python

import jieba.posseg

sentence = "古明地觉是一个可爱的女孩子"
# 这里的tag表示单词的词性,nr表示人名
jieba.add_word("古明地觉", tag="nr")
for k, v in jieba.posseg.lcut(sentence):
    print(k, v)
"""
古明地觉 nr
是 v
一个 m
可爱 v
的 uj
女孩子 n
"""
# n: 名词  ns: 地名  vn: 名动词  v: 动词  nr: 人名,不在这里面的会被过滤掉

原文地址:https://www.cnblogs.com/valorchang/p/11395457.html

时间: 2024-10-13 03:30:08

jieba:我虽然结巴,但是我会分词啊的相关文章

【Python】用Python的“结巴”模块进行分词

之前都是用计算所的分词工具进行分词,效果不错但是比较麻烦,最近开始用Python的"结巴"模块进行分词,感觉非常方便.这里将我写的一些小程序分享给大家,希望对大家有所帮助. 下面这个程序是对一个文本文件里的内容进行分词的程序:test.py #!/usr/bin/python #-*- encoding:utf-8 -*- import jieba #导入jieba模块 def splitSentence(inputFile, outputFile): fin = open(input

.net 的一个分词系统(jieba中文分词的.NET版本:jieba.NET)

简介 平时经常用Python写些小程序.在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词.jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以到它的在线演示站点体验下(注意第三行文字). .NET平台上常见的分词组件是盘古分词,但是已经好久没有更新了.最明显的是内置词典,jieba的词典有50万个词条,而盘古的词典是17万,这样会造成明显不同的分词效果.另外,对于未登录词,jieba“采用了基于汉字成词能力的HMM模型,使用了Viterb

jieba中文分词的.NET版本:jieba.NET

简介 平时经常用Python写些小程序.在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词.jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以到它的在线演示站点体验下(注意第三行文字). .NET平台上常见的分词组件是盘古分词,但是已经好久没有更新了.最明显的是内置词典,jieba的词典有50万个词条,而盘古的词典是17万,这样会造成明显不同的分词效果.另外,对于未登录词,jieba“采用了基于汉字成词能力的HMM模型,使用了Viterb

(转)jieba中文分词的.NET版本:jieba.NET

简介 平时经常用Python写些小程序.在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词.jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以到它的在线演示站点体验下(注意第三行文字). .NET平台上常见的分词组件是盘古分词,但是已经好久没有更新了.最明显的是内置词典,jieba的词典有50万个词条,而盘古的词典是17万,这样会造成明显不同的分词效果.另外,对于未登录词,jieba“采用了基于汉字成词能力的HMM模型,使用了Viterb

文本挖掘——jieba分词

python 结巴分词(jieba)学习 特点 1,支持三种分词模式: a,精确模式,试图将句子最精确地切开,适合文本分析:     b,全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义:     c,搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词. 2,支持繁体分词 3,支持自定义词典 安装 1,Python 2.x 下的安装 全自动安装 :easy_install jieba 或者 pip install jieba 半自动安

Python分词模块推荐:jieba中文分词

一.结巴中文分词采用的算法 基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG) 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合 对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法 二.结巴中文分词支持的分词模式 目前结巴分词支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析: 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义: 搜索引擎模式,在精确模式的基础上,对长词

jieba分词工具的使用

烦烦烦( ˇ?ˇ ) http://www.oschina.net/p/jieba/  搬运工..... jieba "结巴"中文分词:做最好的Python中文分词组件 "Jieba". Feature 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析: 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义: 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词. 支持繁体分词 支持自定义词典

中文分词工具简介与安装教程(jieba、nlpir、hanlp、pkuseg、foolnltk、snownlp、thulac)

2.1 jieba 2.1.1 jieba简介 Jieba中文含义结巴,jieba库是目前做的最好的python分词组件.首先它的安装十分便捷,只需要使用pip安装:其次,它不需要另外下载其它的数据包,在这一点上它比其余五款分词工具都要便捷.另外,jieba库支持的文本编码方式为utf-8. Jieba库包含许多功能,如分词.词性标注.自定义词典.关键词提取.基于jieba的关键词提取有两种常用算法,一是TF-IDF算法:二是TextRank算法.基于jieba库的分词,包含三种分词模式: 精准

jieba分词器

始终觉得官方文档是最好的学习途径.嗯,我只是一个大自然的搬运工. 分词 jieba.cut 方法接受三个输入参数: 需要分词的字符串:cut_all 参数用来控制是否采用全模式:HMM 参数用来控制是否使用 HMM 模型 jieba.cut_for_search 方法接受两个参数:需要分词的字符串:是否使用 HMM 模型.该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细 待分词的字符串可以是 unicode 或 UTF-8 字符串.GBK 字符串.注意:不建议直接输入 GBK 字符串,可能无