閱讀247 返回首頁    go 阿裏雲 go 技術社區[雲棲]


立委科普 | NLP 聯絡圖

 

NLP 不是魔術,但是,其結果有時幾乎就是魔術一般神奇。

引自:https://www.confidencenow.com/nlp-seduction.htm


【立委按】說明一點,寫這篇 NLP 聯絡圖科普的時候 深度學習還沒火。 AI 還沒有搖身一變 ,被 DL 所竊取。當時的機器學習界 還在鄙視 取笑 並與 ai 保持距離。沒想到現如今 AI 居然被看成了 DL 的同義詞 突然成了香餑餑。言必稱神經,連 NLP 也被竊取了,也與dl劃了等號。符號邏輯派的 AI 與規則係統的 NLP,做了一輩子,到頭來連“家”都沒了。一切皆是學習,一切都要神經。但我相信天變了,道卻不變,因此下麵的聯絡圖或可超越神經一統天下的狹隘思維。撥亂反正,談何容易。還是一家之言,願者上鉤吧。

 0dd7dec87d294ab7df0a0659a7dd778293825291

 (NLP Word Cloud, courtesy of ourselves who built the NLP engine to parse social media to generate this graph )


【立委原按】樣板戲《智取威虎山》裏麵,楊子榮懷揣一張秘密聯絡圖而成為土匪頭子座山雕的座上客,因為在山頭林立的江湖,誰掌握了聯絡圖,誰就可以一統天下。馬克思好像說過人是社會關係的總和,專業領域又何嚐不是如此。在關係中定義和把握 NLP,可以說是了解一門學問及其技術的鍾南山捷徑。老馬識途,責無旁貸,遂精雕細刻,作聯絡圖四幅與同仁及網友分享。此聯絡圖係列可比林彪元帥手中的紅寶書,急用先學,有立竿見影之奇效。重要的是,學問雖然日新月異,永無止境,然而天下大勢,在冥冥中自有其不變之理。四圖在手,了然於心,可以不變應萬變,無論研究還是開發,必不致迷失革命大方向。


一個活躍的領域會不斷產生新的概念,新的術語,沒有一個合適的參照圖,新人特別容易湮沒其中。新術語起初常常不規範,同一個概念不同的人可能使用不同的術語,而同一個術語不同的人也可能有不同的解讀。常常要經過一個混沌期,研究共同體才逐漸達成規範化的共識。無論是否已經達成共識,關鍵是要理解術語的背後含義 (包括廣義、窄義、傳統定義,以及可能的歧義)。加強對於術語的敏感性,不斷探究以求準確定位新概念/新術語在現有體係的位置,是為專業人員的基本功。


本文將圍繞這四幅自製聯絡圖,對 NLP 相關的術語做一次地毯式梳理和解說。本文提到的所有術語在第一次出現時,中文一律加下劃線,英文斜體(Italics),大多有中英文對照,有的術語還給出超鏈,以便讀者進一步閱讀探索。


在我們進入 NLP 係列聯絡圖內部探究其奧秘之前,有必要澄清自然語言處理NLP)的一般概念及其上位概念,以及與 NLP 平起平坐或可以相互替換的一些術語。


NLP 這個術語是根據“自然語言”這個問題領域而命名的寬泛概念。顧名思義,自然語言處理就是以自然語言為對象的計算機處理。無論為了什麼目標,無論分析深淺,隻要涉及電腦處理自然語言,都在 NLP 之列。所謂自然語言Natural language)指的即是我們日常使用的語言,英語、俄語、日語、漢語等,它與人類語言Human language)是同義詞,主要為區別形式語言Formal language),包括計算機語言Computer language)。自然語言是人類交流最自然最常見的形式,不僅僅是口語,書麵語也在海量增長,尤其是移動互聯網及其社交網絡普及的今天。比較形式語言,自然語言複雜得多,常有省略和歧義,具有相當的處理難度(hence 成就了 NLP 這個專業及其我們的飯碗)。順便一提,在自然語言灰色地帶的還有那些人造語Artificial language)方案,特別是廣為流傳的世界語Esperanto),它們的形式與自然語言無異,也是為人類交流而設計,不過是起源上不太“自然”而已,其分析處理當然也屬 NLP。(筆者N多年前的機器翻譯專業的碩士課題就是一個把世界語全自動翻譯成英語和漢語的係統,也算填補了一項空白。)


與 NLP 經常等價使用的術語是計算語言學Computational Linguistics, or, CL)。顧名思義,計算語言學是計算機科學Computer Science)與語言學Linguistics)之間的交叉學科。事實上,NLP 和 CL 是同一個行當的兩麵,NLP 注重的是實踐,CL 則是一門學問(理論)。可以說,CL 是 NLP 的科學基礎,NLP 是 CL 的應用過程。由於 CL 與數理等基礎學科不同,屬於麵相應用的學問,所以 CL 和 NLP 二者差不多是同一回事兒。其從業人員也可以從這兩個側麵描述自己,譬如,筆者在業界可稱為 NLP 工程師(NLP engineer),在學界則是計算語言學家Computational linguist)。當然,在大學和研究所的計算語言學家,雖然也要做 NLP 係統和實驗,但學問重點是以實驗來支持理論和算法的研究。在工業界的 NLP 工程師們,則注重 real life 係統的實現和相關產品的開發,奉行的多是白貓黑貓論,較少理論的束縛。


另外一個經常與 NLP 平行使用的術語是 機器學習Machine Learning, or, ML)。嚴格說起來,機器學習與 NLP 是完全不同層次的概念,前者是方法,後者是問題領域。然而,由於機器學習的萬金油性質(誰說機器學習不萬能,統計學家跟你急),加之 ML 已經成為 NLP 領域(尤其在學界)的主流方法,很多人除了機器學習(如今時興的是深度學習,或曰深度神經網絡),忘記或者忽視了 NLP 還有語言規則的方法,因此在他們眼中,NLP  就是機器學習。其實,機器學習並不局限於 NLP 領域,那些用於語言處理的機器學習算法也大多可以用來做很多其他人工智能Artificial Intelligence, or AI)的事兒,如股市預測Stock marketanalysis)、信用卡欺詐監測Detecting credit card fraud)、機器視覺Computer vision)、DNA測序分類Classifying DNA sequences),甚至醫療診斷Medical diagnosis)。


在 NLP 領域,與機器學習平行的傳統方法還有語言學家(linguist)或知識工程師(knowledge engineer)手工編製的語言規則Linguistic rules, or hand-crafted rules),這些規則的集合稱計算文法Computational grammar),由計算文法支持(or 編譯)的係統叫做規則係統Rule system)。


機器學習和規則係統這兩種方法各有利弊,可以取長補短。統而言之,機器學習擅長文檔分類Document classification),從宏觀上粗線條(course-grained)把握語言現象,計算文法則擅長細致深入的語言學分析,從細節上捕捉語言現象。如果把語言看成森林,語句看成林中形態各異的樹木,總體而言,機器學習是見林不見木,計算文法則見木不見林(本來這是很自然的互補關係,但雙方都有不為少數的“原教旨主義極端派”不願承認對方的長處,嗬嗬)。從效果上看,機器學習常常以覆蓋麵勝出,業內的術語叫高查全率High recall),而計算文法則長於分析的精度,即高查準率High precision)。由於自然語言任務比較 複雜,一個實用係統(Real-life system)常常需要在在粗線條和細線條(fine-grained)以及查全與查準之間取得某種平衡,因此結合兩種方法的 NLP 混合式係統Hybrid system)往往更加實惠好用。一個簡單有效的結合方式是把係統建立成一個後備式模型back-off model),對每個主要任務,先讓計算文法做高精度低覆蓋麵的處理,再行機器學習出來的統計模型Statistical model),以便粗線條覆蓋遺留問題。


