一个快速从中文文本抽取关键短语的工具 ckpe 提取关键短语

34 篇文章 2 订阅
10 篇文章 2 订阅

一个从 中文自然语言文本 中抽取 关键短语 的工具

需要调用的话,请直接进入github查看调用方法:

⭐源码地址:ckpe

⭐戳这里 => 在线直接试用 关键短语抽取在线版


应用场景 Application scenario

1.抽取关键短语
  • 在很多关键词提取任务中,使用tfidf、textrank等方法提取得到的仅仅是若干零碎词汇。
  • 这样的零碎词汇无法真正的表达文章的原本含义,我们并不想要它。
>>> text = '朝鲜确认金正恩出访俄罗斯 将与普京举行会谈...'
>>> keywords = ['俄罗斯', '朝鲜', '普京', '金正恩', '俄方']
  • 在很多时候,我们往往需要更细化的短语描述,来作为文本的关键信息展示。这样的需求在生成词云、提供摘要阅读、关键信息检索等任务中都非常重要。
>>> phrases = ['俄罗斯克里姆林宫', '邀请金正恩访俄', '最高司令官金正恩', 
               '朝方转交普京', '举行会谈']

⭐将关键短语做成词云,效果非常好哦!

功能介绍 Function introduction

为解决以上问题,基于北大分词器 pkuseg 工具,开发了一个关键短语抽取器,它可以方便地从文本中找出表达完成意思的关键短语。

使用方法 Usage

安装 Installation
  • 仅支持 python3
  • 自动安装 pkuseg 依赖包
$ git clone https://github.com/dongrixinyu/chinese_keyphrase_extractor
$ cd ~/chinese_keyphrase_extractor
$ pip install .
示例代码 Sample code
  • 输入必须为 utf-8 编码字符串
  • 仅支持中文
  • 具体函数参数见代码
1.抽取关键短语
import ckpe    

ckpe_obj = ckpe.ckpe()
# 初次导入时会自动下载北大词性标注模型包,自动加载入内存(50M)  
# 若由于网速原因下载失败,请参考 https://github.com/lancopku/pkuseg-python 如何安装下载 pkuseg 默认模型  

text = '法国媒体最新披露,巴黎圣母院火灾当晚,第一次消防警报响起时,负责查验的保安找错了位置,因而可能贻误了救火的最佳时机。...'
key_phrases = ckpe_obj.extract_keyphrase(text)
print(key_phrases)
print(ckpe_obj.extract_keyphrase.__doc__)
2.扩展类型短语
  • 该项功能主要为特定短语抽取服务
  • 有时产品和客户给定了一些词汇列表,比如化工经营业务词汇“聚氯乙烯”、“塑料”、“切割”、“金刚石”等。想要找到跟这些词汇相关的短语。
  • 在做NER命名实体识别任务的时候,我们需要从文本中,将已有的类型词汇做扩充,如“机构”类别,但我们仅知道机构的一些特征,如常以“局”、“法院”、“办公室”等特征词结尾。
  • 在下面的使用样例中,给出了上述两种需求的扩展短语识别的方法。
text = '聚氯乙烯树脂、塑料制品、切割工具、人造革、人造金刚石、农药(不含危险化学品)、针纺织品自产自销。...'
word_dict = {'聚氯乙烯': 1, '塑料': 1, '切割': 1, '金刚石': 1}  # 词汇: 词频(词频若未知可全设 1)
key_phrases = ckpe_obj.extract_keyphrase(text, top_k=-1, specified_words=word_dict)
print(key_phrases)
3.NER任务的短语扩充
text = '国务院下发通知,山西省法院、陕西省检察院、四川省法院、成都市教育局。...'
word_dict = {'局': 1, '国务院': 1, '检察院': 1, '法院': 1}
key_phrases = ckpe_obj.extract_keyphrase(text, top_k=-1, specified_words=word_dict, 
                                         remove_phrases_list=['麻将局'])
print(key_phrases)

原理 Principle of algorithm

  • 首先基于 pkuseg 工具做分词和词性标注,再使用 tfidf 计算文本的关键词权重,
  • 关键词提取算法找出碎片化的关键词,然后再根据相邻关键碎片词进行融合,重新计算权重,去除相似词汇。得到的融合的多个关键碎片即为关键短语。
    • 短语的 token 长度不超过 12
    • 短语中不可出现超过1个虚词
    • 短语的两端 token 不可是虚词和停用词
    • 短语中停用词数量不可以超过规定个数
    • 短语重复度计算添加其中
    • 提供仅抽取名词短语功能
  • 使用预训练好的 LDA 模型,计算文本的主题概率分布,以及每一个候选短语的主题概率分布,得到最终权重

特点

  • 该算法稳定性高,能够克服很多错误的字符串,比如“啊啊啊啊啊啊”, “----------”,“fheauinfrurqpernznm”,“开心~~~~”等等
  • 该算法处理速度在单核cpu上大约为 6篇/秒
  • 该算法可以支持名词短语,动宾短句的自由切换,且提供了丰富的接口方便尝试调用。
  • 该算法可以支持扩展特征抽取,可以进一步进行文本摘要抽取,基于短语的文本特征表示

TODO

  • pkuseg 分词器造成的错误,如把时间识别为名词,数字识别为人名等
  • stopwords 表中一些词汇既可以做实词,又可以做虚词,如“本”,“类”,造成错误
  • 规则过滤不完善造成的错误,或过滤过强造成的漏选
  • 某些数词与量词会相互分离,结合不够紧密,造成错误。
  • 如果有任何使用上的错误,请记得及时反馈哦!

Reference

  • Teneva N , Cheng W . Salience Rank: Efficient Keyphrase Extraction with Topic Modeling[C]// Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics (Volume 2: Short Papers). 2017.
  • Liu Z , Huang W , Zheng Y , et al. Automatic Keyphrase Extraction via Topic Decomposition[C]// Proceedings of the 2010 Conference on Empirical Methods in Natural Language Processing, EMNLP 2010, 9-11 October 2010, MIT Stata Center, Massachusetts, USA, A meeting of SIGDAT, a Special Interest Group of the ACL. Association for Computational Linguistics, 2010.

我的窝 My blog

如果觉得方便好用,请 follow 我一波:
JioNLP
在线使用版

JioNLP时间语义解析

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 文本关键抽取方法有很多,常见的有TF-IDF、TextRank、LDA等。 在Python中,可以使用jieba、gensim、nltk等库来实现文本关键抽取。 - jieba库是一个中文分词工具,可以用来提取中文文本关键词。 - gensim库是一个用于文档索引和文档相似性的库,可以用来进行文本主题建模。 - nltk库是一个自然语言处理工具包,可以用来进行词频统计、文本分类等操作。 ### 回答2: 从文本抽取关键词有多种方法,以下是其中一些常见的办法: 1. 基于词频统计:通过分词将文本划分为词语,然后计算每个词出现的次数,并选择词频较高的词语作为关键词。 2. 基于TF-IDF:TF-IDF算法通过计算词频和逆文档频率,来确定一个词语在文本中的重要程度,根据TF-IDF值高低选择关键词。 3. 基于TextRank:TextRank算法文本中的词语作为节点,词语之间的关系作为边,通过迭代计算词语之间的权重,得出关键词。 4. 基于主题模型:主题模型将文本看作是多个主题的组合,通过计算每个词语在主题中的权重,选择权重较高的词语作为关键词。 在Python中,可以使用以下库来进行关键抽取: 1. jieba库:jieba是一个开源的中文分词库,可以用于划分文本中的词语,并计算词语的频率。 2. scikit-learn库:scikit-learn是一个常用的机器学习库,提供了TF-IDF向量化的功能,可以计算文本的TF-IDF向量,从而得出关键词。 3. Gensim库:Gensim是一个Python库,提供了TextRank算法和主题模型的实现,可以用于文本关键抽取。 以上只是一些常见的方法和Python库,实际上还有其他更多的方法和库可以进行关键抽取,选择适合自己需求和文本特点的方法和库最为重要。 ### 回答3: 从文本抽取关键词可以使用以下几种方法: 1. 基于统计的方法:根据词在文本中出现的频率来判断其重要程度,常用的统计方法有TF-IDF、词频等。 2. 基于词性标注的方法:通过标注每个词的词性,然后根据一定规则选择关键词,例如选择名词、动词等。 3. 基于机器学习的方法:使用机器学习算法文本进行训练,然后预测每个词的重要程度,例如使用TextRank算法。 在Python中,可以使用以下库来进行文本关键抽取: 1. jieba库:提供了中文分词的功能,可以用于将文本分词,然后计算关键词的出现频率。 2. NLTK库:提供了各种文本处理的功能,包括分词、词性标注等,可以用于进行关键抽取。 3. gensim库:提供了TF-IDF模型和TextRank模型的实现,可以用于进行基于统计的关键抽取。 4. scikit-learn库:提供了机器学习算法的实现,可以用于进行基于机器学习关键抽取,例如使用分类算法进行词重要性预测。 根据不同的需求和文本特点,选择适合的方法和库,可以更准确地抽取关键词。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值