自然語言理解(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 都成為了最新的”統治者”。
到了2019年,BERT 和 GPT-2 的表現震驚了業界,他們都是用了 Transformer,下面将重點介紹 Transformer,因為他是目前「最先進」的方法。
Transformer 和 CNN / RNN 的比較
Transformer 的原理比較複雜,這裡就不詳細說明了,感興趣的朋友可以查看下面的文章,講的很詳細:
《BERT大火卻不懂Transformer?讀這一篇就夠了》
下面将摘取一部分《why Self-Attention?A Targeted Evaluation of Neural Machine Translation Architectures》裡的數據,直觀的讓大家看出來3者的比較。
語義特征提取能力
從語義特征提取能力來說,目前實驗支持如下結論:Transformer在這方面的能力非常顯著地超過RNN和CNN(在考察語義類能力的任務WSD中,Transformer超過RNN和CNN大約4-8個絕對百分點),RNN和CNN兩者能力差不太多。
長距離特征捕獲能力
原生CNN特征抽取器在這方面極為顯著地弱于RNN和Transformer,Transformer微弱優于RNN模型(尤其在主語謂語距離小于13時),能力由強到弱排序為Transformer>RNN>>CNN; 但在比較遠的距離上(主語謂語距離大于13),RNN微弱優于Transformer,所以綜合看,可以認為Transformer和RNN在這方面能力差不太多,而CNN則顯著弱于前兩者。
任務綜合特征抽取能力
Transformer綜合能力要明顯強于RNN和CNN(你要知道,技術發展到現在階段,BLEU絕對值提升1個點是很難的事情),而RNN和CNN看上去表現基本相當,貌似CNN表現略好一些。
并行計算能力及運算效率
Transformer Base最快,CNN次之,再次Transformer Big,最慢的是RNN。RNN比前兩者慢了3倍到幾十倍之間。
關于 Transformer ,推薦幾篇優秀的文章給大家,讓大家有一個更綜合的了解:
《放棄幻想,全面擁抱Transformer:自然語言處理三大特征抽取器(CNN/RNN/TF)比較》
《從Word Embedding到Bert模型—自然語言處理中的預訓練技術發展史》
《效果驚人的GPT 2.0模型:它告訴了我們什麼》
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!