当前位置:   article > 正文

【NLP Tool -- JieBa】Jieba实现TF-IDF和TextRank文本关键字提取(附代码)_textrank代码实现

textrank代码实现

NLP Tool 专栏:NLP Tool_北村南的博客-CSDN博客

目录

JieBa

介绍

安装

TF-IDF

算法思想

实现步骤

代码实现

实现效果

TextRank

算法思想

实现步骤

代码实现

实现效果

参考资料


JieBa

介绍

Jieba工具主要应用于Python文本分析,其最强大的功能在于分词

在关键字提取方面,Jieba库提供了两个封装算法Tf-IdfText-Rank

安装

pip install jieba

TF-IDF

算法思想

如果一个候选词在本文段中出现多次,而在其他文段中出现的次数较少,则可认为其对于本文段较为重要,即关键词。

实现步骤

1 将待提取关键词的文本进行分词

2 载入自定义词典(可省略),虽然jieba有识别新词的能力,但是使用自定义词典可以提高分词准确率,如下

jieba.load_userdict('cidian.txt')

 jieba中的词性分类标签如下

3 自定义逆向文件频率(IDF)文本语料库,从而实现动态更新自己的语料库

4 自定义停用词

5 对分词进行词性标注处理,过滤提用词,保留候选关键词

6 计算各个分词的tf*idf值,并进行倒序排序,得到最重要的N个词,即为关键词

代码实现

  1. # -*- coding: utf-8 -*-
  2. import jieba
  3. import jieba.analyse
  4. jieba.load_userdict('cidian.txt')
  5. text=''
  6. with open ('demo.txt', 'r', encoding='utf-8') as file:
  7. for line in file:
  8. line=line.strip()
  9. text+=line#将需要的文本读取到text中
  10. print(jieba.analyse.extract_tags(text,topK=5,
  11. withWeight=False, allowPOS=('ns', 'n', 'vn', 'v','nt','nw',
  12. 'nz','v','vd','vn','a','an','LOC')))

实现效果

TextRank

算法思想

将整篇文章看做一个超平面,每个词看做一个点,一个点周围有越多的点靠近它,那么这个点就是处于核心位置,也就是关键词。

实现步骤

1 将待提取关键词的文本进行分词

2 对分词进行词性标注处理,过滤提用词,保留候选关键词

3 使用滑窗实现词之间的共现关系,构建图,两个节点之间存在边仅当它们对应的词汇在长度为K的窗口中共现

4 根据上述公式,迭代传播各节点的权重,直至收敛

5 对节点权重进行倒序排序,得到最重要的N个词,即为关键词

代码实现

  1. # -*- coding: utf-8 -*-
  2. import jieba
  3. import jieba.analyse
  4. #分词和分字,并输出到文件中
  5. vocab={}
  6. cs={}
  7. text=''
  8. with open ('demo.txt', 'r', encoding='utf-8') as file:
  9. for line in file:
  10. line=line.strip()
  11. text+=line#将需要的文本读取到text中
  12. #分字
  13. for c in line:
  14. cs[c]=0
  15. #分词
  16. for word in jieba.cut(line):
  17. vocab[word]=0
  18. #将分词和分字的结果保留到文本文件中
  19. with open ('cs.txt', 'w', encoding='utf-8') as csf:
  20. for c in cs.keys():
  21. csf.write(c+'\n')
  22. with open ('vocab.txt', 'w', encoding='utf-8') as vf:
  23. for w in vocab.keys():
  24. vf.write(w+'\n')
  25. print(jieba.analyse.textrank(text, topK=5,
  26. withWeight=False, allowPOS=('ns', 'n', 'vn', 'v','nt','nw',
  27. 'nz','v','vd','vn','a','an','LOC')))

实现效果

参考资料

Textrank原始论文:mihalcea.emnlp04.pdf (umich.edu)

TF-IDF官方代码:GitHub - fxsjy/jieba: 结巴中文分词

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/281600
推荐阅读
相关标签
  

闽ICP备14008679号