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