值得一提的是,傳統 AI 也倚重手工編製的規則係統,稱作符號邏輯派,但是它與語言學家的計算文法有一個根本的區別:AI 規則係統遠遠不如計算文法現實可行。AI 的規則係統不僅包括比較容易把握(tractable)和形式化(formalized)的語言(學)規則,它們還試圖涵蓋包羅萬象的常識(至少是其中的核心部分)以及其他知識,並通過精巧設計的邏輯推理係統把這些知識整合起來。可以說,AI 旨在從本質上模擬人的智能過程,因雄心太大而受挫,以致多年來進展甚微。過去的輝煌也隻表現在極端狹窄的領域的玩具係統(後來也發展了一支比較實用的專家係統),當時統計模型還是沒有睡醒的雄獅。以 ML 為核心以大數據(Big data)為支撐的統計方法的興起,讓這種 AI 相形見絀。有意思的是,雖然人工智能(台灣同胞稱人工智慧)聽上去很響亮,可以喚起普羅大眾心中的某種科學幻想奇跡(因此常常為電子產品的包裝推銷商所青睞),在科學共同體中卻相當落寞:有不少統計學家甚至把 AI 看成一個過氣的笑話。雖然這裏難免有王婆賣瓜的偏見,但 傳統 AI 的方法論及其好高騖遠不現實也是一個因素。也許在未來會有符號邏輯派 AI 的複興,但是在可預見的將來,把人類智能當作聯接輸入輸出的黑匣子的機器學習方法,顯然已經占了上風。

 

由此看來,ML 與 AI 的關係,頗似 NLP 與 CL 的關係,外延幾乎重合,ML 重在 AI 的應用(包括 NLP),而傳統 AI 理應為 ML 的理論指導。可是,由於方法學上的南轅北轍,以知識表達Knowledge representation)和邏輯推理Logical reasoning)為基礎的傳統 AI 越來越難擔當實用智能係統Intelligent systems)的理論指導,智能係統的地盤逐漸為以統計學和信息論為基礎的機器學習所占領。國寶熊貓般珍稀的堅持傳統AI的邏輯學家(如 cyc 發明人 Douglas Lenat 老先生)與擅長 ML 的統計學家(多如恐龍)雖然問題領域幾乎完全重合,解決方案卻形如陌路,漸行漸遠。


還有一個幾乎與自然語言處理等價的術語,叫自然語言理解Natural Language Understanding, or NLU)。從字麵上,這個義為“機器理解語言”的術語 NLU 帶有濃厚的人工智能的爛漫主義意味,不象“機器處理語言”那樣直白而現實主義,但實際上,使用 NLP 還是 NLU, 正如使用 NLP 還是 CL 一樣, 往往是不同圈子人的不同習慣,所指基本相同。說基本相同,是因為 NLP 也可以專指淺層的語言處理(譬如後文會提到的淺層分析 Shallow parsing),而深度分析(Deep parsing)卻是 NLU 的題中應有之義,淺嚐輒止的不能登 NLU/AI 的大雅之堂。不妨這樣看,帶上AI的眼鏡看,此物為NLU;而以 ML 而觀之,則此物隻能是 NLP


此外,自然語言技術或語言技術(Natural language technology)也是 NLP 的通俗化表達。


既然 NLP 的等價物 CL 有兩個 parents,計算機科學語言學NLP 的上位概念也自然可以有兩位:NLP 既可以看作是計算機科學的一個應用分支,也可以看作是語言學的一個應用分支。事實上,廣義的應用語言學Applied linguistics)是包含計算語言學和 NLP 的,不過由於計算語言學作為一個獨立學科已經站住腳跟半個多世紀了(其主要學刊是《Computational Linguistics》,學會是 ACL,頂級國際會議包括 ACL 年會和 COLING 等),(窄義的)應用語言學現在更多用來表示語言教學和翻譯這樣的實用領域,不再下轄計算語言學這個分支。


從功能上看,NLP 與 ML 一樣,同屬於人工智能的範疇,特別是自然語言理解以及 NLP 的種種應用,如機器翻譯。所以,廣義的人工智能既是機器學習的上位概念,也是自然語言處理的上位概念。然而,如上所說,窄義或傳統的人工智能強調知識處理包括常識推理common-sense reasoning),與現行的 ML 和 NLP  數據製導data-driven)現狀頗有距離,因此有 NLP 學者刻意保持與傳統 AI 的距離以示不屑為伍。


