拓冰建站拓冰建站
首页 / 资讯中心 / 正文

DocRED 基线模型的 3 大特征工程:共指嵌入、NER 类型嵌入与距离嵌入详解

DocRED 基线模型的 3 大特征工程共指嵌入、NER 类型嵌入与距离嵌入详解【免费下载链接】DocREDDataset and codes for ACL 2019 DocRED: A Large-Scale Document-Level Relation Extraction Dataset.项目地址: https://gitcode.com/gh_mirrors/do/DocREDDocRED是 ACL 2019 发布的最大规模文档级关系抽取Document-Level Relation Extraction数据集与官方基线代码库。本文带你快速看懂 DocRED 基线模型中最核心的3 大特征工程共指嵌入Coreference Embedding、NER 类型嵌入Entity Type Embedding与距离嵌入Distance Embedding理解它们如何帮助模型读懂实体之间的关系。 一分钟认识 DocRED它解决什么问题传统的关系抽取只关注一句话里两个实体的关系但现实文档中实体关系往往跨越多个句子、多个同义表达。例如同一实体如鲁迅与周树人在文中多次出现模型需要知道它们是同一个东西两个实体可能相距甚远模型需要感知它们的距离与方向实体本身有类别人物、地点、组织等类别信息对判断关系至关重要。DocRED 正是针对这些难点构建的文档级关系抽取基准标注了命名实体与关系要求模型综合整个文档的多句话来推理实体间的关系。官方基线模型位于code/models/目录下包括LSTM.py、BiLSTM.py、CNN3.py、ContextAware.py等本文以最常用的LSTM / BiLSTM 基线为例讲解。 快速上手获取 DocRED 基线代码想动手体验只需两步1️⃣ 克隆仓库并安装依赖git clone https://gitcode.com/gh_mirrors/do/DocRED pip3 install -r code/requirements.txt2️⃣ 准备数据按code/README.md的说明将预处理数据放入code/prepro_data/目录然后即可启动训练python3 train.py --model_name BiLSTM --save_name checkpoint_BiLSTM --train_prefix dev_train --test_prefix dev_dev安装与数据准备的完整步骤可参考 code/README.md全局超参数则集中在code/config/Config.py中。 3 大特征工程一览表DocRED 基线模型在词嵌入之外额外拼接了 3 种手工设计的特征嵌入。它们都在code/config/Config.py中通过超参数控制特征超参数维度作用 共指嵌入coref_size 2020让模型区分哪个 token 属于哪个实体️ NER 类型嵌入entity_type_size 2020告诉模型实体的类别人名、地名等 距离嵌入dis_size 2020编码头尾实体的距离与方向三者最终与词嵌入一起拼接送入 LSTM / BiLSTM 进行上下文建模见code/models/BiLSTM.py。词嵌入 共指嵌入 NER类型嵌入 → LSTM 编码 → 实体表示 → 距离嵌入 → 双线性层 → 97 类关系下面逐一拆解。 特征一共指嵌入Coreference Embedding——让模型认出同一个实体为什么需要它文档中一个实体Entity往往由**多个提及Mention**组成。比如苹果公司、苹果、该公司可能都指代同一实体。如果只看词本身模型根本不知道哪些词打包成了同一个实体。实现思路数据预处理阶段code/gen_data.py遍历文档中每个实体的所有提及把该提及覆盖的每个 token 位置标记为所属实体的编号从 1 开始存为*_pos.npy矩阵模型阶段用一个 Embedding 层nn.Embedding(max_length, coref_size, padding_idx0)为每个实体编号生成20 维向量与词向量拼接后一起输入 RNN。也就是说同一个实体下的所有 token无论词面多不同都会共享同一个共指向量——这就是共指信息的注入方式。 相关实现在 code/models/LSTM.py 中的coref_embed预处理逻辑在 code/gen_data.py。效果类比这就像给文档中的每个实体发了一张工牌词向量描述这个词说什么共指向量描述这个词归哪个实体管。️ 特征二NER 类型嵌入Entity Type Embedding——告诉模型它是谁为什么需要它关系抽取中实体类型是强信号。例如人物地点→ 很可能触发出生地关系作品人物→ 很可能触发作者关系。实现思路数据预处理阶段code/gen_data.py将每个实体提及的 NER 类型如 PERSON、LOCATION、ORGANIZATION 等通过ner2id.json词表映射为编号写入*_ner.npy模型阶段使用nn.Embedding(7, entity_type_size, padding_idx0)即7 类1 个 padding 6 种实体类型各映射为 20 维向量同样与词向量拼接输入 RNN。 对应代码见 code/models/BiLSTM.py 中的ner_embNER 类型与编号的映射来自数据目录中的ner2id.json。为什么只有 7 类DocRED 的实体类型体系比较精简6 类 1 个 padding因此嵌入表只有 7 行。这体现了特征工程的一个原则类别空间小、语义明确的信号用小而精的嵌入表就够了。 特征三距离嵌入Distance Embedding——把距离量化成 9 档为什么需要它两个实体的距离直接影响关系概率相距 1 个词如作者-作品紧密搭配与相距 200 个词跨段落推理是完全不同的推理难度而且方向也有意义头实体在尾实体之前还是之后往往暗示不同的语义模式。实现思路两级量化距离嵌入是整个基线中最巧妙的部分分两步走第一步距离分桶在code/config/Config.py中定义原始距离可能高达数百太大直接嵌入会浪费参数。基线用dis2idx映射表把距离对数式地量化为 9 档原始距离量化档位原始距离量化档位1132 ~ 6362264 ~ 12773 ~ 43128 ~ 25585 ~ 74≥ 25698 ~ 155第二步方向编码 嵌入查表在code/config/Config.py的 batch 构建中先计算带符号距离头实体在前为正、在后为负再统一10 偏移得到 1~19 的桶编号10 表示零距离并作为 padding。最后用nn.Embedding(20, dis_size, padding_idx10)查出 20 维向量。也就是说1 个 20 维向量同时编码了距离有多远 方向是谁先出现两个维度的信息。距离嵌入怎么用注意一个细节距离嵌入不进入 RNN而是在实体表示头实体、尾实体各自做加权平均池化得到之后才拼接进双线性层Bilinear头实体表示 ⊕ 头→尾距离向量尾实体表示 ⊕ 尾→头距离向量两路拼接后再送入nn.Bilinear输出97 类关系96 种关系 1 种无关系。这个实体交互 距离感知的打分结构是文档级关系抽取基线的经典范式。 三大特征如何协同一条完整的特征流水线把三个特征串起来DocRED 基线模型的完整数据流如下阶段做什么关键位置① 预处理生成 word / pos共指/ ner / char 四个矩阵code/gen_data.py② 输入拼接词向量 共指向量 NER 向量每个 token 三路拼接code/models/LSTM.py③ 上下文编码单向/双向 LSTMhidden 128词嵌入冻结不训练code/models/BiLSTM.py④ 实体表示用实体内 token 的加权平均池化出头/尾实体向量h_mapping/t_mapping⑤ 距离打分实体向量拼接距离嵌入 → 双线性层 → 97 类关系概率code/config/Config.py几个值得新手记住的设计点✂️词嵌入是冻结的requires_grad False模型完全依赖上下文网络和特征嵌入来适应任务这大大降低了过拟合风险实体表示是平均池化而非取单个 token天然兼容同一实体多个提及的文档级场景⚖️所有特征维度都很小各 20 维手工特征轻、信息密度高正是 2019 年深度模型之外特征工程价值的典型体现。✅ 总结从 DocRED 学到 3 个通用经验实体边界特征共指嵌入凡是文档级任务哪些词属于同一实体都是必备信号类型先验特征NER 嵌入类别信号小而强用紧凑嵌入表注入即可距离量化特征距离嵌入连续大数值先分桶再嵌入是处理位置/距离类特征的通用技巧。掌握这 3 大特征工程你就理解了 DocRED 官方基线的骨架。想要深入实验可以从code/train.py与code/test.py入手对照code/models/下的多个模型实现LSTM、BiLSTM、CNN3、ContextAware观察每种结构在特征使用上的差异——例如ContextAware在距离打分之上还叠加了自注意力思路一脉相承。祝你在 DocRED 上玩得开心【免费下载链接】DocREDDataset and codes for ACL 2019 DocRED: A Large-Scale Document-Level Relation Extraction Dataset.项目地址: https://gitcode.com/gh_mirrors/do/DocRED创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门