哈佛大學九大自然語言處理開源專案

機器之心發表於2016-10-20

在這篇文章中,我們盤點了哈佛大學開源的 9 大有關自然語言處理的專案。雖然裡面的程式碼是研究程式碼(通常還有一些使用的注意事項),但也已經得到了哈佛研究團隊之外的產業組織的應用,其相關專案的證書請參閱對應的 repo。


1. Sequence-to-Sequence Learning with Attentional Neural Networks(使用注意神經網路的序列到序列學習)

在帶有(可選)注意(attention)的標準seq2seq模型的Torch實現中,其編碼器-解碼器(encoder-decoder)模型是LSTM。編碼器可以是一個雙向LSTM。此外還能在字元嵌入(character embeddings)上執行一個卷積神經網路然後再執行一個 highway network,從而將字元(而不是輸入的詞嵌入)作為輸入來使用。


該注意模型來源於發表於EMNLP 2015大會上的論文《Effective Approaches to Attention-based Neural Machine Translation》。我們使用該論文中的帶有輸入-反饋方式的全域性通用注意力模型( global-general-attention model with the input-feeding approach)。輸入-反饋作為可選項,也可去掉。


其中的字元模型來源於AAAI 2016上的論文《Character-Aware Neural Language Models》。


2. Visual Analysis for State Changes in RNNs(用於 RNN 中狀態變化的視覺分析)

迴圈神經網路(RNN),尤其是LSTM,是學習一個隱藏其序列輸入表徵的密集黑箱測試的序列處理的有效工具。對這些模型有更好理解的研究者已經研究了隱藏狀態表徵中隨時間發生的變化,並注意到有些可以解釋但噪宣告顯的模式。


我們提出的LSTMV是用在RNN中的一款視覺分析工具,其關注的重點是理解這些隱藏的狀態動態。這個工具允許使用者選擇一個關於區域性狀態變化的假設輸入範圍,以將這些狀態變化匹配到一個大資料庫中類似的模式上,並將這些結果與它們的域(domain)的結構註釋(structural annotations)進行比對。我們為這個工具提供了資料來分析資料集上特定的隱藏狀態屬性,包括巢狀、短語結構、和絃程式(chord progressions)並展示如何使用這個工具為進一步的統計分析來隔離模式。


3. CNN for Text Classification(用於文字分類的CNN)

這個程式碼用GPU在Torch中實現了Kim(2014)的句子卷積程式碼。它複製了現有資料庫中的結果,並允許在任意其它的文字資料庫上訓練模型。


4. Im2Markup

在最近影像字幕生成和光學字元識別(OCR)研究進展的基礎上,我們提出了一個通用的基於深度學習的系統來將影像反編譯成標識性置標語言(presentational markup)。雖然這個任務在OCR中已經得到了充分研究,但是我們用的是完全不同的資料驅動的方法。我們的模型不需要任何潛在的標記語言知識,僅在真實世界的樣本資料中進行端到端(end-to-end)的訓練即可。這個模型實現了一個卷積網路,該網路將文字和佈局識別(text and layout recognition)與一個基於注意的神經機器翻譯系統串聯起來。為了訓練和評估這個模型,我們引入了一個與 LaTeX標記語言配對的經過了真實世界渲染的數學表示式的新資料庫,以及一個與HTML程式碼片段配對的網頁的合成資料庫。試驗結果顯示該系統在兩個資料集的精確標記生成上非常有效。而一個標準特定域的LaTeX OCR系統的精確度能達到25%,我們的模型準確再現了樣本中75%的渲染的影像。


5. ABS: Abstractive Summarization

該專案包含了來自以下論文的 Abs.神經抽象摘要系統(neural abstractive summarization system)。


這裡釋出的程式碼可以:

  • 提取摘要資料集

  • 訓練神經摘要模型

  • 用ROUGE構建評估集

  • 除錯提取的特徵


6. LSTM Character-Aware Language Model

程式碼來自 AAAI 2016 論文《Character-Aware Neural Language Models》。


這是一個僅建立在字元輸入上的一個神經語言模型(NLM)。預測還是在詞水平上進行。當輸入一個LSTM迴圈神經網路語言模型(RNN-LM)時,該模型在字元上啟用了一個卷積神經網路(CNN)。也可選擇讓該CNN的輸出透過一個 Highway Network,這能提升表現。

多數基礎程式碼來源於Andrej Karpathy的字元RNN實現:https://github.com/karpathy/char-rnn。


7. Neural Coreference Resolution (神經指代消解)

神經指代模型(Neural Coref Models),在論文 Learning Global Features for Coreference Resolution(Sam Wiseman, Alexander M. Rush, and Stuart M. Shieber, NAACL 2015)和Learning Anaphoricity and Antecedent Ranking Features for Coreference Resolution(Sam Wiseman, Alexander M. Rush, Stuart M. Shieber, and Jason Weston. ACL 2015)中有所描述。


8. PAD: Phrase-structure After Dependencies

PAD是一款免費軟體;你可以遵照由 Free Software Foundation公佈的GNU寬通用公共許可來修改/重發它;也可以二版的許可,或者後面其他版本的許可(看你自己的選擇)。


釋出PAD是希望它能變得有用,但是我們並不擔保。


你應該會收到一份連同這個程式的GNU通用公共許可證;如果沒有,寫信給 Free Software Foundation,地址是59 Temple Place, Suite 330, Boston, MA 02111-1307 USA。


目標:

  • 依存分析器(dependency parsers)快速、精確,並可以產生易於解釋的結果,短語結構分析雖然很便捷但在很多語言處理任務中需要輸入。

  • 該PAD分析器能產生依存分析後的片語(phrases-after-dependencies)。給它依存分析的輸出,它將會產生最佳化的約束短語結構分析。


9. 安卓系統中的神經機器翻譯

基於Sequence-to-Sequence Learning with Attentional Neural Networks專案: http://github.com/harvardnlp/seq2seq-attn。和一篇文獻:

http://www.people.fas.harvard.edu/~yoonkim/data/emnlp_2016.pdf


神經機器翻譯(NMT)在翻譯中提供了統計方式之外的另一種方式,同時也更加簡便。然而,如果想要達到有競爭力的表現,神經機器翻譯模型會變得非常巨大。本論文中我們考慮了將知識提煉(knowledge distillation)方式(Bucila 等人,2006;Hinton等人,2015)加入機器神經翻譯中,以解決其體量問題,這種方式已在其他領域中被證明能夠成功減小神經模型的尺寸。我們證明了適用於詞級預測的標準知識提煉方式在神經機器翻譯中是有效的,同時也介紹了兩種新的序列級知識提煉方式,它們可以進一步提升效能。令人有些驚訝的是,這些方式可以消除對定向搜尋(beam search)的需求(即使應用在原始教師模型(teacher model)上)。我們最好的學生模型(student model)在效能稍有損失的情況下執行速度比最好的教師模型速度快10倍。它同時大大優於沒有知識提煉的基準模型,在貪婪解碼(greedy decoding)/定向搜尋中達到4.2/1.7的 BLEU。當學生模型應用了權重修剪(weight pruning)的知識提煉結果時,其引數相比教師模型小13倍,同時 BLEU 減少0.4。


教程


如果你是Torch新手,我們準備了NLP機器學習研究生班CS287的一套教材。這些筆記是由Sam Wiseman和Saketh Rama準備的,你可以由此獲得對Torch核心方面的基本瞭解,接著快速轉向一些高階的話題,比如記憶體使用、神經網路模組的細節和迴圈神經網路。

相關文章