谷歌開源最精確自然語言解析器SyntaxNet的深度解讀

自然語言理解研究中,如何處理語言歧義是個難題。 SyntaxNet 將神經網絡和搜索技術結合起來,在解決歧義問題上取得顯著進展:SyntaxNet 能像訓練有素的語言學家一樣分析簡單句法。今天,谷歌開源了SyntaxNet,也發布了針對英語的預訓練解析程序 Parsey McParseface。除了讓更多人使用到最先進的分析技術之外,這次開源舉措也有利於公司藉助社區力量加快解決自然語言理解難題的步伐,惠及谷歌業務。
如果你對 Siri 說,設置鬧鐘:早上五點,她可以辦到。但是,如果問她哪種處方止疼片對胃部刺激最小,她就束手無策了,因為你說的句子很複雜。Siri 還遠未實現計算機科學家所說的「自然語言理解」。
這並不是說虛擬助理將永遠這樣。
科技巨頭、創業公司、大學的研究人員正在想辦法讓計算機理解自然語言。多虧深度神經網絡,這方面的技術正變得越來越好。谷歌、臉書和微軟以及其他公司,已經使用深度神經網絡來識別圖片中的物體,也用於識別人們對虛擬助手說的單個單詞。

人們希望這類人工智能可以顯著提升機器理解語詞意義的能力,讓機器懂得語、詞是如何互動、構成有意義的句子。
「我們大部分用戶都通過語言與我們交流,」谷歌公司自然語言理解和機器學習方面的負責人 Fernando Pereira 說,「他們詢問查詢——鍵入或口語輸入。所以,為了很好地服務用戶,我們不得不讓我們的系統理解用戶想要什麼。」
今天,谷歌開源了軟件  SyntaxNet(句法分析程序)以及針對英語的解析程序 Parsey McParseface,我們從中看到了自然語言理解快速發展的希望。
SyntaxNet 和 Parsey McParseface
SyntaxNet(句法分析程序)是谷歌自然語言研究的基礎。它使用深度神經網絡,對句子進行語義分析,試圖搞清楚每個語詞在句子中扮演的角色,以及這些單詞如何組合起來生成意義。系統可以識別潛在的語法結構——哪個單詞是名詞,哪個是動詞,哪個是主語,主賓關係如何——然後試着了解句子的大致意思,不過,是以機器可讀的方式。
因為使用了深度神經網絡,SyntaxNet 將句法分析推向了一個新的高度。這款系統分析了數以百萬條句子,不過,這些句子並不是一般的句子,而是經過人工精心標記過的句子(他們瀏覽所有作為實例的句子,然後認真標記句中每個單詞的角色)。學習完所有這些標記好的句子后,系統就可以分析判斷對其他句子中類似語詞角色。
這和 Facebook 的方法不同。後者試圖通過為計算機提供很大程度上未標記的大量數據來訓練這些計算機解析語言(參見 Teaching Machines to Understand Us),而不是象谷歌這樣圍繞着人類專家打造。
SyntaxNet 使用了谷歌之前發布的深度學習框架 TensorFlow ,它也是到目前為止使用 TensorFlow 開發的最複雜和最先進的組件。
不過,SyntaxNet 是工程師和人工智能研究者的工具。
谷歌還發布了一個預訓練的、針對英語的解析程序 Parsey McParseface(一位發言人說該公司正為想名字發愁時,有人建議了這個朗朗上口的綽號)。送入這個解析程序的文本會自動被分解成句法成分(如名詞、動詞、主語和賓語)。因此,計算機更容易地對模糊的請求或命令做出正確語義分析。
94% 的準確性
簡單地說,基本上就是個五歲的孩子,在學習語言的細微差別
谷歌研究人員隨機抽取英文新聞專線的句子(來源 Penn Treebank)作為一個標準的基準, Parsey McParseface 重新獲取句子語詞之間的依存關係 ,正確率達94%。這個成績不僅好於公司之前的最好成績,也擊敗了之前任何研究方法。儘管還沒有這方面人類表現如何的研究文獻,但是,從公司內部的註釋項目那裡,研究人員得知,受過這方面訓練的語言學家分析準確率為96-97%。這意味着,我們正在接近人類表現——不過,僅僅是在編輯完好的文本方面。
那麼, SyntaxNet 與 SpaCy 和 CoreNLP 相比,難分伯仲嗎?
對此,谷歌 NLP 研究的產品經理 Dave Orr 回答是:
這取決於你所謂的比,是什麼意思。但是,比數字的話,SyntaxNet(據我所知,尤其是英語模型 Parsey McParseface)是已經公布的分析器中最好的。假設所有這些分析程序都接近之前的最好水平(我認為,它們是處於這個水平),SyntaxNet 至少也比其他競爭對手好那麼一點。
與其他系統相比,SyntaxNet 只做一件事(依存分析,包括詞性標註,所以你可以說是兩件事)。SpaCy 也叫做命名實體識別(named entity recognition);斯坦福的系統會做包括 NER、情感分析在內的所有事情。
如果你想要的是分析器,SyntaxNet 是最好的。如果你要求更多,你可能需要並用其他系統,或者直接使用其他系統。
另一個不同是, SyntaxNet 基於谷歌的開源軟件 TesnorFlow。如果你對在神經網絡結構上建造 NLP 系統感興趣,使用它就很棒。
SpaCy 和 CoreNLP 都是英語 NLP 開發人員經常使用到的軟件。
SpaCy 是一個 Python 和 CPython 的 NLP 自然語言文本處理庫。這是一個 MIT 許可協議下的開源商業軟件。
據其在 Github 上的介紹,SpaCy 有以下幾個特徵:
標記依存句法分析( OntoNotes 5 上 91.8% 的準確率)
命名實體識別(OntoNotes 5 上 82.6% 的準確率)
詞性標註(OntoNotes 5 上 97.1% 的準確率)
使用詞矢量方便
所有字符串映射到整數 ID 上
包括容易使用的拼寫特徵
不需要前期處理。Spacy 使用原文本材料
另外,SpaCy 有兩項頂級性能:速度最快:<50ms 每文檔;SpaCy 在全部任務性能(句法分析、命名實體識別、詞性標註)上的準確率與最頂尖的水平相比,誤差不到 1%,但 Spacy 的速度要快的多。

谷歌開源最精確自然語言解析器SyntaxNet的深度解讀 |emailtry.com

SpaCy 官網介紹:2015 年兩篇同行評議的論文確認 ,spaCy 提供的是世界上最快的句法分析,與世界上準確率最高的系統之間的誤差在 1% 以內。但少數幾個比 SpaCy 精確的系統的速度要慢 20 倍或者更多。
斯坦福 CoreNLP 是一個混合的語言處理框架,它集成了所有的自然語言處理工具,包括詞性的終端(POS)標註器,命名實體識別(NER),分析器,對指代消解系統,以及情感分析工具,並提供英語分析的模型文件。
它提供的內容包括:
一個包含多種語法分析工具的綜合工具包
對任意文本的快速、可靠分析
全面高水平的文本分析
支持多種主要的人類語言
適用於多種主要的編程語言
可作為簡單的網頁服務運行
系統原理
SyntaxNet 是句法分析框架,也是自然語言理解系統第一個關鍵組成部分。給定一個句子,這個系統就能給句子中的每個語詞貼上詞類標籤,亦即描述相應語詞的句法功能(比如,主謂賓),還能判定給定句子中,語詞之間的句法關係,並用依存關係分析樹(dependency parse tree)來表示。這些句法關係與句子的潛在含義有着直接聯繫。
簡單的關係樹例子如下:愛麗絲看見鮑勃

谷歌開源最精確自然語言解析器SyntaxNet的深度解讀 |emailtry.com

對這個句子的分析:「愛麗絲」和「鮑勃」是名詞,「看見」是動詞。主動詞是「看見」,也是句子的謂語,「愛麗絲」是看見的主語,而「鮑勃」是看見的賓語。正如研究人員所預期的, Parsey McParseface 正確分析了句子的句法結構。不過,它能分析更加複雜的句子。
分析:「愛麗絲」和「鮑勃」分別是「看見」的主語和賓語,除此之外,有一個帶有動詞「reading」的關係從句修飾「愛麗絲」,「看見」被表示時間的修飾成分「yesterday」修飾,等等。理解了依存結構中的語法關係,就能簡單回答各種問題:比如,愛麗絲看見了誰?誰看到了鮑勃?愛麗絲一直在看什麼書?或者,愛麗絲看見鮑勃,是什麼時候?
神經網絡+搜索解決語言歧義難題
人類可以使用常識消除句子中的歧義,谷歌系統則使用了神經網絡。
人類語言具有相當的歧義性。
一個簡單如「Find me cats in hats(幫我找到帽子里的貓)」的搜索查詢,既可能會被解讀成「尋找戴着帽子的貓」,也可能會被解讀成「尋找坐在帽子里的貓」。一個中等長度的句子——大概 20 到 30 個單詞——會有數以百計甚至成千上萬種可能的語義結構。
自然語言的語義分析必須在某種程度上搜索所有可能的語義結構,根據給定文本,找到最合乎邏輯的結構。
舉個簡單例子,愛麗絲開車行駛在大街上(Alice drove down the street in her car),至少有兩種可能的依存分析:

谷歌開源最精確自然語言解析器SyntaxNet的深度解讀 |emailtry.com

第一個分析是正確的分析:愛麗絲正開着她的車;第二個分析顯然很荒唐:街道位於她的車裡。這裡存在歧義問題,因為,介詞「 in 」可能修飾「駕駛(drove)」,也可能修飾的是「街道(street)」。這個例子就是所謂的介詞短語的歧義性。
在處理語言高度歧義問題上,人類就擅長多了,甚至都感覺不到有困難,因為靠常識就可以解決這個問題。計算機的一大挑戰就是像人類這樣處理模糊句子。比如,在更長句子中會有多重歧義,組合爆炸產生多種句子結構。這些結構的絕大部分都是極其不合乎邏輯的,必須通過語義分析進行某種程度上的捨棄。
SyntaxNet 利用神經網絡來解決這個難題。
系統會從左到右處理被輸入的句子,每處理一個語詞,就會逐步添加分析語詞之間的依存關係。每處理一處,就意味着諸多可能的選擇(因為歧義),此時,神經網絡就會根據各競爭性答案的邏輯合理程度進行打分。也正因為如此,在模型中使用定向搜索(beam search)就很重要了。系統不是簡單地每處理一處,就採取一級最優的選擇,而是每一步都會保存多個局部假設,僅當將其他幾個得分更高(higher-ranked)的假設納入考慮範圍后,才會捨棄之前的那些假設。
按照從左到右的決定順序進行簡單的語法分析,例如: I booked a ticket to Google.

谷歌開源最精確自然語言解析器SyntaxNet的深度解讀 |emailtry.com

正如之前論文中所描述的,將學習和搜索緊密聯繫起來,非常重要,這樣才能實現高度的預測準確性。
不足
Parsey McParseface 和 SyntaxNet 並不是最終解決方案,谷歌只是將之視為邁向更好的人工智能語義分析的第一步。
即使眾多同行認為,SyntanxNet 是眾多系統中最好的,但是,該技術還遠未完美地掌握英語。Pereira 表示,「我們的系統在結構合理、經過精心編輯的文本上效果最好,但社交媒體和搜索查詢的不規則性更有挑戰性。我們確實已經取得了進展,但仍還有很大的提升空間。」
從網頁上提取的句子更難分析(2011),Parsey McParseface 在這組數據組上的表現不佳,準確率略高於90%。
另外,在自然語言處理中仍然還有很多歧義需要人類水平的常識才能解決——「那些我們從經驗中學到的東西,以及來自同齡人和父母的指令。」Pereira 說,「那種非常豐富的解決問題的能力是我們的系統所完全缺失的。」
研究語言理解的斯坦福大學教授 Noah Goodman 說,提高句法理解只是計算機掌握語言的開始。「句法肯定是語言的重要一部分,」他說,「但從句法到語義之間、從淺語義到意義推斷之間都還有很大一步。」
另外,來自華盛頓大學計算機科學教授、專門研究自然語言理解的 Noah Smith 表示,語言分析最後的希望在於使用網絡上面更廣泛的數據訓練這樣的系統,然而這樣做也非常的困難,因為人們在網上使用語言的方式多種多樣。
Smith 還指出,在語言使用(非英語)上的研究也遠遠不夠。
未來
雖然不是百分百準確,但是,系統足以應用於諸多應用。
谷歌的研究負責人Fernando Pereira (負責管理公司自然語言理解的研究工作)估計,較之之前的辦法,這個工具已使公司產品錯誤率下降了20-40%,也正在協助谷歌實時服務,包括公司的拳頭產品,搜索引擎。
通過共享 SyntaxNet,谷歌想要加快解決難題的步伐,如同當初開源軟件引擎 TensorFlow 一樣。讓每個人都可以使用和修改 SyntaxNet,谷歌就能從更多的人那裡獲得幫助,解決自然語言理解上的棘手問題。
當然,最終也將惠及谷歌業務。
在數字助理的競爭賽場上,谷歌遠非孤軍奮戰。微軟發布了Cortana,亞馬遜正在摸索語音助手Echo的成功之道。無數創業公司也加入了這場競賽,包括最近發布最新demo 的 Viv。臉書的野心更大,他們推出了Facebook M,一個可以通過文本(而不是語音)進行聊天的工具,旨在幫助用戶完成各種事務,從約會安排到計劃下一次渡假。
儘管有如此多的知名人物從事這方面的研究,但是,數字助理和聊天機器人遠不夠完美。因為,解決自然語言理解的潛在技術遠不夠完美。Facebook M 只是部分依賴人工智能,更多地還是依靠人類幫助完成複雜任務,幫助訓練人工智能。
Parsey McParseface 和 SyntaxNet 並不是最終解決方案,谷歌也只是將之視為邁向更好的人工智能語義分析工具的第一步。
類似真實人類的數字化助理,遠非現實。但是,我們正在一步步靠近。Pereira 說,路漫漫,其修遠。但是,我們的確正在打造可以更加準確理解人類的技術。
參考資料:
https://www.technologyreview.com/s/601440/googles-algorithms-decode-language-like-a-trained-linguist/#/set/id/601443/
http://thenextweb.com/dd/2016/05/12/google-just-open-sourced-something-called-parsey-mcparseface-change-ai-forever/
http://www.techinsider.io/googles-newest-software-is-named-parsey-mcparseface-no-seriously-2016-5
http://www.wired.com/2016/05/google-open-sourced-syntaxnet-ai-natural-language/
http://googleresearch.blogspot.jp/2016/05/announcing-syntaxnet-worlds-most.html
http://www.zdnet.com/article/google-open-sources-its-english-language-parser-parsey-mcparseface
https://github.com/tensorflow/models/tree/master/syntaxnet
https://www.quora.com/How-does-Googles-open-source-natural-language-parser-SyntaxNet-compare-with-Spacy-io-or-Stanfords-CoreNLP
https://spacy.io/
https://segmentfault.com/a/1190000000365547

发表评论