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