【传知代码】基于知识引导提示的因果概念提取(论文复现)

前言:在当今信息爆炸的时代,我们被海量的数据所包围,然而,这些数据中的真正价值往往隐藏在深层的因果关系之中。无论是科学研究、商业决策,还是日常生活中的选择,理解并准确把握事物之间的因果关系,都显得至关重要。然而,如何从海量的信息中有效地提取出这些因果关系,一直以来都是个挑战。本文旨在深入探讨基于知识引导提示的因果概念提取技术的原理、应用及其在未来的发展前景。本文将首先介绍这一技术的背景和理论基础,随后详细阐述其实现方法和关键技术。在此基础上,本文将结合具体案例,展示这一技术在实际应用中的强大能力和广泛应用前景。

本文所涉及所有资源均在传知代码平台可获取

目录

概述

演示效果

核心代码

写在最后


概述

        预训练语言模型(PLMs)在进行概念提取时,通常更多地依赖于文本中的共现关系,而不是实际存在的因果关系,这导致了提取结果的偏差和低精度。为了应对这一难题,本研究提议利用知识导向的提示来介入PLM的概念提炼过程。这一建议通过利用已有的知识图谱来协助PLM更加关注相关的概念,从而降低对虚假共现的依赖,并进一步提升数据提取的准确性。经过实验验证,此种技术显著地降低了误差,并大幅度增强了概念提取的效果,本文参考 论文 如下:

论文主要采用的方法如下图所示:

        在本文中,我们提出了一个名为KPCE(Knowledge-Prompted Concept Extraction)的概念提取(CE)框架,该框架主要关注于如何通过知识引导提示(prompt)来缓解基于深度学习模型的概念偏差问题。KPCE框架由两个核心模块组成:提示构造器和概念提取器。

提示构造器:是KPCE框架的第一个关键模块,它负责从现有的知识库(KG)中提取与给定实体相关的主题作为提示。这一模块的核心作用在于通过前门调整策略,降低实体与偏差概念之间的虚假共现相关性,从而帮助后续的概念提取器更准确地识别和提取相关概念。

具体而言,提示构造器的工作流程如下:

1)知识库准备:首先,从大规模的知识库中收集与特定实体或主题相关的知识条目。

2)主题识别:从收集到的知识条目中,识别出与给定实体最相关的主题或概念。

3)提示构造:基于识别的主题,构造出能够引导概念提取器进行准确识别的提示。

概念提取器:是KPCE框架的第二个模块,它负责根据提示构造器提供的提示,从文本数据中提取出相关的概念。这一模块的关键在于如何有效利用提示信息,提高概念提取的准确性和效率。

概念提取器的工作流程如下:

1)文本输入:接收待处理的文本数据作为输入。

2)提示应用:将提示构造器生成的提示应用于文本数据,引导概念提取器关注与提示相关的部分。

3)概念识别:在提示的引导下,从文本数据中识别出与给定实体相关的概念。

4)概念输出:将识别出的概念进行整理并输出。

        KPCE框架通过结合提示构造器和概念提取器两个模块,实现了基于知识引导提示的概念提取功能。这一框架不仅能够有效缓解基于深度学习模型的概念偏差问题,还能够提高概念提取的准确性和效率。通过在实际数据集上的实验验证,我们证明了KPCE框架的有效性,并为未来的研究工作提供了有价值的参考。

演示效果

        对于CN-DBpedia:从最新版本的中文知识图谱CN-DBpedia(Xu等,2017)和维基百科中获取样本池。每个样本由一个实体及其概念和摘要文本组成。然后,从样本池中随机抽取500个样本作为测试集,并按照9:1的比例将其余样本划分为训练集和验证集。

        对于Probase:从Probase和维基百科中获取英语样本池,共包含50,000个样本。训练集、验证集和测试集的构建方式与中文数据集相同。

配置环境如下:

Requirements
torch == 1.4.0
transformers == 4.2.0

最后进入到main.py文件进行训练,得到的结果如下图所示:

核心代码

        下面这段代码定义了一个名为Prompt_MRCModel的PyTorch模型类,用于执行基于Bert模型的机器阅读理解(MRC)任务,并且在输入中加入了一些prompt信息,通过生成默认输入的方法generate_default_inputs,接受一个batch的数据、主题嵌入topic_embed和设备device作为输入。在这个方法中,首先从batch中获取input_ids,然后使用self.model和self.topic_model分别对input_ids和topic_embed进行处理,得到输入的嵌入表示input_embeds,并构建出模型所需的inputs字典。

        代码的作用是封装了一个带有prompt信息的Bert模型,并提供了生成默认输入、前向传播和训练步骤等方法,方便进行机器阅读理解任务的训练和推理,具体如下所示:

class Prompt_MRCModel(nn.Module):def __init__(self, model_name, tokenizer, max_topic_len=35, max_seq_len = 256):super(Prompt_MRCModel, self).__init__()self.model = BertForQuestionAnswering.from_pretrained(model_name)self.topic_model = BertForQuestionAnswering.from_pretrained(model_name)self.tokenizer = tokenizerself.max_topic_len = max_topic_lendef generate_default_inputs(self, batch, topic_embed, device):input_ids = batch['input_ids']bz = batch['input_ids'].shape[0]block_flag = 1raw_embeds = self.model.bert.embeddings.word_embeddings(input_ids.to(device)).squeeze(1)topic_embeds = self.topic_model.bert.embeddings.word_embeddings(topic_embed.to(device)).squeeze(1)input_embeds = torch.cat((topic_embeds,raw_embeds),1)inputs = {'inputs_embeds': raw_embeds.to(device), 'attention_mask': batch['attention_mask'].squeeze(1).to(device)}inputs['token_type_ids'] = batch['token_type_ids'].squeeze(1).to(device)return inputsdef forward(self, inputs_embeds=None, attention_mask=None, token_type_ids=None, labels=None):return self.model(inputs_embeds=inputs_embeds,attention_mask=attention_mask,labels=labels,token_type_ids=token_type_ids)def mlm_train_step(self, batch, topic_embed, start_positions, end_positions, device):inputs_prompt = self.generate_default_inputs(batch, topic_embed, device)bert_out = self.model(**inputs_prompt, start_positions=start_positions, end_positions=end_positions)return bert_out

写在最后

        在本文中,我们深入探讨了基于知识引导提示的因果概念提取技术,并详细阐述了其原理、方法和应用。我们提出的KPCE框架,通过结合提示构造器和概念提取器两个核心模块,成功实现了在文本数据中精准提取因果概念的目标。这一框架不仅充分利用了现有的知识库资源,还通过提示的方式引导模型关注于与给定实体相关的部分,从而大大提高了概念提取的准确性和效率。

        回顾我们的研究成果,我们不禁为这一技术的潜力和应用前景所折服。想象一下,在未来的科学研究中,研究人员可以利用这一技术从海量的实验数据中提取出关键的因果关系,为科学发现提供有力的支持;在商业决策中,企业可以利用这一技术从市场数据中分析出消费者行为的因果关系,为制定更加精准的市场策略提供数据支撑;在日常生活中,我们也可以通过这一技术更加深入地理解周围的世界,做出更加明智的选择。

详细复现过程的项目源码、数据和预训练好的模型可从该文章下方附件获取。

【传知科技】关注有礼     公众号、抖音号、视频号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/20685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Navicat Premium 16.01 下载、安装教程

Navicat Premium 16下载与安装教程 目录 Navicat Premium 16下载与安装教程前言安装步骤同意协议选择安装目录桌面快捷方式安装正在安装安装完成 步骤下载方式 前言 数据库管理用Navicat更加方便,可视化效果更好,今天给大家带来2022 Navicat Premium 16…

【thinkphp问题栏】tp5.1重写URL,取消路径上的index.php

在Apache运行thinkphp5.1时,发现系统默认生成的.htaccess不生效。 首先先查看怎么修改伪静态 1、修改Apache的配置文件 在Apache的安装目录下,打开config/httpd.conf。 搜索rewrite.so,将前面的#删掉,表示开启URL重写功能 2、…

Java | Leetcode Java题解之第120题三角形最小路径和

题目&#xff1a; 题解&#xff1a; class Solution {public int minimumTotal(List<List<Integer>> triangle) {int n triangle.size();int[] f new int[n];f[0] triangle.get(0).get(0);for (int i 1; i < n; i) {f[i] f[i - 1] triangle.get(i).get(i…

知名专业定制线缆知名智造品牌推荐-精工电联:解决水下机器人线缆行业痛点的领航者

在科技日新月异的今天&#xff0c;精工电联作为高科技智能化产品及自动化设备专用连接线束和连接器配套服务商&#xff0c;致力于为高科技行业提供高品质、高性能的集成线缆和连接器定制服务。我们不仅是高品质定制线缆供应商&#xff0c;更是水下机器人线缆行业痛点的有效解决…

win系统游戏提示找不到d3dx9_37.dll丢失的解决方法-最简单的解决方法

d3dx9_37.dll 是一个动态链接库文件&#xff0c;属于 Microsoft DirectX 9 的一部分。DirectX 9 是一个用于多媒体应用&#xff0c;特别是游戏和视频的 API&#xff0c;它提供了一套丰富的功能&#xff0c;用于处理图形、声音和输入设备等。d3dx9_37.dll 文件包含了 Direct3D 9…

【30天精通Prometheus:一站式监控实战指南】第12天:windows_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们&#x1f44b;   欢迎加入【30天精通Prometheus】专栏&#xff01;&#x1f4da; 在这里&#xff0c;我们将探索Prometheus的强大功能&#xff0c;并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。&#x1f680;   Prometheus是云原生和DevOps的…

容器化部署gitlab、jenkins,jenkins应用示例

一、容器化部署docker和docker conpose安装 Docker&Docker-compose的安装及部署_docker 20 使用什么版本docker-compose-CSDN博客 1.docker 安装脚本 cat >01_docker.sh<<EOF #!/bin/bash yum remove docker \docker-client \docker-client-latest \docker-co…

用开源模型MusicGen制作六一儿童节专属音乐

