1. 程式人生 > 實用技巧 >關係抽取--Relation Extraction: Perspective from Convolutional Neural Networks

關係抽取--Relation Extraction: Perspective from Convolutional Neural Networks

一種使用CNN來提取特徵的模型,通過CNN的filter的大小來獲得不同的n-gram的資訊,模型的結構如下所示:

輸入

輸入使用word2vec的50維詞向量,加上 position embeddingposition embedding 是一句話的每個單詞距離兩個entity的距離,比如:

In the morning, the <e1>President</e1> traveled to <e2>Detroit</e2>

句子的長度為n,那麼對於第i個單詞,他的distance就是i-n, 所以distance的範圍是 -n + 1 ~ n -1

,position embedding是一個 \((2n-1) * m_d\) 的矩陣,\(m_d\)是embedding的維度。一句話中有兩個entity,所以每個單詞要計算兩次distance。最後將word embedding position embedding拼接起來作為模型的輸入,輸入資料的shape是 \((m_e + 2m_d) * n\)\(m_e\)是embedding的維度, \(m_d\)position embedding的維度。

卷積

採用多個卷積核捕獲更多的特徵。如果卷積核的大小是 w, 那麼,會有權重矩陣 \(\mathbf{f}=\left[\mathbf{f}_{1}, \mathbf{f}_{2}, \ldots, \mathbf{f}_{w}\right]\)

, f是卷積核,\(f_i\)是大小和\(x_i\)一致的weight。

\[s_{i}=g\left(\sum_{j=0}^{w-1} \mathbf{f}_{j+1}^{\top} \mathbf{x}_{j+i}^{\top}+b\right) \]

模型中會有多個不同大小的卷積核, 每種卷積核最後會經過max pooling,最後得到的向量再輸入到linear層中

\[p_{\mathbf{f}}=\max \{\mathbf{s}\}=\max \left\{s_{1}, s_{2}, \ldots s_{n-w+1}\right\} \]

s是一個大小為w的卷積核在一句話上經過卷積得到的各個位置的score, 池化操作就是找到這句話中的最大的score。往往同樣大小的卷積核會有n個,那麼這些卷積核的池化結果就是長度為n的張量。也就是輸出的size是(batch, n)

,如果有m種大小不同的卷積核,則把所有卷積核的輸出拼到一起。也就是(batch, n * m)

分類

最後接入到全連線層進行分類