選自Github
機器之心編譯
參與:杜夏德、李澤南、吳攀
在這篇文章中,我們盤點了哈佛大學開源的 9 大有關自然語言處理的項目。雖然里面的代碼是研究代碼(通常還有一些使用的注意事項),但也已經得到了哈佛研究團隊之外的產業組織的應用,其相關項目的證書請參閱對應的 repo。
1.Sequence-to-Sequence Learning with Attentional Neural Networks(使用注意神經網絡的序列到序列學習)
項目地址:https://github.com/harvardnlp/seq2seq-attn
在帶有(可選)注意(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 中狀態變化的視覺分析)
項目地址:https://github.com/HendrikStrobelt/lstmvis
循環神經網絡(RNN),尤其是LSTM,是學習一個隱藏其序列輸入表征的密集黑箱測試的序列處理的有效工具。對這些模型有更好理解的研究者已經研究了隱藏狀態表征中隨時間發生的變化,并注意到有些可以解釋但噪聲明顯的模式。
我們提出的LSTMV是用在RNN中的一款視覺分析工具,其關注的重點是理解這些隱藏的狀態動態。這個工具允許用戶選擇一個關于局部狀態變化的假設輸入范圍,以將這些狀態變化匹配到一個大數據庫中類似的模式上,并將這些結果與它們的域(domain)的結構注釋(structural annotations)進行比對。我們為這個工具提供了數據來分析數據集上特定的隱藏狀態屬性,包括嵌套、短語結構、和弦進程(chord progressions)并展示如何使用這個工具為進一步的統計分析來隔離模式。
3.CNN for Text Classification(用于文本分類的CNN)
項目地址::https://github.com/harvardnlp/sent-conv-torch
這個代碼用GPU在Torch中實現了Kim(2014)的句子卷積代碼。它復制了現有數據庫中的結果,并允許在任意其它的文本數據庫上訓練模型。
4.Im2Markup
項目地址:https://github.com/harvardnlp/im2markup
在最近圖像字幕生成和光學字符識別(OCR)研究進展的基礎上,我們提出了一個通用的基于深度學習的系統來將圖像反編譯成標識性置標語言(presentational markup)。雖然這個任務在OCR中已經得到了充分研究,但是我們用的是完全不同的數據驅動的方法。我們的模型不需要任何潛在的標記語言知識,僅在真實世界的樣本數據中進行端到端(end-to-end)的訓練即可。這個模型實現了一個卷積網絡,該網絡將文本和布局識別(text and layout recognition)與一個基于注意的神經機器翻譯系統串聯起來。為了訓練和評估這個模型,我們引入了一個與 LaTeX標記語言配對的經過了真實世界渲染的數學表達式的新數據庫,以及一個與HTML代碼片段配對的網頁的合成數據庫。試驗結果顯示該系統在兩個數據集的精確標記生成上非常有效。而一個標準特定域的LaTeX OCR系統的精確度能達到25%,我們的模型準確再現了樣本中75%的渲染的圖像。
5.ABS: Abstractive Summarization
項目地址:https://github.com/harvardnlp/NAMAS
該項目包含了來自以下論文的 Abs.神經抽象摘要系統(neural abstractive summarization system)。
這里發布的代碼可以:
提取摘要數據集
訓練神經摘要模型
用ROUGE構建評估集
調試提取的特征
6.LSTM Character-Aware Language Model
項目地址:https://github.com/yoonkim/lstm-char-cnn
代碼來自 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 (神經指代消解)
項目地址:https://github.com/swiseman/nn_coref
神經指代模型(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
項目地址:https://github.com/ikekonglp/PAD
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.安卓系統中的神經機器翻譯
項目地址:https://github.com/harvardnlp/nmt-android
基于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核心方面的基本了解,接著快速轉向一些高級的話題,比如內存使用、神經網絡模塊的細節和循環神經網絡。
本文由機器之心編譯,轉載請聯系本公眾號獲得授權。