Keyphrase Extraction 一个快速从中文里抽取关键短语的工具
共 3873字,需浏览 8分钟
·
2022-03-23 11:26
向AI转型的程序员都关注了这个号👇👇👇
机器学习AI算法工程 公众号:datayx
一个从 中文自然语言文本 中抽取 关键短语 的工具,只消耗 35M 内存。
1.抽取关键短语
在很多关键词提取任务中,使用tfidf、textrank等方法提取得到的仅仅是若干零碎词汇。
这样的零碎词汇无法真正的表达文章的原本含义,我们并不想要它。
For example:
>>> text = '朝鲜确认金正恩出访俄罗斯 将与普京举行会谈...'
>>> keywords = ['俄罗斯', '朝鲜', '普京', '金正恩', '俄方']
我们往往需要更细化的短语描述,来作为文本的关键信息展示。这样的需求在生成词云、提供摘要阅读、关键信息检索等任务中都非常重要。
例如:For example:
>>> phrases = ['俄罗斯克里姆林宫', '邀请金正恩访俄', '最高司令官金正恩',
'朝方转交普京', '举行会谈']
2.扩展相关短语词汇
有时产品和客户给定了一些词汇列表,比如化工经营业务词汇“聚氯乙烯”、“塑料”、“切割”、“金刚石”等。想要找到跟这些词汇相关的短语。
在做NER命名实体识别任务的时候,我们需要从文本中,将已有的类型词汇做扩充,如“机构”类别,但我们仅知道机构的一些特征,如常以“局”、“法院”、“办公室”等特征词结尾。
在下面的使用样例中,给出了上述两种需求的扩展短语识别的方法。
为解决以上问题,基于北大分词器 pkuseg 工具,开发了一个关键短语抽取器,它可以方便地从文本中找出表达完成意思的关键短语。
全部项目代码获取方式:
关注微信公众号 datanlp 然后回复 关键词抽取 即可获取。
使用方法
安装
仅支持 python3
git clone https://github.com/dongrixinyu/chinese_keyphrase_extractor
cd ./chinese_keyphrase_extractor
pip install .JioNLP 同样支持短语抽取,工具包安装方法:
$ pip install jionlp
示例代码
输入必须为 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__)
JioNLP 工具包调用方法:
>>> import jionlp as jio
>>> text = '朝鲜确认金正恩出访俄罗斯 将与普京举行会谈...'
>>> key_phrases = jio.keyphrase.extract_keyphrase(text)
>>> print(key_phrases)
>>> print(jio.keyphrase.extract_keyphrase.__doc__)
# ['俄罗斯克里姆林宫', '邀请金正恩访俄', '举行会谈',
# '朝方转交普京', '最高司令官金正恩']
2.扩展类型短语
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)
原理
首先基于 pkuseg 工具做分词和词性标注,再使用 tfidf 计算文本的关键词权重,
关键词提取算法找出碎片化的关键词,然后再根据相邻关键碎片词进行融合,重新计算权重,去除相似词汇。得到的融合的多个关键碎片即为关键短语。
短语的 token 长度不超过 12
短语中不可出现超过1个虚词
短语的两端 token 不可是虚词和停用词
短语中停用词数量不可以超过规定个数
短语重复度计算 MMR 添加其中
提供仅抽取名词短语功能
使用预训练好的 LDA 模型,计算文本的主题概率分布,以及每一个候选短语的主题概率分布,得到最终权重
计算主题向量
工具包中默认的主题模型参数由100万篇各个类型的新闻文本,以及少部分社交媒体文本训练得到。
若需要针对特定领域文本处理,则需要根据特定的语料重新训练模型,并按相应的文件格式做替换。
主题模型采用标准的 LDA 模型训练得到,工具包可选择 gensim、sklearn、familia 等,训练完毕后可以得到主题词的分布表示,进而可以得到每个词汇在不同主题下的分布。由此可以得出词汇的主题突出度。
机器学习算法AI大数据技术
搜索公众号添加: datanlp
长按图片,识别二维码
阅读过本文的人还看了以下文章:
基于40万表格数据集TableBank,用MaskRCNN做表格检测
《深度学习入门:基于Python的理论与实现》高清中文PDF+源码
2019最新《PyTorch自然语言处理》英、中文版PDF+源码
《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码
PyTorch深度学习快速实战入门《pytorch-handbook》
【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》
李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
如何利用全新的决策树集成级联结构gcForest做特征工程并打分?
Machine Learning Yearning 中文翻译稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx