作者:竹間智能自然語言與深度學習小組
長期以來,中文自然語言處理(NLP)的研究遭遇瓶頸,其中一個重要原因就是中文的語言學基本無法遷移到已有的成熟的深度學習模型中,這也是中文 NLP 難於英文的重要原因之一。而竹間智能在自然語言處理的研究中,結合深度學習、語言學和心理學等,通過 NLU 來彌補傳統中文 NLP 在語言理解上的不足,取得了不錯的成果。在此和大家分享一些竹間智能在中文自然語言交互研究中的經驗和思考。
本文結合語言學和 NLP 的幾個基本任務,從理論上對中文 NLP 的特點進行說明,同時展望 NLU 在中文自然語言交互上的一些方向。
1.中文分詞
詞是最小的能夠獨立運用的語言單位。「詞」這個概念,是從西方引入的,在 1898 年《馬氏文通》出版之前,傳統的語言學研究對象是「字」,而不是「詞」。漢語和英語最直觀、最明顯的不同,就是英語的詞是天然的,由空格分開,而漢語的字緊密排列,從形式上看,其實沒有「詞」這個單位。
現代漢語的典型特徵之一是雙音節詞佔優勢。古漢語常常是一字即一詞,而現代漢語都把它們雙音節化了,比如「目-->眼睛」「悅-->高興、喜歡」。如果單單把「睛」、「興」等字拿出來,它們承載的意義與原詞是有差異的。加之考慮到實際應用的需求,以詞為索引可以減小搜索空間、加快搜索速度、提高準確率,所以做分詞是有必要的。
由於漢語的特殊性,在分詞任務中,會碰到兩種歧義現象:交叉歧義 (Cross Ambiguity) 和組合歧義 (Combination Ambiguity)。
(1) 老闆有意見他。
(2) 老闆對他有意見。
和 (2) 的正確切分是:
(1) 老闆/有意/見/他/。
(2) 老闆/對/他/有/意見/。
這種屬於交叉歧義。abc 三個成分,ab 可以分成一個詞,bc 也可以分成一個詞。
(3) 其他語言學起來很難。
(4) 語言學是以人類語言為研究對象的學科。
和 (4) 的正確切分是:
(3) 其他/語言/學/起來/很/難/。
(4) 語言學/是/以/人類/語言/為/研究/對象/的/學科/。
這種就是組合歧義。ab 兩個成分,組合在一起的時候是一個詞,分開以後可以各自成詞。
解決分詞歧義的技術方法主要有三大類,分別是基於規則的方法,基於統計的方法(例如 CRF、HMM、Deep Learning 等),以及規則和統計結合。網上,也能查到一些相關的分詞器實現。
在技術需求方面,有的需要細粒度的分詞,有的需要粗粒度的,這都是實際應用會面對的矛盾。這也是由於漢語本身語素、詞和短語的界限不明造成的。
臣妾做不到啊。
(5) 中的「做不到」,屬於動補結構 (動詞+補語),從語言學的角度看,是個短語。實際應用時,可以分成「做/不/到」,也可以「做不到」合在一起,看成一個詞。
中文分詞也是英文和中文 NLP 的一個基本不同,英文不需要分詞,而中文需要進行分詞,以便能夠更好地進行後續 NLP 任務。當然,目前也有一些中文 NLP 技術,可以避開中文分詞任務。
2. 詞性標註 (Part-of-speech Tagging, POS)
漢語詞性的獨特之處在於,漢語作為孤立語/分析語,沒有明顯的形態變化,與英語等屈折語不同。比如:
(6) 我感覺他喜歡我。(動詞)
(7) 我的感覺很準。(名詞)
如果用英語說這兩句話,應該是:
(8)I feel he loves me. (動詞)
(9)My feeling is reliable.(名詞)
同樣一個「感覺」,其實是同形異義詞。我們必須準確識別兩種詞性。
上面說的這種情況名詞和動詞的區別是比較明顯的。但漢語的複雜之處還不止這個。比如:
(10) 他喜歡你。(動詞)
(11) 我很珍惜她的喜歡。(動詞用作名詞)
「喜歡」從絕大多數情況來看,都被人們看成一個動詞,但例 (11) 就把動詞當作名詞用了,而且沒有詞形變化。這種情況在漢語裡大量存在,這也就是沈家煊先生提出的漢語「名動包含」的觀點。
漢語的這一特點會造成句子裡的核心謂語動詞難以識別的問題。還是拿例 (11) 來說,句子裡有兩個動詞「珍惜」和「喜歡」,但核心謂語動詞是「珍惜」。「喜歡」最好不要被判斷為動詞,否則會影響後續的句法、語義分析。
中科院計算所漢語詞性標記集提供了 vn、an 等詞性標籤,v 代表動詞,a 代表形容詞,後面加上 n,其實有一種「動名詞」「形名詞」的意思,也是對英語的一種借鑑。vn 等標籤可以幫我們解決掉一些非謂動詞幹擾的問題,但不能解決全部。
在實際應用中,我們以「依句辨品,離句無品」的原則去做詞性標註,關注詞在句子裡的位置和作用,雖然這未必是黎錦熙先生說這句話時的本意。
3. 句法分析
目前在做的句法分析包括句法樹 (Parse Tree) 和依存句法分析 (Dependency Parsing, DP),談到這兩點不得不放出下面這兩張圖:
圖 (1)
圖 (2)
不同的詞類在句子中行使的功能是不一樣的。圖 (1) 基本可以代表英語詞類的功能,這張圖比較符合我們的一般認識,即名詞作主語賓語,動詞作謂語,形容詞作定語,副詞作狀語。
但是漢語的情況,如圖 (2),要複雜得多。名詞也可以作謂語,動詞也可以作主賓語。比如:
我永遠十八歲。
例 (12) 就是一個典型的名詞性短語作謂語的例子,這個句子不需要動詞也成立。「我」是代詞,「永遠」是副詞,「十八歲」是數量短語。
句法樹分析結果如下:
圖 (3)
圖 (3) 借用 CTB(美國賓州大學的漢語樹庫)的標註體系,NP 代表名詞性短語,VP 代表動詞性短語,雖然這句話中沒有動詞,但仍需要 VP 作為謂語的框架。
依存句法分析結果如下:
圖 (4)
圖 (4) 借用 LTP(哈工大社會計算與信息檢索研究中心研發的「語言技術平臺」)的標註體系,SBV 代表主語,root 是「歲」,即使沒有動詞,也能正確分析句子結構。
漢語還有一些特殊句型,比如主謂謂語句、存現句、連謂句、兼語句等,在句法分析層面上都有自己獨特的結構,也是需要特殊處理的。
4. 其他方面
漢語還有一個特點是重意合而不重形式,句子結構比較鬆散,多分句;英語則多從句,多引導詞,句子結構比較容易判斷。如果要判斷句子裡的因果關係、讓步關係、目的關係、假設關係等,目前來說還比較難。況且我們說話的時候,常常會省略「因為」「即使」「如果」等明顯的關聯詞,這也樣也就使得特徵變得不明顯。比如:
(13) 人勤地不懶。
(14) 如果人勤地就不懶。
例 (13) 和 (14) 表達了一樣的意思,但它們的表現形式是不一樣的。
漢語結構鬆散還表現為:
(15) 一斤蘋果多少錢?
(16) 蘋果一斤多少錢?
(17) 多少錢一斤蘋果?
例 (15)(16)(17) 都說得通,而且還很常用。
在語義分析層面,如語義角色標註 (Semantic Role Labeling, SRL) 和語義依存分析 (Semantic Dependency Parsing, SDP),漢語這個特點著實加大了實現的難度。
5. 從 NLP 到 NLU,從處理到理解
再來談談 NLU,傳統的 NLP 基本上都是在做「處理」的工作,是把人類的語言掰開揉碎,而 NLU 則解決更深層的「理解」問題,即如何消化 NLP 已經處理好的東西,真正讓機器明白人類語言的語義(semantic)。NLU 的出現也對中文 NLP 起到了重要的補足作用。
NLP 和傳統語言學已經可以幫助人工智慧解決一部分初級問題,但卻還遠遠不能 cover 千變萬化的語言形式,比如機器可以理解「我心情不好」,卻難以理解「我的心淅淅瀝瀝下著小雨」這樣的轉喻;機器可以理解「我要吃飯」,卻難以體會同樣是吃飯,「上飯店」和「下館子」,這一「上」一「下」間表達的心理上的微妙差異。
人機自然語言交互涉及到語法、語義、語用三個層面,越往後越難。為了推動人機自然語言交互的發展,需要在 NLP 的基礎上,引入 NLU、認知語言學、心理語言學、社會語言學等學科的綜合參與。甚至如竹間智能正在探索的,為了理解「寒暄」、「安撫」甚至是「諷刺」、「幽默」這樣的言語修辭行為,需要在深度學習方法中結合對心理學的研究,在語義理解的基礎上增加意圖識別和情感判斷,以彌補傳統中文 NLP 在語言理解上的不足,讓機器真正讀懂人類語言的複雜語義,以及背後的意圖和情感。在此基礎上給予對話者擬人的反饋,從而達到更好的人機自然語言交互效果。
同樣,人工智慧也必將改變語言學研究的發展方向。傳統的重理論分析而輕實例,坐著想句子的研究方法將逐漸退出舞臺;真實語料、口語和書面語並重,側重對語言形態進行統計分析的研究將大量湧現。另外,傳統語言學將進一步向計算語言學靠攏,未來將會有新的、更容易被計算機接受的語法提出。
竹間智能往期專欄文章
專欄 | 自然語言處理在2017年有哪些值得期待的發展?