当前位置:   article > 正文

jieba分词浅析---关键词提取_jieba关键词提取

jieba关键词提取

最近公司在做一个分词的项目,所以对分词有所研究,再经过整个项目的不断调整逐渐对分词有了更深入的了解,下面是我自己对分词的一些理解,希望能对大家有一定的帮助,也希望大家多多指点,如果有什么不对的地方请尽情留言,大家共同探讨进步。好了,话不多说上干货!!!

一.关键词提取的算法选择
jieba分词为我们提供了两种算法的选择:TF-IDF算法和TextRank算法
1.TF-IDF算法:
如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
2.TextRank算法:
TextRank 算法是一种用于文本的基于图的排序算法。其基本思想来源于谷歌的 PageRank算法, 通过把文本分割成若干组成单元(单词、句子)并建立图模型, 利用投票机制对文本中的重要成分进行排序, 仅利用单篇文档本身的信息即可实现关键词提取、文摘。和 LDA、HMM 等模型不同, TextRank不需要事先对多篇文档进行学习训练, 因其简洁有效而得到广泛应用。
虽然TextRank算法看起来比较高级和方便,但其实其效率并没有什么太大的优势。
点击查看两种算法的比对试验
实验结果表明TextRank与TFIDF均严重依赖于分词结果——如果某词在分词时被切分成了两个词,那么在做关键词提取时无法将两个词黏合在一起(TextRank有部分黏合效果,但需要这两个词均为关键词)。因此是否添加标注关键词进自定义词典,将会造成准确率、召回率大相径庭。
TextRank的效果并不优于TFIDF,TextRank虽然考虑到了词之间的关系,但是仍然倾向于将频繁词作为关键词。此外,由于TextRank涉及到构建词图及迭代计算,所以提取速度较慢。
综上所述,我选择了TFIDF算法做为关键词提取的算法。

二.关键词提取

import jieba.analyse
  • 1

jieba.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 频率文件

具体代码很简单我就不引入了。这里有个点需要注意就是topK,如果你要分词的内容很短在百字左右,建议你的关键词只取2-5个就可以了,太多了并不具有代表性,反而不好。另外词性的筛选根据个人需要可以选择添加。

三.提高关键词提取的准确性
许多人在提取关键词后会发现提取的关键词并不准确,造成这样的原因有很多,接下来我给大家一一解说。
1.分词的准确
要知道关键词的提取第一步预处理,首先进行分词和词性标注,将满足指定词性的词作为候选词,而如果分词出现问题,就会导致关键词的提取出现了偏差,就跟盖楼一样,地基不稳楼也就盖不好了。
提高分词的方法就是自定义分词,通过加载自定义分词,保证自己需要得到分词能够准确的被分出来。

 jieba.load_userdict(file_name)
  • 1

除了自定义分词还有去停词
去停词有两种方式,一种是使用关键词组件中的停止词模块

 jieba.analyse.set_stop_words(file_name) 
  • 1

通过这种方式可以在提取关键词的时候将不想要的词语去除。
还有一种方式就是通过代码的手段将不想要的词语去除,这种方式一个是可以起到数据清洗的作用,可以将一些特殊符号,英文,数字去掉。另一个就是在IDF训练时能起到一定的作用,这个在后面展开。
下面上代码

    #将需要去掉的词写在一
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/281568
    推荐阅读
    相关标签
      

    闽ICP备14008679号