使用的是开源模型MusicGen&#xff0c;它可以根据文字描述或者已有旋律生成高质量的音乐(32kHz)&#xff0c;其原理是通过生成Encodec token然后再解码为音频&#xff0c;模型利用EnCodec神经音频编解码器来从原始波形中学习离散音频token。EnCodec将音频信号映射到一个或多个并…

携程梁建章:持续投资创新与AI,开启旅游行业未来增长

5月30至31日&#xff0c;携程集团在上海和张家界举办Envision 2024全球合作伙伴大会&#xff0c;邀请超50个国家和地区的1600余名外籍旅游业嘉宾与会&#xff0c;共同探讨中国跨境旅游市场发展机遇&#xff0c;讲好中国故事。 携程国际业务增速迅猛&#xff0c;创新与AI解锁未…

Unity 自定义房间布局系统 设计与实现一个灵活的房间放置系统 ——自定义房间区域功能

自定义房间区域功能 效果&#xff1a; 功能&#xff1a; 能够自定义房间的大小一键生成放置区域可控的放置网格点当物体放置到区域内可自动吸附物体是否可放置&#xff0c;放置时如果与其他物体交叉则不可放置&#xff08;纯算法计算&#xff09;管理房间内的物体&#xff0c…

云原生架构模式

本文主要介绍了云原生架构的主要设计模式&#xff0c;讨论了这些模式的优缺点及其适用场景&#xff0c;并探讨了在云计算环境中的应用和挑战。原文: Cloud-Native Architecture Patterns (Part 1)&#xff0c;Cloud-Native Architecture Patterns (Part 2) Bernard Hermant Uns…

【产品经理】总篇章

引言: 在最近频繁的产品职位面试中&#xff0c;我深刻体会到了作为产品需要的不仅仅是对市场和技术的敏锐洞察&#xff0c;更多的是在复杂多变的环境中&#xff0c;如何运用沟通、领导力和决策能力来引导产品从概念走向市场。这一系列博客将分享我多年经历和所学到的所以知识&a…

java —— 集合

一、集合的概念 集合可以看做是一个存储对象的容器&#xff0c;与数组不同的是集合可以存储不同类型的对象&#xff0c;但开发中一般不这样做。集合不能存储基本类型的对象&#xff0c;如果存储则需要将其转化为对应的包装类。 二、集合的分类 集合分为 Collection 和 Map 两…

React-表单受控绑定

概念&#xff1a;使用React组件的状态&#xff08;useState&#xff09;控制表单的状态 1.准备一个React状态值 2.通过value属性绑定状态&#xff0c;通过onChange属性绑定状态同步的函数

2024年5月总结及随笔之快乐五一

1. 回头看 日更坚持了517天。 读《天才与算法&#xff1a;人脑与AI的数学思维》更新完成 2023年至2024年5月底累计码字1177253字&#xff0c;累计日均码字2277字。 2024年5月码字95875字&#xff0c;同比增长66.7%&#xff0c;环比增长9.3%&#xff0c;日均码字数3092字&am…

STM32 定时器与PWM的LED控制

学习目标&#xff1a; 1. 使用定时器的某一个通道控制LED周期性亮灭&#xff1b; 2. 采用定时器PWM模式&#xff0c;让 LED 以呼吸灯方式渐亮渐灭。 一、定时器 1、STM32定时器介绍 STMicroelectronics是STM32微控制器中的重要块&#xff0c;具有丰富的外设和功能&#xff0…

Dijkstra求最短路篇一(全网最详细讲解两种方法,适合小白)(python,其他语言也适用)

前言&#xff1a; Dijkstra算法博客讲解分为两篇讲解&#xff0c;这两篇博客对所有有难点的问题都会讲解&#xff0c;小白也能很好理解。看完这两篇博客后保证收获满满。 本篇博客讲解朴素Dijkstra算法&#xff0c;第二篇博客讲解堆优化Dijkstra算法Dijkstra求最短路篇二(全网…

知识运维概述

文章目录 知识运维研究现状技术发展趋势 知识运维 由于构建全量的行业知识图谱成本很高&#xff0c;在真实的场景落地过程中&#xff0c;一般遵循小步快走、快速迭代的原则进行知识图谱的构建和逐步演化。知识运维是指在知识图谱初次构建完成之后&#xff0c;根据用户的使用反馈…

小白跟做江科大32单片机之对射式红外传感器计次

原理部分 1中断示意图&#xff0c;中断会打断主函数的执行&#xff0c;终端执行完成之后再返回主函数继续执行 2.STM32中断 这些灰色的是内核中断 这些白色的是普通中断 3.NVIC统一管理中断&#xff0c;每个中断通道都拥有16个可编程的优先等级&#xff0c;可对优先级进行分组…

Redis缓存(笔记一:缓存介绍和数据库启动)

目录 1、NoSQL数据库简介 2、Redis介绍 3、Redis(win系统、linux系统中操作) 3.1 win版本Redis启动 3.2 linux版本Redis启动 1、NoSQL数据库简介 技术的分类&#xff1a;&#xff08;发展史&#xff09; 1、解决功能性的问题&#xff1a;Java、Jsp、RDBMS、Tomcat、HTML、…