智子社區顧問白碩:人工智慧詩與遠方,讀懂NLP起源、流派和技術

智子社區顧問白碩:人工智能詩與遠方,讀懂NLP起源、流派和技術

人工智能的詩與遠方在不久的將來遇上能夠創造無限可能的區塊鏈是什麼樣的呢?人工智能與區塊鏈結合的智子社區正在慢慢構築這個生態,智子社區顧問白碩老師又是怎麼樣看待的呢?

自然語言是人類文明傳承和日常交流所使用的語言。狹義的自然語言處理是使用計算機來完成以自然語言為載體的非結構化信息為對象的各類信息處理任務,比如文本的理解、分類、摘要、信息抽取、知識問答、生成等的技術。進一步延展場景,廣義的自然語言處理技術也包含自然語言的非數字形態(如語音、文字、手語等)與數字形態之間的雙向轉換(識別與合成)環節。鑑於自然語言豐富地表現了人類的認知、情感和意志,潛在地使用了大量常識和大數據,自身在算法和模型上也多采用各種啟發式線索,目前一般均把自然語言處理作為人工智能的一個分支。最近,在人工智能領域出現重要進展、人工智能應用受到各行各業熱切期待,自然語言處理技術也水漲船高,受到普遍的重視。本文對自然語言處理技術做一 “入門級的” 初步介紹,有進一步興趣者可參閱專業資料。

NLP 的源與流

自然語言處理作為人工智能的一個分支,其源頭和人工智能一樣,都出自於計算機科學的祖師爺級人物——阿蘭 · 圖靈。圖靈在提出圖靈測試的時候,就把使用自然語言與人進行對話可以亂真的能力作為判別一個機器系統有無智能的標準。在圖靈的時代,讓機器 “善解人意” 是人工智能的詩與遠方,在當時的技術條件下還看不到實現的希望。

使用簡單直接的詞袋技術模板匹配技術,是處理自然語言早期嘗試的開始,衝在最前面的是機器翻譯和人機對話。由於沒有掌握自然語言的要領,早期的機器翻譯和人機對話系統總體上表現稚嫩,充其量只能是玩具系統。

數據庫技術和專家系統技術都具有較為複雜的查詢和使用邏輯,其內部表示和人類用戶所熟悉的自然語言表示具有較大的差異,為彌補這方面的人機差距,實現更加友好的人機互動,利用自然語言處理技術為數據庫和專家系統等提供自然語言接口是早期自然語言處理技術發展的動力之一。但是由於圖形人機界面技術的發展,沖淡了對自然語言接口的需求,加之自然語言處理技術本身還要攻克大量難關,數據庫和專家系統的自然語言接口直到多年以後的 Watson 系統才得以展現其威力,在此之前只是一個不太被看好的 “棄兒”。

隨著語言學領域在喬姆斯基的倡導下發生了天翻地覆的革命,形式化方法被引入語言學,用於刻畫自然語言的句法結構,形式語言理論蓬勃發展,形成了喬姆斯基形式語言理論框架體系。在這個體系下,語言被分為 0 型(短語結構語法)、1 型(上下文相關語法)、2 型(上下文無關語法)和 3 型(正則語法),它們的成員判定問題複雜度依次為半可判定、NP 完全、多項式和線性。對於各種自然語言來說,大體上佔到 2 型的很少但很不規則的一部分,但部分現象呈現上下文相關性,會在局部對 2 型有所突破。這就是筆者所說的 “毛毛蟲” 現象。

按照當代語言學理論,自然語言分符號、詞法、句法、語義和語用五個層面。符號層面,有語音、文字、手語和電子輸入。在詞法層面,有詞典、詞性標註、詞的形態變化、構詞法等。在句法層面,有詞對詞的關聯 / 依存關係,以及短語對短語的結合 / 拼接關係。在

語義層面,有語義標籤與它們在現實 / 想象世界中的所指之間的映射關係和語義標籤之間的角色指派關係。在語用層面,有語言成分與語境之間、字面意義和言外之意之間的複雜互動關係。一般稱的 “語法”,包含了詞法和句法兩個層面。

針對自然語言的特性,在形式語言理論框架下建立不同的模型,形成了自然語言處理的諸多形式化機制基於規則的形式化機制包括 LFG(詞彙功能語法)、GPSG(廣義短語結構語法)、HPSG(中心詞驅動的短語結構語法)、DG(依存語法)、CG(範疇語法)、CCG(組合範疇語法)等,基於統計的形式化機制包括 HMM(隱馬爾科夫模型)、PCFG(概率上下文無關語法)等,基於聯結的形式化機制包括 CNN(卷積神經網絡)、RNN(循環神經網絡)、LSTM(長短時記憶模型)等。具有交叉學科性質的 “計算語言學”,就是自然語言處理技術在模型、算法級的研究領域的集中體現。

實際上,鑑於歐氏空間具有良好和豐富的數學工具可用,語言 / 文本的向量化努力是跨越統計和聯結兩大陣營的。基於統計的向量化方法是

隱性語義標引(LSI)模型,基於聯結的向量化方法是詞嵌入(Word embedding)模型,前者具有保距離特性,後者具有保運算特性而且可與任務派生的優化目標深度耦合。目前,嵌入技術已經不侷限於詞,也可以整結構、整句嵌入了。但是總體說來,當前技術能夠大規模處理的,仍然只是具有 “淺層句法” 或者 “簡單標記” 的 NLP 任務。更復雜語言現象的理解、更復雜語義關係的抽取,仍然任重道遠。

隨著日本五代機計劃的失敗,第二波人工智能浪潮消退,互聯網在 WWW 的出現後迅速崛起,NLP 技術穿上了互聯網馬甲,搭上了搜索引擎的班車,成為了一門互聯網應用技術。在無比簡單的搜索框背後,是各種 NLP 技術的組合體,文本的分類、聚類、摘要、協同過濾、信息抽取、機器翻譯…… 可以說應有盡有。這段時期之所以 NLP 既遠離 “人工智能” 的招牌,也遠離 “計算語言學” 招牌,是因為人工智能招牌在當時並無正面貢獻,而語言學家在經驗主義範式下不得施展甚至每每成為負擔。而互聯網這棵大樹卻足夠容納 NLP 的一系列成果。大型互聯網公司在機器翻譯領域的出色表現很好地證明了這一點。

隨著深度學習技術以摧枯拉朽之勢橫掃語音、圖像識別和淺層自然語言處理各類任務,知識圖譜技術為語義知識處理走向各行各業做好技術棧和工具箱的鋪墊,人工智能招牌強勢的王者歸來已經在所難免,自然語言處理技術也自然地成為了這王者頭上的王冠。這是因為,語音和圖像識別大局已定。自然語言處理已經成為一種應用賦能技術,隨著實體知識庫的構建、知識抽取和自動寫作在特定領域的實用化和對話機器人從對接語料到對接知識圖譜的換代,正通過新一代人工智能創新創業團隊,全面滲透到人工智能應用的各個角落。自然語言處理從淺層到深層面臨範式轉換,還處在對接情感計算與常識計算的戰略性要地的關鍵位置。誰能拔得頭籌,誰就能在當下的人工智能 “軍備競賽” 中處於有利地位。

回顧 NLP 技術的發展歷史,可以清晰地看到幾個流派各領風騷數十年的沿革和範式轉換的蹤影。從上世紀五六十年代到八十年代,是 “理性主義” 學派盛行的年代,是基於規則的範式主導的年代。上世紀九十年代開始,“經驗主義”學派開始反超,基於統計的範式繁榮了近二十年,終於在 2010 年前後被同為 “經驗主義” 學派的基於聯結的範式所全面取代。這是深度學習算法顯現的巨大威力,也是數據和算力積累到臨界點的一次綜合性的爆發。目前,基於聯結的範式風頭正盛,但 “深度” 自然語言處理的需求壓力之下,“理性主義”學派以某種方式再度迴歸,實現 “波粒二象性” 的有機結合,也是可期待的。

分詞與詞法

詞法(Lexicon)是自然語言處理的基礎層次。西方語言文字多采用空格作為詞間間隔的標記,相對易認易解析。漢語、日語等東方語言多采用無空格的詞語連寫格式,因此需要一個額外的環節,就是分詞

按給定詞典進行分詞,是中文自然語言處理的經典研究方向,現已有相對成熟的算法和技術。並不是說這樣的算法和技術可以獨自在詞法層面解決所有分詞難題,而是說靠這樣的技術可以大體上保持一個較高的水準,還有一些分詞有歧義的場合,需要結合更大的上下文背景、甚至結合句法分析、語義分析等後續工序的逆向選擇,才能夠搞定。

分詞歧義分成兩類:一類叫做 “組合歧義”,另一類叫做“交叉歧義”。“我家家門口的小河很難過” 當中的 “難過” 是一個詞 “難過” 還是兩個詞 “難 / 過”,這是組合歧義。“上交所有非法所得” 當中的 “上交所有” 是“上交 / 所有”還是“上交所 / 有”,這是交叉歧義。這類歧義現象,有的通過上下文句法、語義關係甚至詞語的統計分佈特徵就很容易排除,有的則需動用更高深的情感和常識機制才能排除,這些都是“偽歧義”。除了偽歧義之外還有真歧義,就是必須在具體語境中才能明確的歧義。

依照詞典進行分詞並不是詞法層面唯一的分析任務。其他任務也很實際並且同樣具有挑戰性。下面我們依次列出除分詞之外的詞法分析任務,並簡述其工作目標和技術難點。

詞性標註(POS tagging)。給分出來的詞做詞性標註,一方面是對那些理論上有多種標註可能、但特定上下文中只有唯一標註可能的詞通過標註來消除歧義(比如 “指揮” 既可以是名詞又可以是動詞;同為名詞的“指揮”,既可以指事,又可以指人),另一方面,標註之間的連接和共現關係可以更好地幫助解決分詞問題。所以,加上詞性標註的分詞過程和結果,不僅更有利於後續工序(構詞法和句法分析)的處理,也使詞法分析這道工序本身獲得更多的啟發式信心。這樣一來,採用何種標註體系,就成了技術路線選擇躲不過去的坎兒。選擇的依據,一是取決於應用場景的實際區分度需求,二是取決於開發者的語言學理念。業界比較常用的標註體系有北大標註體系賓州樹庫標註體系等可供選擇,但這並不排除開發者還可以根據實際情況自創其他標註體系。

命名實體識別(NER)。命名實體識別既是自然語言處理當中相對獨立的專項任務,也是自然語言深度解析所不可缺少的實際前置步驟。人名、地名、組織機構名、化合物名、藥名、金融交易標的名稱等等,都有各自的命名體系,而且有很強的

專義性(one sense per context)。有些命名實體採取了縮略簡稱的形式。命名實體識別和詞典分詞 / 詞性標註之間有複雜的協同關係。我們見到有的系統把二者分離處置,各幹各的,讓後續工序無所適從,這種缺陷,值得引以為戒。

形態變化還原(STEMMING)。西方語言大多屬屈折型,詞的形態變化比較發達,名詞的性、數、格和動詞的時態、語態往往需要藉助各種形態變化來表示。某些東方語言屬粘著型,用名詞加粘著語素表示格,用動詞的元音諧變表示時態、語態信息。與這些變化手段相應的還原工作,都是對應語言詞法分析的應有之義。漢語是孤立型語言,總體上說詞的形態變化很不發達,但也有以重疊手段為主的較為初級的形態變化(AA、ABB、AABB、ABAB、A 一 A、A 不 A、A 不 AB 等),很多變化具有能產性,不宜羅列,於是也需要相應的還原。此外,漢語中還有非常獨特的 “離合詞” 現象。比如 “這種虧我們可不能再吃了” 當中的 “虧” 和“吃”,就是 “吃虧” 這個詞的離合形態,中間既被其他詞語穿插,又被改變了語序。離合詞的識別和還原,既需要詞典綁定,又需要藉助句法的手段將拆開來的詞素精準定位,是比較高級的詞法分析技巧。

構詞法(Compound-wordformation)。合成詞是在詞典詞基礎之上根據一定的機制形成的具有內部 “微結構” 的詞。這種詞往往是有規律可循的,而且具有相當的能產性,用詞典化的方法難以將其窮盡。構詞法是以類似句法的手段處理合成詞,當然,只是其微結構 “類似句法” 而已,構詞法中仍然有許多體現詞法特點的因素,比如韻律、倒裝等。構詞法和句法也許並沒有特別嚴格的界限,中間存在一干灰色地帶。在這些灰色的地帶,你即可以說是句法反作用於詞法,也可以說這本身就是詞法內部的事情。在另一個極端,就是壓根兒不依賴詞典,直接把構詞法的觸角伸到“字”,由字根據構詞法生成一切詞典詞和非詞典的合成詞。這些探索,孤立看很難斷定成敗得失,需要結合應用目標和工程約束才好評判。

由此可見,詞法分析領域絕非基於詞典的分詞這麼簡單,這個領域還有大量有待攻克的難關,有些難題已經與句法分析攪在一起,非統籌考慮是無法單獨推進的。

句法分析

句法(syntax)和詞法合稱語法(grammar)

。語法這個層次要不要存在,一直是引起很熱烈爭論的話題。如果說符號(說了什麼)是起點、語義(誰和誰有什麼關係)是終極的話,那麼語法就是中繼站。如果說符號在一樓、語義在三樓的話,那麼語法(誰和誰有關係)就在二樓。從一樓到三樓有兩種走法:一種是從一樓直接搭梯子上三樓,這叫 “意合” 派,實際上很多工程性的 NLP 系統採用了這一派,語言學界也有比較極端的人在學術上主張這種觀點;另一種是從一樓上到二樓,在二樓拿到一些 “導航” 信息,然後再從二樓再上三樓直達目標,這叫 “結構制導” 派。

很顯然,如果意合派能夠達到滿意的語義分析效果,那麼語法就是多餘的。如果意合派只能達到表淺的語義分析效果,那麼就它只是一種利用了淺層分析技術的階段性技術路線而已,隨著技術的發展和應用的推動,必將讓位給充分利用結構信息、更具分析深度的新一代技術路線。真正把 “結構制導” 這樣的思路在工程上貫徹到底且能付諸應用的系統少之又少,但這極可能是技術門檻高的原因,而不是技術路線走不通的原因,對此我們後文還會有進一步的討論。目前看來,“意合”的技術瓶頸是很明顯的,比如對機器人說 “你給我講個故事吧!” 和“我給你講個故事吧!”,如果沒有對語序結構的深究,僅靠基於詞袋和模板來處理,混同的可能性更大。

如果說以詞袋和模板為基礎的 “淺層” 句法分析方法具有侷限的話,那麼,可以一用的 “深層” 句法分析方法。目前有哪些呢?概括說起來,傳統的 “主流” 結構表示方法有三種:CFG(上下文無關語法)、DG(依存語法)、CCG(組合範疇語法),新潮的結構表示方法只有一種,就是字符串到向量空間的嵌入(seq2seq)。

上下文無關語法是比較經典的模型,著眼點在鄰接成分之間的拼接(concatenation)關係。它的最大好處是直觀,適宜於描述由小的成分逐層拼接成大的成分,自然形成樹型層次結構。由於模型過於寬泛,其中有大量遞歸現象是實際的自然語言中不會發生的,但通用的分析算法卻為這種不會發生的遞歸現象付出了很多無謂的代價。另外,上下文無關語法不能直接處理個體詞語之間的關聯(association)關係。一旦要處理關聯關係,就必須通過語言的語言的向心結構,把複雜成分用中心詞語作代表,把中心詞語的關聯關係和鄰接成分之間的拼接關係統一起來。但在有些語言如漢語中,含有大量非中心詞參與對外關聯關係的 “交叉” 現象,不可能簡單地實現關聯關係和拼接關係的統一。

依存語法與上下文無關語法相反,處理的著眼點在個體詞語之間點對點發生的關聯關係。徹底的依存語法可以打破樹形結構的羈絆,把所有實際發生的關聯關係都揭示出來。而鄰接成分之間的拼接關係,則可以通過關聯關係的轄域間接得出。故此,依存語法有更大的靈活性和簡潔性。但適宜於依存語法的分析手段還沒有上下文無關語法那麼豐富。儘管如此,依存語法還是成為近期內句法分析領域超過上下文無關語法的首選模型。

組合範疇語法是在範疇語法基礎之上發展起來的,是一種秉持了比較嚴謹風格的形式化數學演算體系。它把語言成分之間的結合處理為句法範疇對象之間的 “約分” 運算。這種形式化演算體系見諸實用的例子很難找到,但其中很多閃光的思想可以借鑑。特別是詞負載結構、無需規則的思想,語言成分自帶對外結合的 “插座” 和“插頭”的思想,如能發揚光大,揚長棄短,說不定將會有令人驚喜的前景。

字符串到向量空間的嵌入,理論上可以隱性地容納較為複雜的語言結構,但在深度學習語境下,這些複雜的語言結構轉化為向量後,很難顯性地予以展現和解釋,這對於自然語言處理的工程化實現和根據面向客戶的投訴定點糾錯、敏捷修復的要求,都是很難做到的。此外,如果應用任務是直接把文本映射為可簡單標註的答案,比如是非題或者選擇題的答案,或者可輕鬆獲取的答案,比如雙語對齊語料,向量嵌入是有優勢的;但如果應用任務是複雜知識表示結構的抽取,標註的複雜性和專業性會急劇上升,標註成本會高到得不償失。

無論使用什麼樣的句法分析技術,有一點必須明確,就是句法本身是不自足的。細粒度描述的句法不具備魯棒性和可行性,而粗粒度描述的句法往往必然帶有偽歧義。比如 “饅頭吃光了” 只有一個理解是符合常識的,即 “饅頭” 作為受事,被某個施事 “吃光” 了。另一個理解,即 “饅頭” 作為施事,把 “光” 作為受事 “吃” 了,是不符合常識的,因為一個無生命的食品,不會去吃一種有影無形的物理對象。“這碗豬都不喝的湯”,雖然其中的數量短語 “這碗” 和名詞 “豬” 之間在句法上是可結合的,但它們之間並不不具備統計上顯著的搭配性或者說相諧性。這說明,語義和統計可以反過來作用於句法分析,幫助句法分析環節排除偽歧義。套用量子力學的比喻,如果說正向的結構制導作用好比是 “粒子” 的話,這種基於語義或大數據統計的逆向篩選的作用就好比是“波”,二者恰好構成一種完美的“波粒二象性”。

最後我們要說明,即使語言的結構表示模型是基於理性主義(符號或規則)路線的,但語言解析過程本身仍可以採用基於統計的或基於聯結的方法。比如 PCFG 就是基於規則的結構表示與基於統計的過程控制的有機結合。

詞典化(免規則)、單子性(免複雜層次)、局域化(免跨成分關聯)和魯棒性(對靈活語序和修辭性失配的適應性),是自然語言句法分析技術未來的發展趨勢。限於篇幅,這裡不展開論述了。

語義表示與理解

如果說自然語言處理是人工智能的王冠,那麼語義表示和理解技術就是王冠上的明珠。目前人工智能領域的發展態勢,在語義這一塊已經到了重兵集結的程度。句法分析技術的進步,使得我們有希望從結構和算法方向逼近更加精準的語義解析;應用領域數據轉化為知識的實踐方興未艾,知識圖譜的技術棧裡算力充足工具齊全,使得我們有希望從表示的方向為語義架橋鋪路添磚加瓦。精彩紛呈的明珠爭奪戰,可以說是萬事俱備,一觸即發。

語義長什麼樣?下面我們以 “今年 A 公司營業額比去年增長 20%” 這句話為例,看看它涉及了哪些語義表示與描述。對它進行解析,可產生如下一些結果:A 公司是 “公司” 這個類型的一個實例,它有一個屬性叫做 “營業額”,營業額對應不同的“期間” 標籤,有的不同的取值實例。“增長”是一個事件,它涉及基準、當事和比率三個角色,這三個角色都是數學量。基準和當事都是金額,比率是純量。等等。

有心人很快會發現,這就是知識圖譜

的確,知識圖譜就是當代最通用的語義知識表示形式化框架。它的節點就是語義學裡面說的 “符號根基(symbol grounding)”,即語言符號與真實或想象空間中的對象的對接,在計算機中體現為語言符號與數字化對象的對接。它的邊則是語義學裡面說的 “角色指派(role assignment)”,在計算機中體現為每個數字化對象與其他數字化對象之間的語義關係標籤。節點和邊,這恰恰是知識圖譜所支持的要件。

但是,事情並沒有完結。語義結構表示框架中,現有的知識圖譜可以完美描述實體、關係、屬性(狀態)及其值這三類要素。但是剩下的還有事件、時間、空間、因果條件、邏輯模態等,我們必須對現有的知識圖譜結構進行改造,才能適應這些語義要素的表示。

