5分钟 NLP:使用 OpenNRE 进行关系提取

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: 5分钟 NLP:使用 OpenNRE 进行关系提取

关系提取( Relation Extraction)是一项自然语言处理任务,旨在提取实体之间的关系。例如,从句罗密欧与朱丽叶是由威廉莎士比亚写的,我们可以提取关系三元组(威廉莎士比亚,是罗密欧与朱丽叶的作者)。

关系提取是自动知识图谱构建中的一项关键技术。通过关系提取,我们可以累积提取新的关系事实,扩展知识图谱,这些知识可以作为机器理解人类世界的一种方式,在问答、推荐系统、搜索引擎等下游有很多应用。

OpenNRE 是对文本进行关系提取最常用的库之一。

OpenNRE 是一个开源且可扩展的工具包,它提供了一个统一的框架来实现关系提取模型。

该库带有两个预训练模型,无需任何训练即可投入生产:

  • wiki80_cnn_softmax:使用 CNN 编码器在 Wiki80 数据集上训练。
  • wiki80_bert_softmax:使用 BERT 编码器在 Wiki80 数据集上训练。

两个模型都在 Wiki80 数据集上进行训练,该数据集由 80 个关系组成,每个关系有 700 个实例。

为了使用 OpenNRE 库,必须首先从它的 repo 安装它:

#downloadrepowithOpenNRElibrarygitclonehttps://github.com/thunlp/OpenNRE.git#installlibrarycdOpenNREpipinstall-rrequirements.txtpythonsetup.pyinstall

接下来的步骤是:

  • Python 代码中导入库
  • 加载预训练模型。
  • 调用模型的 infer 函数,传递 (1) 一个段落,(2) 第一个实体位置,以及 (3) 第二个实体位置。该函数返回实体对的预测关系,使用段落作为上下文。
importopennre#downloadNREpretrainedmodelmodel=opennre.get_model('wiki80_cnn_softmax')
#textusedtolookforrelationstext="""Kobe Bean Bryant was an American professional basketball player.A shooting guard, he spent his entire career with the Los Angeles Lakers in the NBA."""#choosetwoentitieswhoserelationistobepredictedh_text="Kobe Bean Bryant"t_text="shooting guard"h_pos= (text.index(h_text), text.index(h_text) +len(h_text))
t_pos= (text.index(t_text), text.index(t_text) +len(t_text))
#predictrelationmodel.infer({'text': text, 'h': {'pos': h_pos}, 't': {'pos': t_pos}})
#output:
# ('position played on team / speciality', 0.9829357862472534)

尽管名称为关系提取,但我们在这里看到的示例实际上是一个多标签分类问题,其中可以提取的关系类型是训练集中存在的关系类型。


目录
相关文章
|
定位技术 数据中心
全球历史台风轨迹数据的艰难寻找经历
全球历史台风轨迹数据的艰难寻找经历
936 0
|
8月前
|
监控 网络安全 开发者
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
223 20
|
存储 JSON 前端开发
multi-agent:多角色Agent协同合作,高效完成复杂任务
随着LLM的涌现,以LLM为中枢构建的Agent系统在近期受到了广泛的关注。Agent系统旨在利用LLM的归纳推理能力,通过为不同的Agent分配角色与任务信息,并配备相应的工具插件,从而完成复杂的任务。
|
11月前
|
传感器 弹性计算 人工智能
简介Multi-Agent
多智能体系统(MAS)是由多个自主智能体组成的计算系统,各智能体能独立决策、协同作业,无需中央控制。其特点包括自主性、分布性、交互性、异构性和适应性,广泛应用于人工智能、经济、交通、医疗和环保等领域,展现出巨大潜力。然而,MAS也面临通信开销、一致性、安全性和可扩展性等挑战。
403 3
三分钟教你学会设置PICO不自动休眠
本文介绍了如何在PICO设备上通过六步设置来延长自动休眠时间,避免因短暂离开而导致屏幕过早关闭的问题。
三分钟教你学会设置PICO不自动休眠
|
人工智能 缓存 PyTorch
从零开始的ChatGLM 配置详细教程
这篇文章提供了从零开始配置ChatGLM的详细教程,包括环境配置、下载项目、在HuggingFace下载模型、解决常见报错以及运行项目的最终结果和一些番外内容。
|
机器学习/深度学习 PyTorch TensorFlow
【PyTorch】PyTorch深度学习框架实战(一):实现你的第一个DNN网络
【PyTorch】PyTorch深度学习框架实战(一):实现你的第一个DNN网络
422 2
|
自然语言处理 安全 Shell
【Python】已解决:Python pip正确安装pyhanlp库步骤
【Python】已解决:Python pip正确安装pyhanlp库步骤
560 2
|
机器学习/深度学习 存储 算法
梯度下降算法(一)
梯度下降是一种迭代优化算法,用于找到多变量函数的最小值。它不直接求解方程,而是从随机初始点开始,沿着梯度(函数增大幅度最大方向)的反方向逐步调整参数,逐步逼近函数的最小值。在单变量函数中,梯度是导数,而在多变量函数中,梯度是一个包含所有变量偏导数的向量。通过计算梯度并乘以学习率,算法更新参数以接近最小值。代码示例展示了如何用Python实现梯度下降,通过不断迭代直到梯度足够小或达到预设的最大迭代次数。该过程可以类比为在雾中下山,通过感知坡度变化来调整前进方向。
|
Web App开发 缓存 JavaScript
在IDEA中更改了代码,浏览器中仍运行先前的代码
在IDEA中更改了代码,浏览器中仍运行先前的代码