千頭萬緒,綱舉目張,下文分四個層次、用四幅聯絡圖來講解 NLP per se。四個層次分別是:


  1. 語言層(linguistic level)

  2. 抽取層(extraction level)

  3. 挖掘層(mining level)

  4. 應用層(app level)


這四個層次的關係,基本就是自底而上的支持關係:1 ==》2 ==》 3 ==》4。顯然,NLP 的核心句法分析器(Parser)處於第一層, 而《自動民調》、《問答係統》、《機器翻譯》這樣的係統則是第四層應用的例子。


需要說明的是,NLP 的對象自然語言有兩種形式,語音Speech)和文本Text),因此 NLP 自然涵蓋語音方麵的兩個重要方向:1. 教授電腦聽懂人話的語音識別Speech recognition);2. 教授電腦說人話的語音合成Speech synthesis)。由於筆者對語音處理Speech processing)比較外行,本係列專談針對文本的 NLP,視語音識別和語音合成為文本處理(Text processing)的 前奏和後續。事實上,在實際的語言係統中,語音處理和文本處理的分工正是如此,譬如 NLP 在手機上最新應用如蘋果的 Siri 就是先行語音識別,輸出文本結果,再行文本分析,然後根據分析理解的結果采取行動(根據主人指令去查天氣預報、股票、播放某支音樂等等)。


淨手焚香閱好圖


我把 NLP 係統從核心引擎直到應用,分為四個階段,對應四張框架圖。


cdeed0ede001d5405c0daf7c31016c137ca9f52d


最底層最核心的是 deep parsing,就是對自然語言的自底而上層層推進的自動分析器,這個工作最繁難,但是它是絕大多數 NLP 係統的我稱之為帶有核武器性質的基礎技術,因為自然語言作為非結構數據因此而被結構化了。麵對千變萬化的語言表達,隻有結構化了,patterns 才容易抓住,信息才好抽取,語義才好求解。這個道理早在喬姆斯基 1957 年語言學革命後提出表層結構到深層結構轉換的時候,就開始成為(計算)語言學的共識了。結構樹不僅是表達句法關係的枝幹(arcs),還包括負載了各種信息的單詞或短語的葉子(nodes)。結構樹雖然重要,但一般不能直接支持產品,它隻是係統的內部表達,作為語言分析理解的載體和語義落地為應用的核心支持。


c25b566be96bf42b4430009efd0b7a65d94bf13f


接下來的一層是抽取層 (extraction),如上圖所示。它的輸入是結構樹,輸出是填寫了內容的 templates,類似於填表:就是對於應用所需要的情報,預先定義一個表格出來,讓抽取係統去填空,把語句中相關的詞或短語抓出來送進表中事先定義好的欄目(fields)去。這一層已經從原先的領域獨立的 parser 進入麵對領域、針對應用和產品需求的任務了。

值得強調的是,抽取層是麵向領域的語義聚焦的,而前麵的分析層則是領域獨立的。因此,一個好的架構是把分析做得很深入很邏輯,以便減輕抽取的負擔。在深度分析的邏輯語義結構上做抽取,一條抽取規則等價於語言表層的千百條規則。這就為領域轉移創造了條件。

有兩大類抽取,一類是傳統的信息抽取(IE),抽取的是事實或客觀情報:實體、實體之間的關係、涉及不同實體的事件等,可以回答 who did what when and where (誰在何時何地做了什麼)之類的問題。這個客觀情報的抽取就是如今火得不能再火的知識圖譜(knowledge graph)的核心技術和基礎,IE 完了以後再加上下一層挖掘裏麵的整合(IF:information fusion),就可以構建知識圖譜。另一類抽取是關於主觀情報,輿情挖掘就是基於這一種抽取。我過去五年著重做的也是這塊,細線條的輿情抽取(不僅僅是褒貶分類,還要挖掘輿情背後的理由來為決策提供依據)。這是 NLP 中最難的任務之一,比客觀情報的 IE 要難得多。抽取出來的信息通常是存到某種數據庫去。這就為下麵的挖掘層提供了碎片情報。

