堅持四項基本原則,開發魯棒性NLP系統

2021-06-02 19:13:13 字數 2812 閱讀 7911

以前說過,乙個 real life 自然語言處理系統,其質量和可用度除了傳統的 data quality 的衡量指標查準度(precision)和查全度(recall)外,還有更為重要的三大指標:海量處理能力(scalability), 深度(depth)和魯棒性(robustness)(參見:《

「三好」立委要做「三有」系統

》)。 本文就簡單談一下魯棒性。

為了取得語言處理的魯棒性(robustness),乙個行之有效的方法是實現四個形容詞的所指:詞彙主義(lexicalist); 自底而上(bottom-up); 調適性(adaptive);和

資料制導(data-driven)

。這四條是相互關聯的,但各自重點和視角不同。系統設計和開發上貫徹這四項基本原則, 是取得魯棒性的良好保證。有了魯棒性,系統對於不同領域的語言,甚至對極不規範的社會**中的語言現象,都可以應對。這是很多實用系統的必要條件。

先說詞彙主義策略。詞彙主義的語言處理策略是學界和業界公認的乙個有效的方法。具體說來就是在系統中增加詞彙制導的個性規則的總量。自然語言的現象是如此複雜,幾乎所有的規則都有例外,詞彙制導是必由之路。從堅固性而言,更是如此。基本的事實是,語言現象中的所謂子語言(sublanguage),譬如專業用語,網路用語,青少年用語,他們之間的最大區別是在詞彙以及詞彙的用法上。一般來說,顆粒度大的普遍語法規則在各子語言中依然有效。因此,採用詞彙主義策略,可以有效地解決子語言的分析問題,從而提高系統的魯棒性。

自底而上的分析方法。這種方法對於自淺而深的管式系統 (pipeline system) 最自然。系統從單詞出發,一步一步形成越來越大的句法單位,同時解析句法成分之間的關係。其結果是自動識別(構建)出來的句法結構樹。很多人都知道社會**的混亂性,這些語言充滿了錯別字和行話,語法錯誤也隨處可見。錯別字和行話由詞彙主義策略去對付,語法錯誤則可以借助自底而上的分析方法。其中的道理就是,即便是充滿了語法錯誤的社會**語言,其實並不是說這些不規範的語言完全不受語法規則的束縛,無章可循。事實絕不是如此,否則人也不可理解,達不到語言交流的目的。完全沒有語法的「語言」可以想象成乙個隨機發生器,隨機抽取字典或詞典的條目發射出來,這樣的字串與我們見到的最糟糕的社會**用語也是截然不同的。事實上,社會**類的不規範語言(degraded text)就好比乙個躁動不安的逆反期青年嬉皮士,他們在多數時候是守法的,不過情緒不夠穩定,不時會」突破」一下規章法律。具體到語句,其對應的情形就是,每句話裡面的多數短語或從句是合法的,可是短語(或從句)之間常常會斷了鍊子。這種情形對於自底而上的系統,並不構成大的威脅。因為系統會盡其所能,一步一步組合可以**(解構)的短語和從句,直到斷鏈的所在。這樣一來,乙個句子可能形成幾個小的句法子樹(sub-trees),子樹之內的關係是明確的。

調適性上面已經提到,作為乙個管式系統的開發原則,這一條很重要,它是克服錯誤放大(error propagation)的反制。理想化的系統,模組之間的介面是單純明確的,鐵路警察,各管一段,步步推進,天衣無縫。但是實際的系統,特別是自然語言系統,情況很不一樣,良莠不齊,正誤夾雜,後面的模組必須設計到有足夠的容錯能力,針對可能的偏差做調適才不至於一錯再錯,步步驚心。如果錯誤是 consistent/predictable 的,後面的模組可以矯枉過正,以毒攻毒,錯錯為正。還有一點就是歧義的儲存(keeping ambiguity untouched)策略。很多時候,前面的模組往往條件不成熟,這時候盡可能保持歧義,運用系統內部的調適性開發在後面的模組處理歧義,往往是有效的。

