谷歌推自然語言理解框架SLING,理解一步到位
大多數自然語言理解(NLU)系統分析語言的過程是一條由分析步驟組成的流水線:先標注詞性,再進行句法依存分析,然后為輸入文本計算出語義表示。
谷歌打破了這條流水線上的所有步驟,把它們捏到了一起,推出了一步到位的自然語言理解系統: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通過為易引發興趣的語義框架進行優化,訓練了一個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
— 完 —