自定义的词典格式如下:
词语 词频(可省略) 词性(可省略)
至于词频和词性后面会说
自定义一个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) """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