NLP的工程化,不是一個個演算法的累積,也不是一個個任務的獨立最佳化,而應該是系統工程,綜合考慮語言、計算、場景等多種因素,不斷演進融合,尋求效果滿意解的過程。根據赫伯特.西蒙(圖靈獎和諾貝爾獎雙料得主)的有限理性模型,受到所處環境的高度複雜性和有限的資訊加工能力限制,因此NLP應用落地時,我們不可能遵循”最最佳化“的策略,而應該以獲取當前可接受的“滿意解"為目標。"最優解"可以作為實驗室環境下的研究目標,而”滿意解“是工程化的條件下我們唯一的選擇。
我們提出了“語言、計算、場景”三角形滿意解的NLP工程化技術路線,希望從工程化的角度,綜合語義的符號化表示、傳統語言學的知識表示、深度學習的演算法模型等多種技術,在具體場景需求的約束下,尋找NLP工程應用的滿意解。
最小化的語言特徵是基礎的語言資源
我們已經構建了中文、英文的基礎語言特徵集,其中包括80000多個常用詞彙,覆蓋了大部分常用詞彙。據統計中文常用的5萬個詞可以覆蓋人民日報新聞用詞的99%。基礎的語言特徵集是分類的,比如針對情感計算的基礎語言特徵中包含了140多種情緒。
基礎的語言特徵集,必須透過人工方式構建。我們有30多人的語言學團隊,經過長達10年的積累,已初步構建完善。
語言特徵的泛化是必需的計算技術
語言的使用是動態的,特定場景下的新詞、新用法會層出不窮的出現。比如“深度學習”原來不是一個詞,但近幾年被廣泛使用,特指一類神經網路演算法。這一類的特徵表示,可以採用機器學習演算法(包括深度學習),從真實語料中自動學習,對基礎語言特徵進行擴充和泛化。利用機器學習演算法,也可以進行同義詞的泛化,比如“檢視、查查、查一查、查詢一下、查尋一下”等是“查詢”的同義詞。同時,也可以開展詞語關聯的泛化,比如“馬雲-阿里巴巴”的關係和“馬化騰-騰訊”的關係類似等。
機器學習得到的新詞、新用法,可以透過相似度計算等演算法,將學習結果與基礎語言特徵對齊,以獲得新詞對應的語言屬性。比如“深度學習”是一個名詞,是“演算法”的下位,與“神經網路”同義等。對齊操作保證了泛化特徵的一致性。
語言和演算法的有效結合是關鍵
根據每一類語言結構的特點,有指導的選擇演算法。比如,對於漢語的流水句的處理,哪些語言特徵是流水句的啟用特徵,流水句是否適合LSTM演算法,哪些特徵參與LSTM的運算等。而不是針對所有句法結構,採用一種LSTM模型來進行句法分析。
語言結構因為其動態性,不適合把結構本身作為機器學習的輸入,而應該在輸入側,透過語料標註或規則設計,把結構進一步抽象成為一個更抽象的特徵,輸入給機器學習、深度學習演算法。如在形容詞謂語句的分析中,“形容詞短語”作為一個抽象特徵,輸入給句子分析演算法,而不用關心“形容詞短語”是用什麼演算法得到的。相反,機器學習演算法的輸出,必須以語言特徵或語言結構的形式,這樣才能保證結果的可解釋性。
我們認為,深度學習只是NLP演算法庫中的一部分,也許只在某一個具體的環節中效果最好,對機器學習(深度學習)演算法的“有的放矢”的使用,是NLP工程化的關鍵。
應用場景是無法迴避的約束條件
應用場景是NLP應用的需求和使用環境,不同的應用場景,其約束條件是不同的。有的場景是處理營銷資料的,有的是處理客服資料的;有的場景可以提供大量的標註資料,有的只能提供有限的業務規則;有的場景是同步的,有的是非同步的。NLP應用必須在滿足場景約束的前提下,選擇處理流程、計算演算法、語料資源等內容的配置。比如,對同樣一批資料,同樣一個文字,營銷場景和客服場景的輸出要求完全不同,所用演算法也可完全不同,客服場景可以用分類演算法,但營銷場景也許需要用抽取演算法。
很多NLP應用場景下,客戶都希望在很短的時間內、在沒有訓練語料的情況下,快速看到NLP應用的效果,實現“冷啟動”。比如某電信企業,客服的動單分類有 2000 多項。電信自己整理了3個多月,每一個分類下的資料都很少,但電信也不可能在每一個細分小類,都幫助我們訓練出那麼大量的資料,提供給機器學習演算法訓練。
“冷啟動”的關鍵是規則方法與機器學習方法的有效融合。第一步,採用規則方法,構建一批應用規則,對應用場景下的典型語料,進行規則分析,針對性的獲取特徵,並對典型語料進行標註。第二步,把典型語料的標註資料,作為機器學習演算法的樣本,利用各種機器學習(深度學習)演算法去做擴充、泛化。對泛化的結果,採用抽樣方法,進行人工校驗,加入到典型語料中去。這樣迴圈處理,形成一個良性迴圈,不斷的逼近客戶要求。
NLP工程化的目標
NLP系統的開發與應用,既需要尊重語言學知識,以語言學知識為指導,又需要充分利用機器學習(深度學習)技術的計算優勢,以機器學習為工具,持續迭代發展,才能在工程應用中發揮NLP的能力,實現滿意解。
NLP工程化期望達到以下目標:
(1)可解釋性,NLP系統輸出的結果,應該符合基本的語言學規律,可以用語言學的術語進行解釋,而不是給出一堆雜亂無章的資料,讓使用者從沙海淘金。
(2)一致性,NLP系統的處理過程,應該是隨著處理物件的層次和深度,而逐步疊加模組,下級模組使用上級模組的結果,方便進行最佳化。而不是針對每個任務,採用“一竿子插到底”的複雜演算法,中間過程完全是黑盒子。
(3)即用性,NLP系統的應用,需要做到即插即用的“冷啟動”,或者是在很小的資料集上進行規則表述和預訓練。一切需要使用者標註海量資料,才能啟動的NLP系統,都是耍流氓。
(4)可遷移性,NLP系統,應該在不用大的改動前提下,即可遷移到類似場景。而不應該是千人千面,過分個性化。
(5)自知之明,NLP系統的終極目標是做到自知之明,系統對輸出的結果應該有明確的置信度,哪些結果一定保證是對的,哪些一定是不對的,哪些是不確定,需要人工干預的。有了可靠的自知之明的能力,NLP系統才具備了達到人類理解水平的基本條件。
小編偷偷告訴你,近兩年很多媒體報導,計算機在閱讀理解、機器翻譯等領域超過了人類水平,其實是媒體的一種誇大其辭的誤導,計算機只是做了端到端的匹配,匹配結果與標準答案做了個百分比的統計。計算機對閱讀理解的內容一無所知,對匹配結果的對錯毫無概念,從自知之明的角度衡量的話,計算機的水平可能還達不到小學一年級學生的水平。
語言理解是人工智慧皇冠上的明珠,要達到真正的理解能力,道阻且長;正確處理好語言、計算、場景的融合,NLP技術已經可以在非結構化轉結構化等應用方向上大展宏圖,取得巨大的商業價值。
自知之明的NLP終極目標,任重道遠,我們將與您一路同行。