自然語言處理遇到的那些「坑」

在營銷機器人之後,新聞機器人也橫空出世。近日新聞機器人發表的一篇題為《副市長晨練撿垃圾》的新聞。同樣的表述,因為語氣不同、斷句不同等,會產生不同的理解。而新聞中的歧義問題反映出的只是自然語言處理面臨諸多挑戰的冰山一角,本文深度解析自然語言面臨的三大問題,細數自然語言處理遇到的那些「坑」。

要探究自然語言處理面臨的挑戰?你得先弄明白什麼是自然語言處理。

自然語言處理,簡稱NLP,是計算機科學領域與人工智慧領域中的一個重要方向,是一門融語言學、計算機科學、數學於一體的科學。自然語言處理並不是一般地研究自然語言,而在於研製能有效地實現自然語言通信的計算機系統。如果沒有語言,人類的思維也就無從談起。只有當計算機具備了處理自然語言的能力時,機器才算實現了真正的智能。

不難看出,機器需要具備處理自然語言的能力,但研究自然語言、有效實現自然語言通信並非易事,自然語言處理大致面臨三大挑戰:普遍存在的不確定性、語言知識處理的複雜性、輸入的不規範性。為什麼會有這些挑戰?這些挑戰又有什麼表現呢?

一.普遍存在的不確定性

自然語言處理面臨的最大困難就是其普遍存在的不確定性,即消除歧義,涵蓋詞法、句法、語用分析中存在的歧義問題。在每一個層次中或是在下一層次向上一層次轉變中都存在著歧義和多義現象,即形式上一樣的一段字元串,在不同的場景或不同的語境下,可以理解成不同的詞串、片語串等,並有不同的意義。造成歧義出現的原因是,對於機器來說,人類活動非常複雜,而語言的辭彙和句法規則又是有限的,它們中的大多數表述需要根據特定的相應的語境和場景的規定而得到解決,這就造成同一種語言形式可能具有多種含義。

a.詞法

在詞法中,存在單詞邊界界定的歧義問題,即分詞。在口語中,詞與詞是連貫表述的,在書寫上中文也沒有詞與詞之間的邊界,詞和詞之間沒有將不同單詞切分開來的分隔符,這時候,對於中文的自然語言處理就面臨不同於英文等西方語言的另一步工序,分詞,即由機器在詞與詞之間自動加上分隔符,從而將中文文本切分為獨立的單詞。通俗的說,就是查字典,把句子從左到右掃描一次,遇到字典里有的詞標識出來。這種問題能解決多數問題,比如將句子「今天天氣炎熱」切分,變成「今天/天氣/炎熱」。但當遇到二義性的分割就無能為力了。中文分詞是中文自然語言處理的基礎,在自然語言處理中扮演著重要角色。

中文分詞細分來講主要存在歧義切分和新詞發現的問題。

分詞的第一大難點是歧義切分問題。一般當一個字可以同時作為兩個詞的組成部分,當這兩個詞按序同時出現時,就可能會出現歧義現象。目前的歧義一般分為三種:交叉歧義,組合歧義,真歧義。

  • 交叉歧義(字元串ACB,AC和CB都是一個漢語辭彙,會存在多種切分交叉在一起):「我們研究所有東西」,「研究所」和「有」或者「研究」和「所有」都是合理的切分方式。

  • 組合歧義(字元串AB是一個辭彙,A和B同時也是辭彙,會存在不同語義下切分不同):「這個人手上有顆痣」,「目前人手緊缺」。前者是「人」/「手」兩個實體詞,後者是「人手」一個實體詞。

  • 真歧義(怎麼切分都合理):「乒乓球拍賣完了」,切分為以下兩種情況都是合理的,「乒乓球拍/賣/完了」,「乒乓球/拍賣/完了」。

新詞發現是分詞中的第二大難點。新詞是指在從前的分詞詞典中沒有收錄,後來出現並被大家公認的詞語。新詞發現難的原因在於新詞覆蓋面廣,詞語構成沒有普遍規律;低頻新詞數據稀疏,識別難度大。

最典型的新詞就是人名詞,如「李達康心系GDP」,句中的「李達康」是人名,如果把「李達康」這個基本詞收錄到詞典中就能解決這個問題。但是「李達康」是近期電視劇中出現的人物,詞典並未講該詞收錄,及時、完整地收錄全部人名是一個不現實的工程。另外,人們還會不斷創造新的詞語字,這一類詞被稱為「未登錄詞」,比如「屌絲」、「不明覺厲」、「累覺不愛」等。除了人名、未登錄詞以外,地名、機構組織名、事件名、縮略語、派生詞、各種專業術語也屬於新詞。

新詞是中文分詞演算法在召回層面上最主要的難題,也是評價一個分詞系統好壞的重要標誌。如果一個新詞無法被分詞系統識別,會導致很多噪音數據被召回,進而會影響後面的句法分析和語義分析等相關處理。比如句子「速度與激情8挺不錯的」,若詞典里未收錄「速度與激情8」這個電影名,可能會這樣分詞:「速度/與/激情/8」,情況好一點,詞典里有「速度與激情」這個詞,機器會認為「8」是一個數字,仍然不知道這裡指的是《速度與激情8》這部電影。

b.句法

除了詞法以外,句法也存在著各種歧義問題。例如在短語級別上,結構關係不同和結構層次不同都會造成歧義的出現。比如「修改方案」可以理解為動賓關係(修改了一個方案),也可以理解為偏正關係(一個修改方案),這是結構關係不同所造成的歧義;比如「許多朋友送來的禮物」,既可以理解為禮物多,也可以理解為朋友多,這是結構層次不同造成的歧義。

又如在句子級別上,可能出現語義組合歧義。比如「他在汽車上畫畫」,介詞短語「在汽車上」的語義既可以指「他」(他在汽車上上,他畫畫),也可以指向「畫畫」(他畫畫,畫在了汽車上)。由此可見,同樣一個單詞、短語或者句子有多種可能的理解,表示多種可能的語義。如果不能解決好各級語言單位的歧義問題,我們就無法正確理解語言要表達的意思。

c.語用

語用也可能存在歧義。當語氣不同的時候,表達的意思可能大相徑庭。例如問題「你今天釣到魚了嗎?」,回答「運氣好極了,一條都沒有釣到。」機器需要判定,這裡的「運氣好極了」可不是有好運氣的感慨。

二.語言知識處理的複雜性

為了消除歧義,機器需要獲取更多的知識,而消除歧義所需要的知識在獲取、表達以及運用上存在困難,主要包含上下文知識和背景知識的問題。

a.上下文知識的獲取問題

所謂的「上下文」指的是當前所說這句話所處的語言環境,例如說話人所處的環境,人說話時指代的對象,人說話時省略的部分是什麼,或者是這句話的前幾句話或者後幾句話等等。在試圖理解一句話的時候,上下文的影響十分重要。由於上下文對於當前句子的暗示形式是多種多樣的,因此如何考慮上下文知識獲取是語言知識處理複雜性的一大體現。

在自然語言處理的應用中,上下文知識獲取的問題有不同的表現。第一,在日常對話中,人們時常會在表述中做省略,讓表達更簡潔。因此,上下文知識獲取中存在對省略部分進行補充的一步,稱為「省略恢復」。 比如用戶向客服系統發問:「發票快遞費怎麼收,在線支付。」未等客服系統做出回答,他繼續說道:「到付呢?」這是自然語言中典型的省略問題,要求機器能夠根據上下文的相關信息,對可能的語法空位和語義空位進行填充,實現對省略部分的恢復。在這個例子中,機器應在「到付呢」前恢復問題的陳述部分「發票快遞費怎麼收」,並給出合適的答案。

第二,在人的交流過程中,時常會有指代,在表達中適當地使用指代會讓表達更加簡練卻不影響本意的闡述。文本中是否存在指代現象,準確識別指代的是什麼內容,機器遇到的這一不容小覷的難點稱為「指代消解」。比如在客服系統中,用戶這樣說:「取消訂單為什麼還扣費?」客服回答:「您好,為了避免中途取消訂單造成司機的損失,接單後超時取消將會產生一定的費用。」用戶接著追問:「上次也是這樣都沒扣,怎麼回事?」這時客服應理解用戶問句里的「上次」,指的是「上次中途取消訂單」,才能給出正確的回復:「之前取消訂單卻未產生扣費是因為您取消的時間在司機接單後五分鐘內。若取消時間在接單後五分鐘內,將不會產生費用。感謝理解。」

第三,在某些以任務驅動的對話中,用戶通過使用某類產品會在某一領域獲得相對完整的服務,解決一個複雜問題,或者獲得某種方向性的引導。在這種情況下,整個對話的場景被限定,需要確定一些關鍵的信息才能完成任務,但用戶一般不會再一次表述中就表達完所有需要提供的信息。這時候,機器需要能夠主動向用戶詢問,並且會根據上下文來判斷繼續提出什麼樣的問題,這就是「槽位填充」。比如餐廳定位,涉及到時間、地點、餐廳名、用餐人數等屬性:

槽位填充就是在對話中識別出用戶提供的餐廳名、用餐人數這些屬性,這些屬性的狀態就是這個對話的狀態,對話狀態跟蹤就是記錄當前用戶所有動作以及對應的槽位的狀態並維護整個對話的狀態。

b.背景知識獲取問題

正確理解人類語言還要有足夠的背景知識,機器也需要了解約定俗成的東西。比如某打車軟體司機向客服系統詢問:「都十點了,怎麼還沒獎勵?」這就需要系統知道該打車軟體在晚間9點以後就有夜間獎勵。如果機器不知道這個政策,往往會給出令人啼笑皆非的答案。

對俗語、諺語等的深入理解、運用也同樣重要。在英語中「The spirit is willing but the flesh is weak.」,意思是「心有餘而力不足」。但是當時的某個機器翻譯系統將這句英文翻譯到俄語,然後再翻譯回英語的時候,卻變成了「The Voltka is strong but the meat is rotten.」,意思是「伏特加酒是濃的,但肉卻腐爛了」。從字面意義上看,「spirit」與「Voltka」對譯似無問題,而「flesh」和「meat」也都有肉的意思,但兩句翻譯的意思卻南轅北轍。關鍵的問題就在於在翻譯的過程中,機器翻譯系統是從字面上進行翻譯,卻沒有理解句子真正的寓意。

三.輸入的不規範性

在輸入時,可能會出現錯誤。常見的不規範輸入主要是錯別字、口語化、語法不對。

a.錯別字

就客服系統來說,用戶時常會有一些有瑕疵的輸入,例如:「打車卷怎麼用啊,不會用」、「伺機居然繞路,氣死我了」,用戶錯把「打車券」打成了「打車卷」、把「司機」打成了「伺機」,這需要機器具備「糾錯」功能。

b.口語化

有時候客服系統還會遇到這樣的情況:「跟他說了我趕時間他還不麻溜兒地過來,這不能夠啊。」如果不能具備理解口語化的能力,機器恐怕不知道用戶這是在投訴司機接人速度太慢吧。

c.語法不對

正確的句式應該是主、謂、賓的格式,但人的的表達往往沒那麼多條條框框:「順風車沒有到目的地就強制讓我下車,他自己找找錯誤我然後還要就不按我給她說的路線走他自己繞路,還要讓我強制交高速費」。可以看到,用戶可能因為情緒激動語序顛倒。機器需要修正這些錯誤的語法,理解用戶投訴的三個要點:未達到強制用戶下車、繞路、強制交高速費,投訴對象是順風車車主。

從上面三個方面的主要困難,我們看到自然語言處理這個難題的根源就是人類語言的複雜性和語言描述的外部世界的複雜性。人類語言承擔著人類表達情感、交流思想、傳播知識等重要功能,因而自然語言處理也要求機器需要具備強大的靈活性和表達能力,理解語言所需要的知識又是無止境的,並不斷「學習」無止境的、變化的知識,自然語言處理道阻且長。

歡迎關注公眾號:zhuiyikeji

推薦閱讀:

人工智慧會使哪些行業受益?
人工智慧帶來的道德困境(一):生死時速
微軟AI單憑文字就可作畫,誰最先受到衝擊?
人工智慧時代,設計師為何需要學習技術
機器學習工作流是什麼意思?

TAG:人工智慧 | 自然語言處理 | 深度學習DeepLearning |