最後,資料制導的開發原則,怎樣強調都不過分。語言海洋無邊無涯,多數語言學家好像乙個愛玩水的孩子,跳進大海就樂不思蜀。見水珠不見海洋,見樹木不見森林,一條路走到黑,是太多語言學家的天生缺陷。如果由著他們的性子來,系統疊床架屋,其執行和維護的 overhead 會越來越大,而效果卻可能越來越差(diminishing returns)。資料制導是迫使語言學家回到現實,開發真正有現實和統計意義的系統的乙個保證。這樣的保證應該制度化,這牽涉到開發語料庫(dev corpus)的選取,baseline 的建立和維護,unit testing 和 regression testing 等開發操作規範的制定以及 data quality qa 的配合。理想的資料制導還應該包括引入機器學習的方法,來篩選制約具有統計意義的語言現象反饋給語言學家。從稍微長遠一點看,自動分類使用者的資料反饋,實現某種程度的粗顆粒度的自學習,建立半自動人際互動式開發環境,這是手工開發和機器學習以長補短的很有意義的思路。

適配性、資料制導的容錯性開發肯定可以對付一些錯字漏字的現象, 但是究竟能對付多少,那些是可以對付的,那些是難以對付的,需要具體分析。

可以看一下兩極的情形:天花板和地板。

容錯、糾錯的系統本質上是對人的容錯、糾錯能力的 modeling,因此人的理解能力是系統可能逼近的天花板。理論上講,如果人能理解錯字漏字的語句,基本說明了這個不規範的句子形式內涵語義的冗餘度,那麼乙個容錯系統應該也可以做到。(當然,人的理解可能不自覺地調動常識、專業知識、聯想和推理等非語言學手段,模擬起來很困難,在目前,簡單地容錯開發是遠遠達不到人的理解力的。)如果錯字漏字造成真正的語句歧義,那麼最好的系統最多做到分析的多路徑。最後,如果錯字漏字嚴重到人都搞不清什麼意思的時候,機器自然是兩眼一抹黑。

地板就是乙個完全規範的「緊式」語言系統,錯字漏字的地方就造成斷鏈,區域性語義無法合成為完整的理解(problem with the semantic compositionality, the key to language understanding)。所謂容錯開發,就是盡可能把緊式系統鬆綁為「寬式」系統,把非排歧的無關緊要的條件放寬。譬如英語中的主謂一致關係的條件(第三人稱單數的主語需要其謂語動詞有詞尾-s, 這個中小學語法課上的金科玉律就是緊式語法的條條框框,在寬式開發中一般不用)。再如漢語動詞的被動語態,有些句子加了「被」字,萬一這個關鍵的被動語態的助詞漏掉了,容錯系統應該仍然分析無誤,如果邏輯動賓的語義搭配條件參與了分析的過程的話(如:「飯吃了」 就是 「飯被吃了」,而「我吃了」 則不一樣)。

用人的四項基本原則

中國經濟的快速發展,給許多企業帶來了發展的機遇,但也帶來了如何用人的難題。實際上,員工在技能 態度 個人問題等方面千差萬別,並不是所有的人都能用的得心應手。那麼,在既定的人員結構 人員無法做出調整的情況下,管理者如何有效地用人呢?管理大師彼得 杜拉克就曾總結出用人的四項基本原則 杜拉克管理應用詞典 ...

CIO執行企業IT工作的四項基本原則

沒有工作思路是 cio目前工作中存在主要問題,也是 cio面臨困境的主要原因所在。在企業做了多年的 cio之後,我認為,cio的工作要遵循四條基本思路 資訊規劃建設是前提,資訊制度建設是保障,資訊綜合資源管理和建設是關鍵,cio管理方法和藝術是手段。資訊規劃建設是前提 資訊化不僅是技術變革,也是管理...

正確使用 Docker 技術的四項基本原則

docker 大熱之後,不少公司都試圖搞清楚 docker 能給自己的業務帶來什麼好處,有些團隊甚至一股腦地把東西都往容器裡面塞。其實,技術領域不存在能一勞永逸的 銀彈 要正確的使用 docker 容器技術才能給自己帶來好處,否則可能帶來難以預料的後果。下面四條基本原則,在選擇容器技術,而不是裸應用...