python 关键词抽取工具

前言

依任务需要,对多种关键词抽取工具进行比较,测试、调研。特此记录相关调用方法及最终评测结果。

1、jieba

Github地址:https://github.com/fxsjy/jieba/
安装:pip install jieba -i https://pypi.douban.com/simple/

基于 TextRank 算法的关键词抽取

import jieba
def keyword_extraction(content):
    """TextRank关键词抽取"""
    keywords = jieba.analyse.textrank(content, topK=50, allowPOS=('n', 'v', 'vn'))
    return keywords

基于 TF-IDF 算法的关键词抽取

def keyword_tfidf(content):
	"""tf-idf关键词抽取"""
    keywords = jieba.analyse.extract_tags(content, topK=50, allowPOS=('n', 'v', 'vn'))
    return keywords

参数说明:

  • content:表示待提取文本
  • topK:返回权重最大的关键词数,默认值为20
  • withWeight:表示是否一并返回关键词权重值,默认值为False
  • allowPOS:表示仅包括指定词性的词,默认值为空,即不筛选

2、hanlp

Github地址:https://github.com/hankcs/HanLP
安装:pip install pyhanlp -i https://pypi.douban.com/simple/
修改自定义词典方法:修改~\Anaconda3\Lib\site-packages\pyhanlp\static\data\dictionary\custom\ CustomDictionary.txt路径下的文件

from pyhanlp import *
def keyword_hanlp(content):
	"""基于textrank算法"""
    keywords = HanLP.extractKeyword(content, 50)
    return keywords

3、snownlp

Github地址: https://github.com/isnowfy/snownlp
安装:pip install snownlp -i https://pypi.douban.com/simple/

from snownlp import SnowNLP
def keyword_snownlp(content):
"""textRank"""
    keywords = SnowNLP(content).keywords(50)
    return keywords

4、jiagu

Github地址:https://github.com/ownthink/Jiagu
安装:pip install -U jiagu -i https://pypi.douban.com/simple/

import jiagu
def keyword_jiagu(content):
	"""基于BiLSTM"""
	keywords = jiagu.keywords(content, 50)
    return keywords
        

5、harvestText

Github地址:https://github.com/blmoistawinde/HarvestText
安装:pip install --upgrade harvesttext

from harvesttext import HarvestText
ht = HarvestText()
def keyword_harvestText(content, method="tfidf"):
    if method == "tfidf":
    """调用jieba-tfidf方法"""
    	keywords = ht.extract_keywords(content, 50, method="jieba_tfidf", allowPOS={'n', 'v', 'vn'})
    elif method == "textrank":
    """基于networkx的textrank算法"""
     keywords = ht.extract_keywords(content, 50, method="textrank", allowPOS={'n', 'v', 'vn'})

6、SIFRank_zh

Github地址:https://github.com/sunyilgdx/SIFRank_zh
安装:下载GitHub源码调试,调试文件路径:~/SIFRank_zh-master/test/test.py

"""基于预训练模型ELMo+句向量模型SIF"""
keyphrases = SIFRank(content, SIF, zh_model, N=50, elmo_layers_weight=elmo_layers_weight)

keyphrases_ = SIFRank_plus(content, SIF, zh_model, N=50, elmo_layers_weight=elmo_layers_weight)

7、macropodus

Github地址:https://github.com/yongzhuo/Macropodus
安装:python3.6下pip install macropodus -i https://pypi.douban.com/simple/

import macropodus
def keyword_macropodus(content):
	"""基于Albert+BiLSTM+CRF"""
	keywords = macropodus.keyword(content)
    return keywords

结论

  1. jiagu和hanlp关键词抽取结果中包含字母、数字记忆单个字情况,且无法直接根据词性过滤掉人名和机构名。
  2. harvestText中引入了networkx的图与复杂网络分析算法,就测试效果而言与jieba-textrank不分伯仲。
  3. SIFRank做了关键词聚合(就是将几个距离比较近的关键词合为一个),在测试时发现这种合并会导致关键词不通顺,不可用。
  4. macropodus抽取关键词,不能设置额外参数,关键词抽取固定(改的话就得改源码了),而且有的文章抽不出关键词(很奇怪)。
  5. 最终试了一圈发现,还是jieba香!!!(也可能和自己处理的文本有关,大家可以自己亲自比较试试哈。)
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
关键词抽取是一种用于从文本中提取出最具代表性的关键词的方法。在Python中,有多种方法可以实现关键词抽取,其中包括TF-IDF、TextRank和Word2Vec词向量聚类等方法。 TF-IDF是一种常用的关键词抽取方法,它通过计算词频-逆文档频率(TF-IDF)值来评估一个词在文本中的重要程度。TF-IDF的计算公式是根据词频和文档频率之间的关系来得出的。 TextRank是一种基于图的排序算法,它通过将文本中的词作为节点,根据词之间的共现关系构建图,并通过迭代计算节点的重要性得到关键词TextRank算法可以将文本中的重要信息进行抽取和排序,从而得到关键词。 而Word2Vec词向量聚类是一种将单词表示为向量的方法。通过训练一个word2vec模型,我们可以将每个词映射为一个向量表示,然后可以使用向量之间的相似度来确定关键词。 在Python中,有多个库可以实现关键词抽取,其中比较常用的是jieba库。jieba库提供了一个简单易用的接口,可以方便地实现关键词抽取。你可以使用jieba库的tfidf函数来进行关键词抽取,通过调整函数的参数,可以实现不同的筛选和返回方式。 总结起来,关键词抽取是一种从文本中提取出最具代表性的关键词的方法,Python中可以使用TF-IDF、TextRank和Word2Vec词向量聚类等方法实现关键词抽取。其中,jieba库是一个常用的工具库,可以方便地实现关键词抽取。你可以通过调用jieba库的tfidf函数来进行关键词抽取,并通过调整参数来实现不同的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风吹半夏灬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值