很多人混淆了抽取(information extraction) 和下一步的挖掘(text mining),但實際上這是兩個層麵的任務。抽取麵對的是一顆顆語言的樹,從一個個句子裏麵去找所要的情報。而挖掘麵對的是一個 corpus,或數據源的整體,是從語言森林裏麵挖掘有統計價值的情報。在信息時代,我們麵對的最大挑戰就是信息過載,我們沒有辦法窮盡信息海洋,因此,必須借助電腦來從信息海洋中挖掘出關鍵的情報來滿足不同的應用。因此挖掘天然地依賴統計,沒有統計,抽取出來的信息仍然是雜亂無章的碎片,有很大的冗餘,挖掘可以整合它們。

dccf5355277e38d0f96098f6ae0808a397dd0db1


很多係統沒有深入做挖掘,隻是簡單地把表達信息需求的 query 作為入口,實時(real time)去從抽取出來的相關的碎片化信息的數據庫裏,把 top n 結果簡單合並,然後提供給產品和用戶。這實際上也是挖掘,不過是用檢索的方式實現了簡單的挖掘就直接支持應用了。

實際上,要想做好挖掘,這裏有很多的工作可做,不僅可以整合提高已有情報的質量。而且,做得深入的話,還可以挖掘出隱藏的情報,即不是元數據裏顯式表達出來的情報,譬如發現情報之間的因果關係,或其他的統計性趨勢。這種挖掘最早在傳統的數據挖掘(data mining)裏做,因為傳統的挖掘針對的是交易記錄這樣的結構數據,容易挖掘出那些隱含的關聯(如,買尿片的人常常也買啤酒,原來是新為人父的人的慣常行為,這類情報挖掘出來可以幫助優化商品擺放和銷售)。如今,自然語言也結構化為抽取的碎片情報在數據庫了,當然也就可以做隱含關聯的情報挖掘來提升情報的價值。

5e33d04775e3d18b0734d73d1d73f8b1ecca36e6


第四張架構圖是 NLP 應用(apps)層。在這一層,分析、抽取、挖掘出來的種種情報可以支持不同 NLP 產品和服務。從問答係統到知識圖譜的動態瀏覽(穀歌搜索中搜索明星已經可以看到這個應用),從自動民調到客戶情報,從智能助理到自動文摘等等。

這算是我對 NLP 基本架構的一個總體解說。根據的是 20 多年在工業界做 NLP 產品的經驗。18 年前,我就是用一張 NLP 架構圖忽悠來的第一筆風投,投資人自己跟我們說,這是一張 million dollar slide。如今的解說就是從那張圖延伸拓展而來。

天變還是不變,道是不變的。

關於作者


立委博士,自然語言處理(NLP)資深架構師,矽穀大數據輿情挖掘公司 Netbase 首席科學家,Cymfony 前研發副總,榮獲第一屆問答係統第一名(TREC-8 QA Track),並贏得17個美國國防部的信息抽取項目(PI for 17 SBIRs)。其自然語言深度分析 (deep parsing) 最見功力,指揮團隊研發了精準高效的 18 種語言的理解和應用係統。特別是漢語和英語,具有世界一流的分析精度,並且做到魯棒、線速,scale up to 大數據。係統質量有第三方的評測認定大幅度領先競爭對手。應用方向包括大數據輿情挖掘、客戶情報、信息抽取、知識圖譜、問答係統、智能助理、語義搜索、智能瀏覽、機器翻譯等等。 


本文轉載自立委NLP頻道:

https://liweinlp.com/?p=3360&from=singlemessage&isappinstalled=0

本文來源於"中國人工智能學會",原文發表時間" 2017-03-30 "

最後更新:2017-05-23 14:02:28

  上一篇:go  Java IO: FileReader和FileWriter
  下一篇:go  雲翼計劃校園大使召集令