自然語言是人類知識的抽象濃縮表示,而自然語言理解是人工智能研究領域中極具挑戰的一個分支。上次,《自然語言處理在 2017 年有哪些值得期待的發展?》中,我們已經講到,2016 年是深度學習大潮沖擊 NLP 的一年,通過去年一年的努力,深度學習在 NLP 領域已經站穩了腳跟。其中,對話交互系統已經成為一個重要的應用研究領域,2017 年的自然語言對話系統,將開創一個新的人機交互時代。
通過深度學習和其他機器學習技術的模型組合,竹間智能也已初步實現了自然語言對話中的意圖識別、上下文理解和多輪對話。本文將基于竹間智能的一些經驗和探索,從分詞、詞性等基礎模塊,到機器翻譯、知識問答等領域,列舉并分析一些深度學習在 NLP 領域的具體運用,希望對大家研究深度學習和 NLP 有所幫助。
事實上,從分詞、詞性、語法解析、信息抽取等基礎模塊,到自然語言生成、機器翻譯、對話管理、知識問答等高層的 NLP 領域,幾乎都可以應用以 CNN、RNN 為代表的深度學習模型,且確實能夠取得不錯的效果。深度學習模型有效降低了語言模型輸入特征的維度,降低了輸入層的復雜性。另外,深度學習模型具有其他淺層模型不能比擬的靈活性。深度學習模型更復雜,能夠對數據進行更精準的建模,從而增強實驗效果。
深度學習模型可以將文本中的詞高效地表示為分布式連續向量(word2vec),將詞語、文本由詞空間映射到語義空間,這樣的語義表示可以捕獲重要的句法和語義信息,一定程度上緩解了詞面不匹配、數據稀疏、語義鴻溝等問題。Word2vec 的應用可以使許多自然語言處理任務取得突出的表現。Word2vec 雖然可以通過神經網絡訓練大規模的語料實現,但仍面臨著 out of vocabulary 的現實。Bahdanau 等人利用 LSTM 模型結合定義知識語料,解決傳統 word embedding 模型中的 out of vocabulary 問題。(框架流程見圖 1,具體見 https://arxiv.org/abs/1706.00286)
圖 1:利用 RNN 解決 Word2Vec 中 out of vocabulary 問題實例
中文不同于英文自然分詞,中文分詞是文本處理的一個基礎步驟,也是自然語言處理的基礎模塊。分詞性能的好壞直接影響比如詞性、句法樹等其他模塊的性能。利用深度學習實現的字嵌入+Bi-LSTM+CRF 中文分詞器,不需要構造額外手工特征。使用人民日報的 80 萬語料訓練實現,按照字符正確率評估標準能達到 98% 的準確率。其本質上是一個序列標注模型,模型參考的論文是:http://www.aclweb.org/anthology/N16-1030,整個神經網絡的主要框架如圖 2 所示。有感興趣的朋友可以去看看,具體實現已在 github 開源 https://github.com/koth/kcws。
圖 2:Word Embedding+Bi-LSTM+CRF 主要框架示意圖
語法解析可以獲得句子的語法結構,例如,哪些單詞組合在一起(形成「短語」),哪些單詞是動詞的主題或對象。Syntactic Parsing 明確標出了詞與詞之間的短語結構,隱含了詞與詞之間的關系。而 Dependency Parser 則明確表示出了詞與詞之間的關系。利用神經網絡模型解析句子的語法結構的實現可以參考 http://www.petrovi.de/data/acl15.pdf 以及斯坦福的 http://cs.stanford.edu/~danqi/papers/emnlp2014.pdf。除解析文本之外,Richard Socher 等人利用 CNN 模型實現了解析圖片的功能(Parsing Natural Scenes and Natural Language with Recursive Neural Networks)。
文本分類是各種場景在自然語言處理領域中經常使用到的技術,例如判斷文本內容的情感分類(即對文本表達的情感進行分析,如正面、負面的情感,開心、憤怒等情緒等)。深度學習在文本分類中的表現優于其他一些傳統線性模型,例如 https://arxiv.org/abs/1508.04112。Github 上的 https://github.com/harvardnlp/sent-conv-torch 是用于文本分類的 CNN,這個代碼用 GPU 在 Torch 中實現了 Kim(2014)的句子卷積代碼。它復制了現有數據庫中的結果,并允許在任意其它的文本數據庫上訓練模型。
信息抽取,從句子中抽取特定的片段(比如命名實體識別、摘要總結等)。Abstractive Summarization 摘要總結 https://github.com/harvardnlp/NAMAS,該項目包含了來自論文 A Neural Attention Model for Abstractive Summarization(Alexander M. Rush, Sumit Chopra, Jason Weston. https://arxiv.org/pdf/1509.00685.pdf)的摘要抽象總結系統。該項目里發布的代碼可以:提取摘要數據、訓練摘要神經網絡模型、用 ROUGE 構建評估集、調試提取的特征等。
神經指代消解(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)中有所描述。Github 中開源的指代消解項目有 https://github.com/swiseman/nn_coref。
自然語言生成,能夠根據一些關鍵信息及其在機器內部的表達形式,經過一個規劃過程,來自動生成一段高質量的自然語言文本。目前關于自然語言生成有一些比較有趣的研究,比如 https://github.com/karpathy/char-rnn 是一個基于 RNN 的文本生成器,可以自動生成莎士比亞的劇本或者 shell 代碼;https://link.zhihu.com/?target=https%3A//github.com/phunterlau/wangfeng-rnn 基于 char-rnn 的汪峰歌詞生成器等。
知識問答,可以用深度學習模型,從語料中學習獲得一些問題的答案,比如 https://github.com/facebook/MemNN,是 memmnn 的一個官方實現,可以從諸如「小明在操場;小王在辦公室;小明撿起了足球;小王走進了廚房」的語境中,獲得問題「小王在去廚房前在哪里?」這樣涉及推理和理解的問題;例如斯坦福的 http://cs.stanford.edu/~danqi/papers/nips2013.pdf 利用深度學習實現的知識問答系統。
神經機器翻譯(NMT)在翻譯中提供了統計方式之外的另一種方式,同時也更加簡便。Github 上基于 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 的安卓系統中的神經機器翻譯。該項目考慮了將知識提煉(knowledge distillation)方式加入機器神經翻譯中,以解決其體量問題,這種方式已在其他領域中被證明能夠成功減小神經模型的尺寸。
在 Github 上還有一些有趣的關于深度學習與自然語言處理的項目。比如:Google Brain 團隊的一組研究人員發布了一個項目 Project Magenta,其主要目標是利用機器學習創作藝術和譜寫曲子 https://github.com/tensorflow/magenta;https://github.com/ryankiros/neural-storyteller 是一個自然語言生成項目,實現了看圖講故事的功能。
以上是對深度學習在 NLP 領域運用的一些總結和說明。最后,再講回竹間全力打造的自然語言對話系統。之前提到 2017 年的對話系統一定是在限定的場景下發揮作用的,而竹間智能基于深度學習打造的人機交互系統,在金融、電商及 IoT 等限定領域中已經實現了比較好的可控人機對話。未來,竹間希望在更多垂直領域形成突破。
原文標題:專欄 | 深度學習在NLP中的運用?從分詞、詞性到機器翻譯、對話系統
文章出處:【微信號:almosthuman2014,微信公眾號:機器之心】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論