摘要:本文詳細(xì)討論了自然語言理解的難點(diǎn),并進(jìn)一步針對(duì)自然語言理解的兩個(gè)核心問題,詳細(xì)介紹了規(guī)則方法和深度學(xué)習(xí)的應(yīng)用。引言自然語言理解是人工智能的核心難題之一,也是目前智能語音交互和人機(jī)對(duì)話的核心難題。
摘要:自然語言理解是人工智能的核心難題之一,也是目前智能語音交互和人機(jī)對(duì)話的核心難題。之前寫過一篇文章自然語言理解,介紹了當(dāng)時(shí)NLU的系統(tǒng)方案,感興趣的可以再翻一番,里面介紹過的一些內(nèi)容不再贅述。本文詳細(xì)討論了自然語言理解的難點(diǎn),并進(jìn)一步針對(duì)自然語言理解的兩個(gè)核心問題,詳細(xì)介紹了規(guī)則方法和深度學(xué)習(xí)的應(yīng)用。
引言
自然語言理解是人工智能的核心難題之一,也是目前智能語音交互和人機(jī)對(duì)話的核心難題。維基百科有如下描述[1]:
Natural language understanding (NLU) is a subtopic of natural language
processing in artificial intelligence that deals with machine reading
comprehension. NLU is considered an AI-hard problem.
對(duì)于AI-hard的解釋如下:
In the field of artificial intelligence, the most difficult problems
are informally known as AI-complete or AI-hard, implying that the
difficulty of these computational problems is equivalent to that of
solving the central artificial intelligence problem—making computers
as intelligent as people, or strong AI.
簡(jiǎn)言之,什么時(shí)候自然語言能被機(jī)器很好的理解了,strong AI也就實(shí)現(xiàn)了~~
之前寫過一篇文章自然語言理解,介紹了當(dāng)時(shí)NLU的系統(tǒng)實(shí)現(xiàn)方案,感興趣的可以再翻一番,里面介紹過的一些內(nèi)容不再贅述。那篇文章寫于2015年底,過去一年多,技術(shù)進(jìn)展非常快,我們的算法也進(jìn)行了大量升級(jí),核心模塊全部升級(jí)到深度學(xué)習(xí)方案。本文主要結(jié)合NUI平臺(tái)中自然語言理解的具體實(shí)現(xiàn),詳細(xì)的、系統(tǒng)的介紹意圖分類和屬性抽取兩個(gè)核心算法。如下圖所示,第一個(gè)框中是意圖分類,第二個(gè)框中是屬性抽取。
對(duì)于整個(gè)NUI平臺(tái)的介紹可以參考孫健/千訣寫的從“連接”到“交互”—阿里巴巴智能對(duì)話交互實(shí)踐及思考。
自然語言理解的難點(diǎn)
為什么自然語言理解很難?本質(zhì)原因是語言本身的復(fù)雜性。自然語言尤其是智能語音交互中的自然語言,有如下的5個(gè)難點(diǎn):
一. 語言的多樣性一方面,自然語言不完全是有規(guī)律的,有一定規(guī)律,也有很多例外;另一方面,自然語言是可以組合的,字到詞,詞到短語,短語到從句、句子,句子到篇章,這種組合性使得語言可以表達(dá)復(fù)雜的意思。以上兩方面共同導(dǎo)致了語言的多樣性,即同一個(gè)意思可以有多種不同的表達(dá)方式,比如:
我要聽大王叫我來巡山
給我播大王叫我來巡山
我想聽歌大王叫我來巡山
放首大王叫我來巡山
給唱一首大王叫我來巡山
放音樂大王叫我來巡山
放首歌大王叫我來巡山
給大爺來首大王叫我來巡山
二. 語言的歧義性在缺少語境約束的情況下,語言有很大的歧義性,比如:
我要去拉薩
(1)火車票?
(2)飛機(jī)票?
(3)音樂?
(4)還是查找景點(diǎn)?
三. 語言的魯棒性語言在輸入的過程中,尤其是通過語音識(shí)別轉(zhuǎn)錄過來的文本,會(huì)存在多字、少字、錯(cuò)字、噪音等等問題,比如:
錯(cuò)字
(1)大王叫我來新山
多字
(2)大王叫讓我來巡山
少字
(3)大王叫我巡山
別稱
(4)熊大熊二(指熊出沒)
不連貫
(5)我要看那個(gè)恩花千骨
噪音
(6)全家只有大王叫我去巡山咯
四. 語言的知識(shí)依賴語言是對(duì)世界的符號(hào)化描述,語言天然連接著世界知識(shí),比如:
大鴨梨
(1)除了表示水果,還可以表示餐廳名
七天
(2)除了表示時(shí)間,還可以表示酒店名
總參
(3)除了表示總參謀部,還可以表示餐廳名
天氣預(yù)報(bào)
(4)還是一首歌名
晚安
(5)這也是一首歌名
五. 語言的上下文上下文的概念包括很多內(nèi)容,比如:
對(duì)話上下文
設(shè)備上下文
應(yīng)用上下文
用戶畫像
...
U:買張火車票
A:請(qǐng)問你要去哪里?
U:寧夏
這里的寧夏是指地理上的寧夏自治區(qū)
U:來首歌聽
A:請(qǐng)問你想聽什么歌?
U:寧夏
這里的寧夏是指歌曲寧夏
意圖分類的實(shí)現(xiàn)方法
意圖分類是一種文本分類。主要的方法有:
基于規(guī)則(rule-based)
(1)CFG
(2)JSGF
(3)……
傳統(tǒng)機(jī)器學(xué)習(xí)方法
(1)SVM
(2)ME
(3)……
深度學(xué)習(xí)方法
(1)CNN
(2)RNN/LSTM
(3)……
3.1 基于規(guī)則的方法這里重點(diǎn)介紹基于CFG的方法[2],該方法最早出現(xiàn)于CMU Phoenix System中,以下是一個(gè)飛機(jī)票領(lǐng)域的示例:
按照上面的文法,對(duì)于“從北京去杭州的飛機(jī)票”,可以展成如下的樹:
3.2 基于傳統(tǒng)統(tǒng)計(jì)的方法我們?cè)诘谝话娴南到y(tǒng)中,采用的基于SVM的方法,在特征工程上做了很多工作。第二版中切換到深度學(xué)習(xí)模型后,效果有很大提升,此處略過,直接介紹深度學(xué)習(xí)方法。
3.3 基于深度學(xué)習(xí)的方法深度學(xué)習(xí)有兩種典型的網(wǎng)絡(luò)結(jié)構(gòu):
CNN(卷積神經(jīng)網(wǎng)絡(luò))
RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))
基于這兩種基本的網(wǎng)絡(luò)結(jié)構(gòu),又可以衍生出多種變形。我們實(shí)驗(yàn)了以下幾種典型的網(wǎng)絡(luò)結(jié)構(gòu):
CNN [3]
LSTM [4]
RCNN [5]
C-LSTM [6]
從實(shí)驗(yàn)結(jié)果來看,簡(jiǎn)單的CNN的效果最好,其網(wǎng)絡(luò)結(jié)構(gòu)如下:
單純的CNN分類效果無法超越復(fù)雜特征工程的SVM分類器,尤其是在像音樂、視頻等大量依賴世界知識(shí)的領(lǐng)域中。比如怎么把如下的世界知識(shí)融入到網(wǎng)絡(luò)中去:
這背后更大的背景是,深度學(xué)習(xí)在取得巨大成功后,慢慢開始顯露出瓶頸,比如如何表示知識(shí)、存儲(chǔ)知識(shí),如何推理等。其中一個(gè)探索方向就是試圖把聯(lián)結(jié)主義和符號(hào)主義進(jìn)行融合。純粹的基于聯(lián)結(jié)主義的神經(jīng)網(wǎng)絡(luò)的輸入是distributed representation,把基于符號(hào)主義的symbolic representation融合到網(wǎng)絡(luò)中,可以大大提高效果,比如:
屬性抽取的實(shí)現(xiàn)方法
屬性抽取問題可以抽象為一個(gè)序列標(biāo)注問題,如下例:
基于規(guī)則(rule-based)
(1)Lexicon-based
(2)CFG
(3)JSGF
(4)……
傳統(tǒng)機(jī)器學(xué)習(xí)方法
(1)HMM
(2)CRF
(3)……
深度學(xué)習(xí)方法
(1)RNN/LSTM
(2)……
4.1 基于規(guī)則的方法這里主要介紹基于JSGF(JSpeech Grammar Format)的方法:
JSGF is a BNF-style, platform-independent, and vendor-independent textual representation of grammars for use in speech recognition.
其基本的符號(hào)及其含義如下:
比如對(duì)于如下的示例:
可以展開成圖:
對(duì)于“幫我打開空調(diào)”,其在圖中的匹配路徑如下:
匹配到這條路徑后,可以根據(jù)標(biāo)簽,把“空調(diào)”抽取到device這個(gè)屬性槽上。
4.2 基于傳統(tǒng)統(tǒng)計(jì)的方法經(jīng)典算法為CRF,略過。
4.3 基于深度學(xué)習(xí)的方.用于序列標(biāo)注的深度學(xué)習(xí)模型主要有[7]:
RNN
LSTM
Bi-LSTM
Bi-LSTM-Viterbi
Bi-LSTM-CRF
也有一些多任務(wù)聯(lián)合訓(xùn)練的模型,比如[8]、[9]。
在我們的系統(tǒng)中,采用的是Bi-LSTM-CRF模型:
同樣的,在input上,將distributed representation和symbolic representation做了融合。
小結(jié)
在實(shí)際的系統(tǒng)中,基于規(guī)則的方法和基于深度學(xué)習(xí)的方法并存。基于規(guī)則的方法主要用來快速解決問題,比如一些需要快速干預(yù)的BUG;基于深度學(xué)習(xí)的方法是系統(tǒng)的核心。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/45556.html
閱讀 859·2021-11-24 09:38
閱讀 1093·2021-10-08 10:05
閱讀 2583·2021-09-10 11:21
閱讀 2805·2019-08-30 15:53
閱讀 1832·2019-08-30 15:52
閱讀 1967·2019-08-29 12:17
閱讀 3421·2019-08-29 11:21
閱讀 1614·2019-08-26 12:17