先看事件。事件可以改變關係和屬性。比如 “撤銷職務” 的事件真正的語義效果是改變相應實體的 “職務” 屬性的取值,其他一切操作,如果不落到這上面,都是耍流氓。此外,一個事件可以觸發其他事件(例如 “國王去世” 觸發 “王儲繼位”),一串事件可以是一個大事件的細粒度展開(比如“立案偵查”、“調查取證”、“拘捕” 可能是某個 “案件” 事件的細粒度展開)。這些具有動態特性的操作如何與靜態知識圖譜的結構和工具融為一體,是一個非常有挑戰性的問題。我們注意到哈工大有關 “事理圖譜” 的相關研究成果,但要成體系地解決事件的表示問題,目前成果還是很不夠的。

再看時間和空間。大多數關係、屬性、狀態均與時空有關。事件也是在時空中才得以展開。基於關係、屬性、狀態、事件的語義知識處理,也要依據特定條件在給定時空範圍內是否滿足而遵循不同的處理邏輯。以農產品現貨、期貨為例,特定天氣事件(比如暴雨、洪水)產生於特定時間(比如橡膠生長期)和空間(橡膠生長地),對特定農產品(橡膠)及其現貨、期貨交易者才構成預警。所以,時空標籤如何引入靜態知識圖譜,也是一個具有挑戰性的問題。

邏輯模態(例如 “準備裁員百分之二十”/“預計增產百分之十五”)、委婉表述(例如 “不認為有必要”/“傾向於暫緩”)、高階邏輯表述(例如 “對房價過快上漲的預期減弱”)等,也都超出靜態知識圖譜的表示能力範圍之外。如何為此類文本的語義設計相應的標籤體系,也是正確抽取知識、融合知識所必須解決的問題。

此外,人類的語義解析過程充滿了所謂 “腦補”。比如:“增長率超過了聯想”,在字面語義上,“增長率” 作為一個數值和 “聯想” 作為一家公司,是不可比的。但我們在 “公司” 為核心節點的本體中,可以找到 “增長率” 這樣一個類型匹配的關聯屬性,於是就可以啟動自動的 “腦補” 過程。可見,藉助知識圖譜,智能化地完成這類需要 “腦補” 的語義理解過程,是語義分析技術走向實用和深化的必然要求。

從上面的分析我們看到,自然語言的語義的確是一個博大精深的體系。知識圖譜為語義計算準備好了基本的框架,但要全面推進到實用,還要做許多基礎性的工作,包括資源建設和理論模型創新。我們期待在這一領域能有重量級的成果出現,將語義表示和計算的工作推向深入。

應用

自然語言處理技術的應用場景甚廣,大致可分為分析型、生成型和交互型三類。輿情監控系統是典型的分析型系統;自動寫作系統是典型的生成型系統;形形色色的聊天機器人是典型的交互型系統。

自然語言處理能力以平臺化方式提供服務,是廣大自然語言處理技術提供者求之不得的事情,但現實中可以這樣做的場景幾乎沒有,也就是說自然語言處理本身的能力輸出作為商業模式,是受到很多非技術因素限制的。現實中,更多的自然語言處理技術是融合於一個更大的行業應用場景中,作為其中一項核心技術來發揮自己的作用的。

除了法律、醫療、教育等先行行業之外,金融證券行業對自然語言處理技術業有很迫切的落地需求,但往往必須結合專業領域知識和私有數據才能構建有價值的場景。IT 背景的公司在這方面大都有所欠缺。另一方面,自然語言處理技術門檻很高,資源依賴性很強,不掌握新一代技術的團隊也很難在賽道上堅持到勝利。

目前,行業技術提供商、互聯網巨頭和人工智能創業企業都在進入這個領域。行業技術提供商宜靜觀進展,直接採用經過實戰考驗的成熟技術;人工智能創業企業沒有一招鮮就沒有活路;而互聯網巨頭們,既有財力又有機制去自我孵化出 N 招鮮來。硝煙滾滾,磨刀霍霍,自然語言處理技術為題材的一場好戲已經開場,一場人工智能和區塊鏈技術相結合的大戲也將開場,讓我們共同期待人工智能,期待區塊鏈,期待智子社區的發展.


分享到:


相關文章: