天天看點

Google 開源全球最精準自然語言解析器 SyntaxNet

google research今天宣布,世界準确度最高的自然語言解析器syntaxnet開源。谷歌開源再進一步。據介紹,谷歌在該平台上訓練的模型的語言了解準确率超過90%。近日,衆多科技巨頭人工智能相關平台開源步伐明顯加快:谷歌和facebook一直在領跑,馬斯克的openai欲打造一個完全公開的ai模型訓練營,就連一直被批評“保守”的亞馬遜也在嘗試開源。這一股開源熱潮背後,是人工智能研究者的福利,但同時也是一場激烈的資料和平台争奪戰。

Google 開源全球最精準自然語言解析器 SyntaxNet

google環境計算( ambient computing) 架構師yonatan zunger說:事實上,語言了解被我們認為是“ai的終極任務”,要解決這一難題,前提是要能解決全部人類水準人工智能的問題。

機器對語言的了解過程,可以分為幾個步驟,其中很多的不确定性是逐漸明晰的(語音識别的不确定性更多,因為還要解決從聲音到詞的轉換)。第一步是要把詞分開,放到依存樹上,看哪一個詞是動詞,對名詞有哪些影響等等。随後,要了解每一個名字的含義。再次,再加入許多先驗知識,即對這個世界的了解,因為很多句子隻有使用了這些資訊才能真正了解。如果足夠幸運的話,到這就能得到清晰的了解了。

谷歌資深研究科學家slav petrov在google research的部落格上寫到:在谷歌,我們花費了大量的時間在思考,計算機系統如何才能閱讀和了解人類語言,以一種更加智能的方式處理這些語言?今天,我們激動地跟大家分享我們的研究,向更廣闊的人群釋出syntaxnet。這是一個在tensoflow中運作的開源神經網絡架構,提供自然語言了解系統基礎。我們所公開的包含了所有用你自己的資料訓練新的syntaxnet模型所需要的代碼,以及paesey mcparseface——我們已經訓練好的,可用于分析英國文本的模型。

paesey mcparseface 建立于強大的機器學習算法,可以學會分析句子的語言結構,能解釋特定句子中每一個詞的功能。此類模型中,paesey mcparseface是世界上最精确的,我們希望他能幫助對自動提取資訊、翻譯和其它自然語言了解(nlu)中的應用感興趣的研究者和開放者。

syntaxnet是怎麼工作的?

syntaxnet是一個架構,即學術圈所指的syntacticparser,他是許多nlu系統中的關鍵元件。在這個系統中輸入一個句子,他會自動給句子中的每一個單詞打上pos(part-of-speech)标簽,用來描述這些詞的句法功能,并在依存句法樹中呈現。這些句法關系直接涉及句子的潛在含義。

舉一個很簡單的例子,看下面這個句子“alice saw bob”的依存句法樹:

Google 開源全球最精準自然語言解析器 SyntaxNet

在這個結構中,alice和bob被編碼為名詞,saw是動詞。隻要的動詞saw 是句子的根,alice是saw的主語,bob是直接賓語(dobj)。和期待的一樣,paesey mcparseface能正确地分析這一句子,也能了解下面這個更加複雜的例子:

Google 開源全球最精準自然語言解析器 SyntaxNet

句子:alice, who had been reading about synataxnet, saw bob in the hallwayyesterday

在這個句子的編碼中,alice 和 bob的分别是saw的主語和賓語,alice由一個帶動詞“reading”的關系從句來修飾,而saw則由時态“yesterday”來修飾。依存句法樹中的文法關系讓我們可以輕易地找到不同問題的答案,比如,alice看見了誰?誰看到了bob?alice正在讀的是什麼?或者alice是在什麼時候看到bob的。

為什麼讓計算機正确處理句法分析如此困難?

句法分析如此困難的一個主要問題是,人類語言具有顯著的歧義性。包含 20 到 30 個單詞的中等長度的句子會具有數百、數千甚至數萬種可能的句法結構,這樣的情況并不少見。一個自然語言句法分析器必須能夠搜尋所有這些結構選擇,并找到給定語境下最合理的那個結構。作為一個非常簡單的例子,“alice drove down the streetin her car”這個句子就具有至少兩種可能的依存分析:

Google 開源全球最精準自然語言解析器 SyntaxNet

第一種分析是對應這句話的(正确)解釋,按照這種解釋,愛麗絲在汽車裡進行駕駛,而汽車位于街道上;第二種分析對應于一種對這句話的(荒誕但仍然可能的)解釋,按照這種解釋,愛麗絲在街道上駕駛,而街道位于汽車之内。之是以會産生這種歧義,是因為“in”這個介詞既可以用來修飾“drove(駕駛)”也可以用來修飾“street(街道)”。上面這個例子是所謂的“介詞短語附着歧義”的一個執行個體。

人類在處理歧義方面有超強的能力,以至于人們甚至注意不到句子有歧義。而這裡的挑戰是,如何能讓計算機做到同樣好。長句中的多重歧義會共同造成句子的可能結構數量的組合爆炸。通常,這些結構中的絕大多數都極其不合理,但它們仍然是可能的,句法分析器必須以某種方式來丢棄它們。

syntaxnet 将神經網絡運用于歧義問題。一個輸入句子被從左到右地處理。當句子中的每個詞被處理時,詞與詞之間的依存關系也會被逐漸地添加進來。由于歧義的存在,在處理過程的每個時間點上都存在多種可能的決策,而神經網絡會基于這些決策的合理性向這些彼此競争的決策配置設定分數。出于這一原因,在該模型中使用 beam search (集束搜尋)就變得十分重要。不是直接取每個時間點上的最優決定,而是在每一步都保留多個部分性假設。隻有當存在多個得分更高的假設的時候,一個假設才會被抛棄。下圖将展示的,是“i booked a ticket to google”這句話經過從左到右的決策過程而産生的簡單句法分析。

Google 開源全球最精準自然語言解析器 SyntaxNet

而且,正如我們在論文中所描述的,十分重要的一點是,要把學習和搜尋緊密整合起來才能取得最高的預測準确度。parsey mcparseface 和其他 syntaxnet 模型是我們用谷歌的 tensorflow 架構訓練過的最複雜的網絡結構。通過利用谷歌支援的 universal treebanks 項目中的資料,你也可以在自己的機器上訓練句法分析模型。

parsey mcparseface 的準确度到底有多高?

在(從具有二十年曆史的賓大樹庫penn treebank中)随機抽取的英語新聞句子構成的标準測試中,parsey mcparseface 在提取詞之間的個體依存關系時的準确率超過 94%,這打敗了我們自己先前的最高水準,也超過了任何以前的方法。盡管在文獻中并沒有關于人類的句法分析成績的明确研究,我們從我們内部的句法标注項目中了解到,那些在該任務上受過訓練的語言學家在 96-97% 的情況下能達成一緻。這說明,我們正在接近人類的水準——不過這仍然限于那些格式良好的文本。按照我們從 google webtreebank (谷歌網絡樹庫,釋出于 2011 年)中所學到的,那些從網際網路上獲得的句子要遠遠更難分析。在該網絡資料集上,parsey mcparseface 隻取得了略高于 90% 的句法分析準确率。

盡管準确率還不夠完美,它已經足夠高,能夠用于許多應用程式了。目前,錯誤的主要來源是像上面描述過的介詞短語附着歧義這樣的情況,對這些情況的處理要求對現實世界的知識(例如,“街道不太可能位于汽車之内”)和深度語境推理。機器學習(特别是神經網絡)已在解決這些歧義方面取得了顯著的進展。不過我們仍想做進一步的工作:我們想要發展出一些方法,這些方法能夠學習現實世界知識,也能夠在所有語言和語境中都取得同樣好的自然語言了解。

想試試嗎,請閱讀 syntaxnet 的代碼。并下載下傳 parsey mcparseface 句法分析模型。主要研發者chris alberti, david weiss, daniel andor, michael collins 和 slav petrov 祝你成功。

繼續閱讀