一文看懂自然語言理解(NLU)
本文系作者投稿,作者公眾號: easyAI (id: easyai-tech) , easyAI 致力於做人工智慧知識庫,歡迎關注,點選文末"閱讀原文"可直達原文連結,也歡迎大家投稿,AI、NLP相關即可。
自然語言理解(NLU)跟 NLP 是什麼關係?為什麼說它是人工智慧領域裡一個難點?NLU 的發展史歷史和目前最現金的方法是什麼?
本文將解答上面的問題,帶你全面瞭解自然語言理解(NLU)。
什麼是自然語言理解(NLU)?
大家最常聽到的是 NLP,而 自然語言理解(NLU) 則是 NLP 的一部分:
什麼是自然語言?
自然語言就是大家平時在生活中常用的表達方式,大家平時說的「講人話」就是這個意思。
自然語言:我背有點駝(非自然語言:我的背部呈彎曲狀)
自然語言:寶寶的經紀人睡了寶寶的寶寶
自然語言理解就是希望機器像人一樣,具備正常人的語言理解能力,由於自然語言在理解上有很多難點(下面詳細說明),所以 NLU 是至今還遠不如人類的表現。
下面用一個具體的案例來深度說明一下自然語言理解(NLU):
對話系統這個事情在2015年開始突然火起來了,主要是因為一個技術的普及:機器學習特別是深度學習帶來的語音識別和NLU(自然語言理解)——主要解決的是識別人講的話。
這個技術的普及讓很多團隊都掌握了一組關鍵技能: 意圖識別和實體提取 。
這意味著什麼?我們來看一個例子。
在生活中,如果想要訂機票,人們會有很多種自然的表達:
“訂機票”;
“有去上海的航班麼?”;
“看看航班,下週二出發去紐約的”;
“要出差,幫我查下機票”;
等等等等
可以說“自然的表達” 有無窮多的組合(自然語言)都是在代表 “訂機票” 這個意圖的。而聽到這些表達的人,可以準確理解這些表達指的是“訂機票”這件事。
而要理解這麼多種不同的表達,對機器是個挑戰。在過去,機器只能處理“結構化的資料”(比如關鍵詞),也就是說如果要聽懂人在講什麼,必須要使用者輸入精確的指令。
所以,無論你說“我要出差”還是“幫我看看去北京的航班”,只要這些字裡面沒有包含提前設定好的關鍵詞“訂機票”,系統都無法處理。而且,只要出現了關鍵詞,比如“我要退訂機票”裡也有這三個字,也會被處理成使用者想要訂機票。
自然語言理解這個技能出現後,可以讓機器從各種自然語言的表達中,區分出來,哪些話歸屬於這個意圖;而那些表達不是歸於這一類的,而不再依賴那麼死板的關鍵詞。比如經過訓練後,機器能夠識別“幫我推薦一家附近的餐廳”,就不屬於“訂機票”這個意圖的表達。
並且,通過訓練,機器還能夠在句子當中自動提取出來“上海”,這兩個字指的是目的地這個概念(即實體);“下週二”指的是出發時間。
這樣一來,看上去“機器就能聽懂人話啦!”。
自然語言理解(NLU)的應用
幾乎所有跟文字語言和語音相關的應用都會用到 NLU,下面舉一些具體的例子。
機器翻譯
基於規則的翻譯效果經常不太好,所以如果想提升翻譯的效果,必須建立在對內容的理解之上。
如果是不理解上下文,就會出現下面的笑話:
I like apple, it’s so fast!
我喜歡「蘋果」,它很快!
機器客服
如果想實現問答,就要建立在多輪對話的理解基礎之上,自然語言理解是必備的能力。
下面的例子對於機器來說就很難理解:
“有什麼可以幫您?” “你好,我想投訴” “請問投訴的車牌號是多少?” “xxxxxx” “請問是什麼問題?” “我剛上車,那個態度惡劣的哥譚市民就衝我發火”
機器很容易理解為:那個態度惡劣/的/哥譚/市民/就衝我發火
智慧音箱
智慧音箱中,NLU 也是重要的一個環節。很多語音互動都是很短的短語,音箱不但需要能否識別使用者在說什麼話,更要理解使用者的意圖。
“我冷了”
機器:幫您把空調調高1度
使用者並沒有提到空調,但是機器需要知道使用者的意圖——空調有點冷,需要把溫度調高。
自然語言理解(NLU)的難點
下面先列舉一些機器不容易理解的案例:
-
校長說衣服上除了校徽別別別的
-
過幾天天天天氣不好
-
看見西門吹雪點上了燈,葉孤城冷笑著說:
“我也想吹吹吹雪吹過的燈”,然後就吹滅了燈。
-
今天多得謝遜出手相救,在這裡我想真心感謝“謝謝謝遜大俠出手”
-
滅霸把美隊按在地上一邊摩擦一邊給他洗腦,被打殘的鋼鐵俠說:
滅霸爸爸叭叭叭叭兒的在那叭叭啥呢
-
姑姑你估估我鼓鼓的口袋裡有多少谷和菇!
!
-
“你看到王剛了嗎”“王剛剛剛剛走”
-
張傑陪倆女兒跳格子:
俏俏我們不要跳跳跳跳過的格子啦
那麼對於機器來說,NLU 難點大致可以歸為5類:
難點1:語言的多樣性
自然語言沒有什麼通用的規律,你總能找到很多例外的情況。
另外,自然語言的組合方式非常靈活,字、詞、短語、句子、段落…不同的組合可以表達出很多的含義。例如:
我要聽大王叫我來巡山
給我播大王叫我來巡山
我想聽歌大王叫我來巡山
放首大王叫我來巡山
給唱一首大王叫我來巡山
放音樂大王叫我來巡山
放首歌大王叫我來巡山
給大爺來首大王叫我來巡山
難點2:語言的歧義性
如果不聯絡上下文,缺少環境的約束,語言有很大的歧義性。例如:
我要去拉薩
-
需要火車票?
-
需要飛機票?
-
想聽音樂?
-
還是想查詢景點?
難點3:語言的魯棒性
自然語言在輸入的過程中,尤其是通過語音識別獲得的文字,會存在多字、少字、錯字、噪音等問題。例如:
大王叫我來新山
大王叫讓我來巡山
大王叫我巡山
難點4:語言的知識依賴
語言是對世界的符號化描述,語言天然連線著世界知識,例如:
大鴨梨
除了表示水果,還可以表示餐廳名
7天
可以表示時間,也可以表示酒店名
晚安
有一首歌也叫《晚安》
難點5:語言的上下文
上下文的概念包括很多種:對話的上下文、裝置的上下文、應用的上下文、使用者畫像…
U:買張火車票 A:請問你要去哪裡? U:寧夏 U:來首歌聽 A:請問你想聽什麼歌? U:寧夏
NLU 的實現方式
自然語言理解跟整個人工智慧的發展歷史類似,一共經歷了3次迭代:
-
基於規則的方法
-
基於統計的方法
-
基於深度學習的方法
最早大家通過總結規律來判斷自然語言的意圖,常見的方法有:CFG、JSGF等。
後來出現了基於統計學的 NLU 方式,常見的方法有:SVM、ME等。
隨著深度學習的爆發,CNN、RNN、LSTM 都成為了最新的”統治者”。
本文轉自 「easyAI - 人工智慧知識庫」。 easyAI 專注做人工智慧科普內容,讓更多的人瞭解 AI。更多內容可範文官網:https://easyai.tech ,或關注 easyAI 的公眾號: