Dependency Parsing


句子的依賴結構表現在哪些單詞依賴哪些單詞。單詞之間的這種關系及可以表示為優先級之間的關系等。

Dependency Parsing

通常情況下,對於一個輸入句子:\(S=w_{0} w_{1} \dots w_{n}\)。 我們用 \(w_{0}\) 來表示 ROOT,我們將這個句子轉換成一個圖 G。

依賴性解析通常分為訓練與預測兩步:

  1. 使用已經解析的注釋庫訓練模型 M
  2. 得到模型 M之后,對於句子 S,通過模型解析出圖 G。

基於轉換的依賴性解析

該方法就是通過訓練數據訓練一個狀態機,通過狀態機轉換對源語句進行解析。

基於貪心確定性過渡的解析

這個轉換的系統本質也是一個狀態機,但是不同的是,對於一個初始狀態,會有多個終止狀態。

對於每一個源語句 \(S=w_{0} w_{1} \dots w_{n}\) 每個狀態可以表示成三部分 \(c=(\sigma, \beta, A)\)

  1. 第一部分 \(\sigma\) 用來存儲來自 S 的 \(w_i\) ,使用棧存儲
  2. \(\beta\) 表示一個來自 S 的緩沖
  3. A 表示 \(\left(w_{i}, r, w_{j}\right)\) 的集合,其中 \(w_{i}, w_{j}\) 來自 S,然后 r 表示 \(w_{i}, w_{j}\)之間的關系。

狀態初始化:

  1. 初始狀態是 \(C_0\) 可以表示為 \(\left[w_{0}\right]_{\sigma},\left[w_{1}, \ldots, w_{n}\right]_{\beta}, \varnothing\)。可以看到只有 \(w_0\)\(\sigma\) 中,其它的 \(w_i\) 都在 \(\beta\) 中。還沒有任何關系。
  2. 終止狀態就是 \(\sigma,[ ]_{\beta}, A\) 形式。

狀態轉換的方法:

  1. 從緩存中移除一個單詞兵放在 \(\sigma\) 棧頂,
  2. \(\mathrm{L} \mathrm{EFT}-\mathrm{A} \mathrm{RC}_{r}(l)\):將 \(\left(w_{j}, r, w_{i}\right)\) 添加至集合 A,\(w_{i}\) 是棧 \(\sigma\) 的第二個數據,\(w_{j}\) 是棧頂的單詞,將 \(w_{i}\) 從棧中移除,這個 ARC 關系用 \(l\) 表示。
  3. \(\mathrm{RIGHT}-\mathrm{ARC}_{r}(l)\):將 \(\left(w_{i}, r, w_{j}\right)\) 添加到集合 A, \(w_{i}\)是棧的第二個單詞,

神經依賴性解析

神經以來解析的效果要好於傳統的方法。主要區別是神經依賴解析的特征表示。

我們描述的模型使用 arc 系統作為變換,我們的目的就是將原序列變成一個目的序列。就是完成解析樹。這個過程可以看作是一個 encode 的過程。

Feature Selection:

第一步就是要進行特征的選擇,對於神經網絡的輸入,我們需要定義一些特征,一般有以下這些:

\(S_{w o r d}\):S 中一些單詞的向量表示

\(S_{\text {tag}}\):S 中一些單詞的 Part-of-Speech (POS) 標簽,POS 標簽包含一個小的離散的集合:\(\mathcal{P}=\{N N, N N P, N N S, D T, J J, \dots\}\)

\(S_{l a b el}\):S 中一些單詞的 arc-labels ,這個標簽包含一個小的離散集合,描述依賴關系:\(\mathcal{L}=\{\) $amod, tmod $, \(n s u b j, c s u b j, d o b j\), \(\ldots\}\)

在神經網絡中,我們還是首先會對這個輸入處理,將這些編碼從 one-hot 編碼變成稠密的向量編碼

對於單詞的表示我們使用 \(e_{i}^{w} \in \mathbb{R}^{d}\)。使用的轉換矩陣就是 \(E^{w} \in \mathbb{R}^{d \times N_{w}}\)。其中 \(N_w\) 表示字典的大小。\(e_{i}^{t}, e_{j}^{l} \in \mathbb{R}^{d}\) 分別表示第 \(i\) 個POS標簽與第 \(j\) 個ARC 標簽。對應的矩陣就是 \(E^{t} \in \mathbb{R}^{d \times N_{t}}\) and \(E^{l} \in \mathbb{R}^{d \times N_{l}}\)。其中 \(N_t\)\(N_L\) 分別表示所有的 POS標簽 與 ARC標簽的個數。我們用 \(S^{w}, S^{t}, S^{l}\) 來表示 word, POS,ARC 的信息。

例如對於上面的這個圖:

\(S_{tag}= \left\{l c_{1}\left(s_{2}\right) . t, s_{2} .t, r c_{1}\left(s_{2}\right) . t, s_{1} .t\right\}\)。然后我們將這些信息變成輸入層的向量,比如對於單詞來說,\(x^{w}=\left[e_{w_{1}}^{w} ; e_{w_{2}}^{w} ; \ldots e_{w_{n} w}^{w}\right]\)。其中 \(S_{word}=\left\{w_{1}, \ldots, w_{n_w}\right\}\),表示輸入層的信息。同樣的方式,我們可以獲取到 \(x^t\)\(x^l\)。然后我們經過一個隱含層,這個比較好理解:

\[h=\left(W_{1}^{w} x^{w}+W_{1}^{t} x^{t}+W_{1}^{l} x^{l}+b_{1}\right)^{3} \]

然后再經過一個 \(softmax\) 的輸出層 \(p=\operatorname{softmax}\left(W_{2} h\right)\), 其中 \(W_2\) 是一個輸出的矩陣,\(W_{2} \in \mathbb{R}|\mathcal{T}| \times d_{h}\)

POS and label embeddings

就像單詞的詞典一樣,我們對 POS 與 ARC 也有一個集合,其中 \(\mathcal{P}=\{\mathrm{NN}, \mathrm{NNP} ,\mathrm{NNS}, \mathrm{DT}, J J, \ldots \}\) 表示單詞的一些性質, 例如 \(NN\) 表示單數名詞。對於 \(\mathcal{L}=\{\)$ amod, tmod, nsubj, csubj, dobj$, \(\ldots\}\)表示單詞間的關系。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM