个人项目实训(六)

我做的部分是问题生成这一块,采用双编码器技术提高生成的效果。目前是在pytorch环境下,用现在最典型的seq2seq技术实现问题生成。

先进行数据清洗工作

在这里插入图片描述

比如说剔除空白字符,剔除带括号的英文,处理部分不匹配数据等。
.

下一步就是文本截断

我们这个模型是输入文章和答案来生成问题。相对而言答案长度可以取得较短,因为答案基本都是从原文中读取的,通常根据答案的前面部分,就已经能够推理出对应的提问。所以最终选取答案的长度为64。 优点:保留了绝大部分信息,长度短,可以加速训练和推理。

篇章中答案所在位置的附近与问题的相关性最强,所以取答案所在位置的前64个字符和后128个字符作为截取的篇章。

问题文本的长度均未超过131个字符,所以相当于未做截断。

在这里插入图片描述.

具体训练

训练时按照“[CLS]篇章[SEP]答案[SEP]问题[SEP]”格式输入。推断时按照“[CLS]篇章[SEP]答案[SEP]”格式输入。

在这里插入图片描述
在这里插入图片描述.

核心代码

主要分为三块
code/utils.py:进行数据预处理,转换数据格式等
code/train.py:用于模型的训练
code/infer.py:用于模型的推断(预测)

.

增加双编码器

双编码器可以加强答案信息,使模型提出更具针对性的问题。双编码对答案和段落分开建模,但是这也增加了模型的复杂性。

在这里插入图片描述
如上图所示,本文双编码器结合了这两种主要观点:不为 source 编码器提供额外的信息来强调答案位置,同时使用单独的 Answer encoder 对答案信息进行编码。

.

加入针对答案的编码器结构,显示地强调答案的重要性,生成更具针对性地问题。同时为了获取答案片段和输入序列的交互信息,通过注意力机制,对输入序列的信息进行进一步提取与过滤。简单的 Seq2Seq 模型框架,编码仅有简单的双向 LSTM。仅仅能捕获具有序列的信息的上下文信息,无法针对答案片段进行有效信息筛选与无效信息过滤,由此本模型引入门控自注意力网络。模型整体结构如下图所示。基于简单的序列到序列的框架,为了更好的获取基于答案片段的上下文表示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值