基于Python的自然语言处理系列(24):BiDAF(双向注意力流)

news2024/11/25 2:55:14

        在自然语言处理领域,机器阅读理解(Machine Comprehension, MC)是一个重要的任务。在这篇博文中,我们将实现论文 BiDAF 中提出的双向注意力流模型。BiDAF 主要改进了传统注意力机制中的早期信息摘要问题,并引入了字符嵌入来加强对单词细粒度信息的理解。

1. 加载 SQuAD 数据集

        SQuAD 数据集是一个问答数据集,问题的答案通常来自段落中的某些部分,加载数据集的代码与之前使用的相同。

import json

def load_json(path):
    '''
    加载 SQuAD 数据集的 JSON 文件。
    '''
    with open(path, 'r', encoding='utf-8') as f:
        data = json.load(f)
    return data

# 加载训练和验证数据集
train_data = load_json('data/squad_train.json')
valid_data = load_json('data/squad_dev.json')

2. 数据预处理

        为了将数据集转换为适合模型训练的形式,我们首先将每个段落的问题和答案提取出来,并将它们转换为字典列表。

def parse_data(data):
    '''
    解析 SQuAD 数据,将上下文、问题和答案转化为字典形式。
    '''
    data = data['data']
    qa_list = []

    for paragraphs in data:
        for para in paragraphs['paragraphs']:
            context = para['context']
            for qa in para['qas']:
                question = qa['question']
                for ans in qa['answers']:
                    qa_dict = {
                        'context': context,
                        'question': question,
                        'answer': ans['text'],
                        'start': ans['answer_start'],
                    }
                    qa_list.append(qa_dict)
    return qa_list

train_list = parse_data(train_data)
valid_list = parse_data(valid_data)

        我们将提取到的数据转换为 DataFrame 以便更容易处理:

import pandas as pd

train_df = pd.DataFrame(train_list)
valid_df = pd.DataFrame(valid_list)

2.1 构建词汇表和字符表

        在 BiDAF 中,我们不仅使用了词嵌入(word embedding),还使用了字符嵌入(character embedding)。因此,我们需要分别构建词汇表和字符表。

<

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

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

相关文章

在VSCode中编写Html

1.下载VSCode&#xff1a;Download Visual Studio Code - Mac, Linux, Windows 2.安装插件&#xff1a; 简体中文插件可把界面改成中文 3.打开一个文件夹&#xff1a;用于在这个文件夹内写Html 5.新建文件&#xff1a;sheet.html,按 &#xff01; tab键可以生成HTML文件标准格式…

网络基础 【HTTP】

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux初窥门径⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a; &#x1f4bb;操作环境&#xff1a; CentOS 7.6 华为云远程服务器 &#x1f339;关注我&#x1faf5;带你学习更多Linux知识…

JC4805快速入门

目录 一、产品概述二、驱动器参数2.1、产品尺寸2.2、技术参数 三、接口说明3.1、电源接口3.2、电机接口3.3、USB接口3.4、CAN接口3.5、SPI接口3.6、ABZ接口3.7、Hall接口3.8、电机温度检测3.9、状态指示灯 四、硬件接线五、软件操作5.1、设置参数5.2、零点校准5.3、运行调试5.4…

【JavaWeb】javaweb目录结构简介【转】

以上图说明&#xff1a; bbs目录代表一个web应用bbs目录下的html,jsp文件可以直接被浏览器访问WEB-INF目录下的资源是不能直接被浏览器访问的web.xml文件是web程序的主要配置文件所有的classes文件都放在classes目录下jar文件放在lib目录下

Gitee创建仓库,提交代码到自己的fork,合并到主分支

一、创建仓库 1、创建仓库 2、添加仓库成员 3、初始化项目 3.1 在项目目录中右击用Git Bash here打开&#xff0c;先git init创建新的空白存储库&#xff0c;使现有项目成为Git项目。 3.2 克隆仓库地址&#xff0c;拉取新建的仓库&#xff0c;此时项目文件夹中会出现一个仓库…

CNN-GRU时序预测 | MATLAB实现CNN-GRU卷积门控循环单元时间序列预测

时序预测 | MATLAB实CNN-GRU卷积门控循环单元时间序列预测 目录 时序预测 | MATLAB实CNN-GRU卷积门控循环单元时间序列预测预测效果基本介绍模型描述程序设计参考资料预测效果 基本介绍 本次运行测试环境MATLAB2020b 提出了一种基于卷积神经网络(Convolutional Neural Network…

《 C++ 修炼全景指南:十四 》大数据杀手锏:揭秘 C++ 中 BitSet 与 BloomFilter 的神奇性能!

本篇博客深入探讨了 C 中的两种重要数据结构——BitSet 和 BloomFilter。我们首先介绍了它们的基本概念和使用场景&#xff0c;然后详细分析了它们的实现方法&#xff0c;包括高效接口设计和性能优化策略。接着&#xff0c;我们通过对比这两种数据结构的性能&#xff0c;探讨了…

Ray_Tracing_The_Next_Week下

5image Texture Mapping 图像纹理映射 我们之前虽然在交点信息新增了uv属性&#xff0c;但其实并没有使用&#xff0c;而是通过p交点笛卡尔坐标确定瓷砖纹理或者大理石噪声纹理的值 现在通过uv坐标读取图片&#xff0c;通过std_image库stbi_load&#xff08;path&#xff09;…

“米哈游悄然布局未来科技:入股星海图,共绘具身智能机器人新篇章“

米哈游悄然入股具身智能机器人公司:技术布局与未来展望 近日,米哈游阿尔戈科技有限公司宣布入股具身智能机器人公司星海图,这一消息在行业内引起了广泛关注。米哈游,这家以游戏开发而闻名的企业,近年来正逐步扩大其在人工智能和新兴科技领域的投资布局,此次入股星海图正是…

k8s实战-2

k8s实战-2 一、Deployment1.多副本2.扩缩容3.自愈&故障转移4.滚动更新5.版本回退 二、Service1.ClusterIP2.NodePort 总结 一、Deployment Deployment 是 k8s 中的一个资源对象&#xff0c;用于管理应用的副本&#xff08;Pods&#xff09;。它的主要作用是确保集群中运行…

【web安全】——逻辑漏洞

1.逻辑漏洞 1.1. 简介 逻辑漏洞就是指攻击者利用业务/功能上的设计缺陷,获取敏感信息或破坏业务的完整性。一般出现在密码修改、越权访问、密码找回、交易支付金额等功能处。 逻辑漏洞的破坏方式并非是向程序添加破坏内容,而是利用逻辑处理不严密或代码问题或固有不足&#x…

震动传感器介绍及实战

目录 前言 震动传感器 1.震动传感器配图 2.震动传感器原理图 3.震动传感器使用 1-震动传感器的意义 2-震动传感器的应用场景 3- SW-18010P震动传感器使用方法 震动传感器控制灯 操作 增加延时 使用SPC-ISP生成演示函数 总结 前言 我们上节已经简单了解了LED的使用…

【GC日志和OOM日志分析】JVM GC日志和OOM Dump文件分析

1 缘起 充电、充电、充电。 增加一些必备的知识&#xff0c;帮助后续使用。 2 配置JVM参数 为分析GC日志以及OOM相关信息&#xff0c;配置JVM参数&#xff0c;分为三个部分&#xff1a; &#xff08;1&#xff09;堆内存&#xff0c;包括年轻代、最大堆内存&#xff1b; &a…

2024CSP-J复赛易错点

低级错误 不开long long见祖宗写代码要有输入&#xff0c;别没写输入就交写完代码要在本地测试&#xff0c;多想写极端测试数据&#xff0c;或对拍注意考官说文件夹怎么建&#xff0c;别文件夹建错&#xff0c;爆0别忘写freopen或忘给freopen去注释记着把.exe文件删掉考试时不…

海龟绘图画小汽车

1、效果图&#xff1a; 2、完整代码 import turtlet turtle.Turtle() #创建一个新的画布对象t.penup() t.goto(0,80) t.pendown()t.fillcolor("red") t.begin_fill() t.lt(180) t.fd(60) t.lt(45) t.fd(113) t.rt(45) t.fd(80) t.lt(90) t.fd(80) t.…

win系统网络重置

重置网络命令&#xff1a;netsh winsock reset 输入winR 调用运行窗口&#xff0c;回车 输入重置网络命令&#xff1a;netsh winsock reset 注意空格

国庆刷题(day4)

C语言&#xff1a; C&#xff1a;

插画共享系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;插画信息管理&#xff0c;基础数据管理&#xff0c;论坛管理&#xff0c;公告信息管理&#xff0c;轮播图信息管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;插画信…

Elasticsearch:探索 Elastic 向量数据库

作者&#xff1a;来着 Elastic Justin Castilla 向量数据库正迅速成为语义搜索的事实上的数据存储&#xff0c;语义搜索是一种考虑上下文和内容含义的搜索&#xff0c;而不是传统的关键字搜索。Elastic 一直提供执行语义搜索的现代工具&#xff0c;识别和理解查询向量数据库所需…

(java)简单设计一个本地搜索,你会怎么实现

目录 1. 需求分析 2. 系统设计 主要类 3. Java代码实现 4. 进一步扩展 在Java中实现一个简单的本地搜索功能的设计流程通常包括以下几个步骤&#xff1a; 1. 需求分析 输入&#xff1a;用户输入要索引的目录路径和搜索的关键词。处理&#xff1a; 扫描指定目录及其子目录…