看文字知語義:谷歌推一步到位自然語言理解框架SLING|論文+程式碼

夏乙 編譯自 Google Research Blog

量子位 出品 | 公眾號 QbitAI

大多數自然語言理解(NLU)系統分析語言的過程是一條由分析步驟組成的流水線:先標註詞性,再進行句法依存分析,然後為輸入文字計算出語義表示。

谷歌打破了這條流水線上的所有步驟,把它們捏到了一起,推出了一步到位的自然語言理解系統:

SLING

看文字知語義:谷歌推一步到位自然語言理解框架SLING|論文+程式碼

SLING能夠直接分析自然語言文字,根據它的語義表示生成語義框架圖示。與原有的大多數系統相比,它避免了自然語言理解流水線的一個嚴重缺陷:前面步驟中的錯誤會影響後續步驟的分析。

實際上,流水線式的自然語言理解系統有利於對語言理解的不同階段進行模組化,但是,早期步驟中的錯誤會在後邊的步驟裡發生連鎖反應,對最終的表示產生影響。

比如說,一個典型的流程可能會在早期步驟中進行句法依存分析,後來又需要共指消解。這種情況下,如果依存分析出現錯誤,共指消解的結果也會受到影響。

而SLING這種直接從文字到語框架圖示的方法中,輸出的框架圖示能直接捕捉到使用者感興趣的語義標註,同時避開了流水線式系統所帶來的陷阱,還能防止出現不必要的計算。SLING使用一個專用的迴圈神經網路(RNN),透過框架圖示上的增量編輯運算,來為輸入文字計算輸出表示。

而框架圖示則足夠靈活,能夠捕捉到很多易引發興趣的語義任務。

SLING分析器的訓練只用到了輸入詞語,不需要依存分析等任何中間註釋。

在推理階段,SLING能夠快速進行分析,它提供了一個高效、可擴充套件的圖示儲存實現,以及一個生成高效程式碼來執行RNN的JIT編譯器。雖然SLING現在還在試驗階段,但它在普通桌上型電腦CPU上的分析速度已經超過了2500 token/秒。

框架語義分析

框架語義學將文字(例如一個句子)的意思表示為一組形式語句,每個形式語句成為一個“框架”,可以看作意義或者知識的一個單元,也包含和概念的互動,或者與之相關的其他框架。

SLING將所有語義框架組織成一些列插槽,每個插槽都有自己的名字(角色)和值,這個值可以是文字的,也可以是和另一個插槽之間的連線。

比如說這句話:

Many people now claim to have predicted Black Monday。

SLING會從中認出提及的實體(例如人物、地點、事件)、測量值(例如時間、距離)以及其他概念(例如動詞),然後將它們放置在與輸入中動詞相關的正確語義角色上。

比如說句中的“predict”,就表示為PREDICT-01框架。PREDICT-01和施行predict這個動作的主體有互動(插槽),透過ARG0插槽表示,ARG0與表示“people”的PERSON框架相連線;PREDICT-01還和被預測的客體有互動,表示為ARG1插槽,和表示“Black Monday”的EVENT框架連線。

如下圖所示:

看文字知語義:谷歌推一步到位自然語言理解框架SLING|論文+程式碼

框架語義分析的任務就是直接生成一幅圖示,包含像上圖這樣透過插槽互相連線的框架。

上面只是一個簡單的例子,框架圖示很強大,適用於各種複雜的語義標註任務。對於初學者來說,框架是一種將語言內部和外部資訊結合起來的方式。然後,這就可以用來處理複雜的語言理解問題,比如指代、隱喻、借代等。這些任務的語義框架圖示只在用到的框架型別、角色、連線限制上有所不同。

SLING

SLING透過為易引發興趣的語義框架進行最佳化,訓練了一個RNN。網路隱藏層中已經學習到的表示取代了流水線系統中手工調整的特徵組合和中間表示。

在內部,SLING使用編碼器-解碼器架構,其中使用諸如原始單詞,其後綴,標點符號等簡單詞彙特徵將每個輸入詞編碼成向量。而解碼器用這種表示和自己歷史中的迴圈特徵,來計算更新框架圖示以獲得輸入句子的預期框架語義表示所需的轉換序列。

在訓練模型時,SLING使用了TensorFlow和DRAGNN。

下面的動畫展示瞭如何用一次轉換將框架和角色增量新增到框架圖中。

正如前面用簡單例句所說明的那樣,SLING使用ARG1這一角色來連線VERB和EVENT框架,EVOKE轉換從文字中接下來的幾個token中喚起指定型別的框架。同樣,CONNECT轉換將兩個現有框架和一個特定角色連線起來。當輸入耗盡,最後一個轉換(STOP)執行完成,框架圖示被視為已完成,並返回給使用者,使用者可以檢視圖示,得到句子背後的語義。

這個轉換系統中有一個關鍵方面,就是會出現一個固定大小的框架注意力緩衝區,代表最近被喚醒或修改過的框架,如上圖的橙色框所示。這個緩衝區捕捉了我們傾向於想起最近喚醒、提及、增強過的知識。如果框架不再使用,隨著新框架的進入,它最終會被刷新出緩衝區。這個簡單的機制在捕捉大部分框架間連線上都非常有效。

相關資源

SLING是用C++寫成的,開原始碼地址:

https://github。com/google/sling

相關論文

SLING: A framework for frame semantic parsing

地址:https://arxiv。org/abs/1710。07032

看文字知語義:谷歌推一步到位自然語言理解框架SLING|論文+程式碼

— 完 —

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話介面,回覆“招聘”兩個字。

量子位 QbitAI · 頭條號簽約作者

վ‘ᴗ’ ի 追蹤AI技術和產品新動態