【NLP】python中英文关键词抽取技术总结

2023-11-01

【NLP】python中英文关键词抽取技术总结

无论是在中文还是英文中关键词抽取技术都是有着很重要的应用价值和分析价值,下面在python环境中分别针对中文和英文介绍几种常用的关键词抽取方法。

1. 英文

抽取英文关键词的几种方法:

1.1 spaCy

spaCy是一个集成化的工业级自然语言处理工具,主要功能包括分词、词性标注、词干化、命名实体识别、名词短语提取等等。

text = "Private investment firm Carlyle Group,which has a reputation for making well-timed and occasionally controversial plays in the defense industry, has quietly placed its bets on another part of the market."
## spaCy
import spaCy
spacy_nlp = spacy.load("en_core_web_sm")
doc = spacy_nlp(text)
for ent in doc.ents:
    print(ent.text,ent.label_)
    
## output
Carlyle Group ORG

doc.ents的输出可能是1-gram, 2-gram, 3-gram等,无法人工调控。

1.2 yake

yake使用文本统计特征方法从文章中选择最重要的关键字。

## yake
import yake
kw_extractor = yake.KeywordExtractor()
language = "en"
max_ngram_size = 2 #最大关键词语长度
deduplication_threshold = 0.9 #设置在关键词中是否可以重复单词
numOfKeywords = 20 
custom_kw_extractor = yake.KeywordExtractor(lan=language, n=max_ngram_size, dedupLim=deduplication_threshold, top=numOfKeywords, features=None)
keywords = custom_kw_extractor.extract_keywords(text)

## output
[('Carlyle Group,which', 0.007444681613352736),
 ('firm Carlyle', 0.013797198203993007),
 ('Private investment', 0.015380821171891606),
 ('defense industry', 0.015380821171891606),
 ('investment firm', 0.02570861714399338),
 ('making well-timed', 0.02570861714399338),
 ('occasionally controversial', 0.02570861714399338),
 ('controversial plays', 0.02570861714399338),
 ('Carlyle', 0.08596317751626563),
 ('Group,which', 0.08596317751626563),
 ('Private', 0.09568045026443411),
 ('industry', 0.09568045026443411),
 ('market', 0.09568045026443411),
 ('investment', 0.15831692877998726),
 ('firm', 0.15831692877998726),
 ('reputation', 0.15831692877998726),
 ('making', 0.15831692877998726),
 ('well-timed', 0.15831692877998726),
 ('occasionally', 0.15831692877998726),
 ('controversial', 0.15831692877998726)]

1.3 rare_nltk

一种与NLTK工具集成在一起的快速自动关键词抽取技术Rapid Automatic Keyword Extraction (RAKE)。

## Rake
from rake_nltk import Rake
rake_nltk_var = Rake(max_length=2)
rake_nltk_var.extract_keywords_from_text(text)
keyword_extracted = rake_nltk_var.get_ranked_phrases()

## output
['quietly placed',
 'making well',
 'defense industry',
 'another part',
 'timed',
 'reputation',
 'market',
 'bets']

rake-nltk的性能与spaCy相当

1.4 gensim

## gensim
import gensim
gensim_kw = gensim.summarization.keywords(text,words=10,split=True,scores=True)

## output
[('carlyle', 0.3454150914587271),
 ('investment firm', 0.3405754844080691),
 ('occasionally controversial plays', 0.28088699744995504),
 ('defense', 0.2808869974499539),
 ('industry', 0.28088699744995377),
 ('quietly placed', 0.2808869974499534)]

genisim在关键字提取方面的性能还没有达到spaCy和``rakenltk级。gensim`在关键字提取任务上还有改进的空间

2. 中文

2.1 TextRank

TextRank是一种由PageRank启发的算法,最早用在了摘要的提取上,现有的python库能够同时实现对关键词和摘要的提取。TextRank的效果不见得比TF-IDF(有着合适语料库)要好,但是优点在于不需要语料的训练就能对单篇文章分析,在语料不足的时候可以作为一种方法来用。

test_text = '知识图谱(Knowledge Graph),在图书情报界称为知识域可视化或知识领域映射地图,是显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及它们之间的相互联系。知识图谱,是通过将应用数学、图形学、信息可视化技术、信息科学等学科的理论与方法与计量学引文分析、共现分析等方法结合,并利用可视化的图谱形象地展示学科的核心结构、发展历史、前沿领域以及整体知识架构达到多学科融合目的的现代理论。'

tr4w = TextRank4Keyword()
tr4w.analyze(text=test_text,lower=True,window=5)
print('测试文本关键词如下:\n')
for item in tr4w.get_keywords(5,word_min_len=1):
    print(item['word'],item['weight'])

tr4s = TextRank4Sentence()
tr4s.analyze(text=test_text, lower=True, source='no_stop_words')
key_sentences = tr4s.get_key_sentences(num=5,sentence_min_len=2)
for sentence in key_sentences:
    print(sentence['weight'],sentence['sentence'])
    
## output
知识 0.07136000358189572
可视化 0.050885665487685895
学科 0.04382397117871283
图谱 0.034505489704179104
分析 0.032669435513839745

2.2 TF-IDF

TF-IDF,是基于词频与逆文档频次的一种算法,TF-IDF较为简单快速,而且效果相对不错,但是TF-IDF中的IDF要基于已有的语料进行训练,语料的好坏对结果影响很大,如果应用到目前的项目,语料是必须要解决的一个问题。

keywords_tfidf = jieba.analyse.extract_tags(test_text, topK = 20, withWeight=True)
for item in keywords_tfidf:
    print(item[0],item[1])
## output
知识 0.6291566258975609
可视化 0.5459818268731708
图谱 0.36000858444256095
学科 0.24579239780817075
分析 0.17720506157560972
情报界 0.16952045917073172
图形学 0.16952045917073172
Knowledge 0.14578984759634145
Graph 0.14578984759634145
共现 0.14578984759634145
信息科学 0.1364954567182927
领域 0.1320072083514634
计量学 0.12932732665853658
引文 0.1284558758780488
理论 0.12825460906317074
方法 0.12116597634243903
映射 0.12043080440536585
结构 0.1178287709707317
技术 0.11510871167243902
显示 0.11022549280878048

2.3 Textrank(jieba)

keywords_textrank_jieba = jieba.analyse.textrank(test_text, topK=20, withWeight=True)
for item in keywords_textrank_jieba:
    print(item[0],item[1])
tr4w = TextRank4Keyword()
## output
知识 1.0
可视化 0.6295270480086527
分析 0.48002211534304284
学科 0.448184981430669
技术 0.33755106917904004
结构 0.3218718222753201
发展 0.3176518370007447
方法 0.3153386943262916
领域 0.3120507490347102
图谱 0.2845462026540273
显示 0.28294240822624933
图形学 0.23556758861253835
达到 0.22453237874888934
资源 0.2231116119429888
架构 0.21777848096566976
共现 0.21498592836125222
融合 0.1941284901445365
理论 0.19230572366470158
载体 0.18945172483525918
核心 0.18851788164895478

参考资料:

Keyword Extraction process in Python with Natural Language Processing(NLP)

Understand TextRank for Keyword Extraction by Python

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【NLP】python中英文关键词抽取技术总结 的相关文章

随机推荐

  • Redis 常见数据类型的使用场景以及底层结构

    前言 Redis 是一种基于内存的高性能的键值存储系统 支持多种数据类型 持久化 高可用集群等 在 Redis 中 每种数据类型都有自己独特的底层实现方式 这些实现方式直接影响着 Redis 的性能 本文将介绍 Redis 各种数据类型的使
  • docker 升级php7.3,docker容器如何升级

    解决方法 1 升级Image 只要从服务器拉下来最新的数据就行了 docker pull quay io sameersbn redmine latest 2 关闭旧容器并删除 到工作目录 data 使用 docker compose 来关
  • Unity Shader入门精要之第5 章 开始Unity Shader 学习之旅

    Unity系列文章目录 文章目录 Unity系列文章目录 前言 一 5 1 本书使用的软件和环境 5 2 一个最简单的顶点 片元着色器 5 2 1 顶点 片元着色器的基本结构 参考 前言 欢迎来到本书的第 2 篇 初级篇 在基础篇中 我们学
  • HTML框架与内联框架

    目录 实例 框架 框架标签 Frame 基本的注意事项 有用的提示 更多实例 添加 iframe 的语法 Iframe 设置高度和宽度 实例 Iframe 删除边框 实例 使用 iframe 作为链接的目标 实例 HTML iframe 标
  • elasticsearch基础 学习笔记

    1 初识elasticsearch 1 1 什么是elasticsearch elasticsearch是一款非常强大的开源搜索引擎 可以帮助我们从海量数据中快速找到需要的内容 elasticsearch结合kibana Logstash
  • 8天学通MongoDB——第一天 基础入门

    关于mongodb的好处 优点之类的这里就不说了 唯一要讲的一点就是mongodb中有三元素 数据库 集合 文档 其中 集合 就是对应关系数据库中的 表 文档 对应 行 一 下载 上MongoDB官网 我们发现有32bit和64bit 这个
  • 华为od机试 python【计算玩牌最高得分】

    前言 Java 版本 链接 题目 代码 def calculate max score scores n len scores best scores 0 n for i
  • 一文总结Python数字图像处理基础知识与前沿应用

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 介绍 数字图像处理由涉及在计算机上处理图像的各种技术和方法组成 对图像进行各种类型的操作 构成数字图像处理 了解图像实际上是什么 图像基本上是二维信号 信号函数是 f x
  • 用vbs往服务器发送文件,[转] Windows 下命令行/VBS脚本,发送带附件邮件.

    利用VBScript发送邮件 以前从网上找的代码 不知原来的出处了 也不知作者是何人 挺有用的脚本 我就一直在使用这个脚本来发邮件 还可以带附件 放在这里做个备份 免得到时又找不到了 目前我就通过批处理配合这个脚本来自动备份我的一些文件到邮
  • 安装部署vCenter 6.7

    安装部署vCenter 6 7 一 下载vCenter6 7 下载地址 点击下载 更多下载地址 点击跳转 二 安装部署vCenter6 7 将下载好的镜像文件拷贝到一台windows机器上 并挂载到光驱 安装vCenter 双击运行 ins
  • 设计模式---------单例模式

    前言 单例模式 顾名思义就是只有一个实例 并且其负责创建自己的对象 这种类型的设计模式属于创建型模式 它提供了一种创建对象的最佳方式 这种模式涉及到一个单一的类 该类负责创建自己的对象 同时确保只有单个对象被创建 这个类提供了一种访问其唯一
  • 关系数据库——关系

    1 关系的性质 每个属性都必须是不可再分的数据项 每个属性都具有相同的数据类型 关系中不允许出现相同的属性名 关系中不允许有完全相同的元组 关系中元组的次序无关紧要 关系中属性的次序无关紧要 2 关系运算 传统的关系运算 并 交 差 笛卡尔
  • QT---信号与槽(3)

    目录 一 打印输出文本的编辑 二 补充QT4信号与槽函数的写法 三 信号与槽的总结 一 打印输出文本的编辑 PS更正 去掉打印输出中的空格 space更正为nospace void Student treat QString food QS
  • Qt 多个信号关联同一个槽函数

    背景 多个信号需要执行同一个函数或者一类函数的时候 可以选择每个信号创建一个槽函数去实现功能 如果直接关联到一个函数中 该函数只能执行一份功能 有时候并不能满足业务需求 在多个信号绑定到同一个槽函数的状态下 让槽函数根据绑定的不同的信号执行
  • 人工智能基础学习法则

    当下 人工智能成了新时代的必修课 其重要性已无需赘述 格物斯坦认为 这是一个跨学科产物 它包含的内容浩如烟海 各种复杂的模型和算法更是让人望而生畏 对于大多数的新手来说 如何入手人工智能其实都是一头雾水 比如到底需要哪些数学基础 是否要有工
  • boj 12

    DescriptionBig Johnsson Trucks Inc is a company specialized in manufacturing big trucks Their latest model the Godzilla
  • dhcp服务器没有响应怎么解决,dhcp服务器没有响应

    dhcp服务器没有响应 内容精选 换一换 ELB与后端服务器建立连接后 四层和七层监听器的默认超时时间如表1所示 修改超时时间的操作请参见修改监听器 共享型负载均衡支持配置和修改TCP HTTP HTTPS的超时时间 不支持UDP超时时间的
  • 学平面设计有前途还是学UI设计有前途?

    本文由 学设计上兔课网 原创 图片素材来自网络 仅供学习分享 学平面设计有前途还是学UI设计有前途 ui设计和平面设计都是当下比较受欢迎的设计学科 而ui设计和平面设计哪个比较好 哪个比较有前途 这是大多数想步入设计行业的新人比较关心的问题
  • Jmeter接口测试简易步骤

    使用Jmeter接口测试 1 首先右键添加一个线程组 然后我们重命名接口测试 2 在线程组上添加一个Http默认请求 并配置服务器的IP地址端口等信息 3 在线程组中添加一个HTTP请求 这里我们重命名 增加信用卡账户信息接口 4 配置接口
  • 【NLP】python中英文关键词抽取技术总结

    NLP python中英文关键词抽取技术总结 无论是在中文还是英文中关键词抽取技术都是有着很重要的应用价值和分析价值 下面在python环境中分别针对中文和英文介绍几种常用的关键词抽取方法 1 英文 抽取英文关键词的几种方法 1 1 spa