瑞金医院知识图谱构建

in 知识图谱 with 0 comment view 70 times
 graph LR;
知识图谱构建-->实体识别;实体识别-->题目2;
知识图谱构建-->关系抽取;
知识图谱构建-->题目1;
知识图谱构建-->难点;难点-->计划;
click 知识图谱构建 "#menu_index_1"
click 实体识别 "#menu_index_2"
click 题目2 "#menu_index_3"
click 关系抽取 "#menu_index_4"
click 题目1 "#menu_index_5"
click 难点 "#menu_index_6"
click 计划 "#menu_index_7"

知识图谱构建

实体识别

题目2

image.png

关系抽取

题目1

image.png

难点

image.png

第一个baseline是PCNN(Zeng et al., 2015),该模型通过分段最大池化层使得CNN能够在编码阶段更关注于句子中的两个实体,更好地捕获实体间的上下文关系;
第二个baseline是BiLSTM+attention(Zhou et al., 2016),该模型通过注意力机制,对RNN编码后的特征向量进行加权求和,
其本质也是希望通过权重大小的变化,使得模型更关注于句子中两个实体的特征信息。
对于第二个baseline,在实现过程中我们对其进行略微改进,主要借鉴ELMO(Peters et al. 2018)的部分思想——浅层( First Bi-LSTM Layer)的输出表征比较倾向于语法信息,而高层( Second Bi-LSTM Layer)输出表征比较倾向于语义信息。因此我们将模型中两层BiLSTM编码后输出的结果进行了级联。
在上述两个baseline的基础上,我们综合取舍二者的优缺点。
我们使用2、3、5三种窗口大小的卷积核对Word embedding进行卷积操作,卷积结果与word embedding进行级联后作为第一层BiLSTM的输入

input_size=config.embedding_dim + len(self.window_sizes)*config.cnn_dim, 

然后将第一层和第二层的BiLSTM的输出进行级联,通过注意力机制得到最终的特征向量,最后通过两层全连接层进行分类。

        lstm_out1, _ = self.bilstm1(embed_x)
        lstm_out2, _ = self.bilstm2(lstm_out1)
        lstm_out = torch.cat([lstm_out1, lstm_out2], dim=2)
        attn_in = lstm_out
        attn_out = self.attention(attn_in, x_mask) 
        out = attn_out.view(-1, attn_out.size(1))
        out = self.dropout(out) 
        out = F.relu(self.fc1(out))
        out = self.dropout(out)
        out = self.fc2(out)

经实验证明,该模型取得了优于两个baseline的成绩,之后我们又在此核心模型基础上,又提出三个变体,分别作出如下改变:

  1. 核心模型变体1:在CNN编码阶段。仅保留窗口大小为3的CNN。
  2. 核心模型变体2:在CNN编码阶段。添加窗口大小为1的CNN。
  3. 核心模型变体3:将RNN编码后的Attention层,替换为Piecewise max pooling,即baseline1所采用分段最大池化层。
    最后我们将核心模型与三个变体进行集成,集成的策略为基于验证集得分的加权平均。

计划

第一名的代码是可以实现的

https://app.yinxiang.com/shard/s68/nl/15019764/443adcbc-6b84-45bf-b70b-3f31ef7c2c45/

Responses