自然语言理解-从规则到深度学习
李雪涵
2018-08-19 21:06:05
图灵汇官网
改写后的内容
1. 引言
自然语言理解(NLU)是人工智能领域的一个重要课题,也是当前智能语音交互和人机对话的关键难题之一。NLU的目标是使机器能够理解人类的语言,这被认为是AI的核心挑战之一。简而言之,当机器能够很好地理解自然语言时,强人工智能(Strong AI)也就实现了。
之前的文章《自然语言理解》详细介绍了NLU的系统实现方案,其中包含了一些重要的概念和技术细节。然而,随着时间的发展,技术进步迅速,算法也经历了多次迭代更新。本文将着重探讨自然语言理解的难点,并详细介绍两个核心问题——意图分类和属性抽取。这两个问题在NLU中占据重要地位,是构建高效对话系统的基础。
2. 自然语言理解的难点
为什么自然语言理解如此困难?原因在于语言本身的高度复杂性。以下是五个主要难点:
语言的多样性
- 自然语言既有一定的规律性,但也存在许多例外情况。
- 语言可以通过不同层级的组合来表达复杂的含义,这增加了语言的多样性。例如:
- “我要听大王叫我来巡山”
- “给我播大王叫我来巡山”
- “我想听大王叫我来巡山”
- “放首大王叫我来巡山”
- “给唱一首大王叫我来巡山”
- “放音乐大王叫我来巡山”
- “放首歌大王叫我来巡山”
- “给大爷来首大王叫我来巡山”
语言的歧义性
- 缺乏上下文时,语言可能产生多种解释。例如:
- “我要去拉萨”可能指的是“火车票”、“飞机票”、“音乐”或者“景点”。
语言的鲁棒性
- 输入过程中,尤其是通过语音识别转换过来的文本,可能会出现错字、多字、少字、别称或噪音等问题。例如:
- 错字:“大王叫我来新山”
- 多字:“大王叫让我来巡山”
- 少字:“大王叫我巡山”
- 别称:“熊大熊二”(指《熊出没》)
- 不连贯:“我要看那个恩花千骨”
- 噪音:“全家只有大王叫我去巡山咯”
语言的知识依赖
- 语言与现实世界紧密相连,很多词汇都有多重含义。例如:
- “大鸭梨”不仅指水果,还可以指餐厅名。
- “七天”除了表示时间,还可以指酒店名。
- “总参”除了指总参谋部,还可以指餐厅名。
- “天气预报”不仅是一档节目,还是一首歌名。
- “晚安”不仅是一种问候语,还是一首歌名。
语言的上下文
- 上下文包括对话上下文、设备上下文、应用上下文和用户画像等。例如:
- “买张火车票”——“请问你要去哪里?”——“宁夏”(指地理上的宁夏自治区)
- “来首歌听”——“请问你想听什么歌?”——“宁夏”(指歌曲《宁夏》)
3. 意图分类的实现方法
意图分类是一种文本分类任务,主要方法包括基于规则的方法、传统机器学习方法和深度学习方法。
3.1 基于规则的方法
基于规则的方法包括上下文无关语法(CFG)和联合语法(JSGF)。例如,以下是一个基于CFG的示例:
- 对于“从北京去杭州的飞机票”,可以展开成如下树形结构。
3.2 基于传统统计的方法
早期系统采用了支持向量机(SVM)等传统机器学习方法。但随着深度学习的发展,效果显著提升。在此不赘述,直接介绍深度学习方法。
3.3 基于深度学习的方法
深度学习方法主要包括卷积神经网络(CNN)和循环神经网络(RNN),具体包括:
- CNN(卷积神经网络)
- RNN/LSTM(循环神经网络/长短时记忆网络)
- RCNN(递归卷积神经网络)
- C-LSTM(卷积-长短时记忆网络)
实验表明,简单的CNN结构表现最佳。然而,单纯依靠CNN可能难以处理高度依赖世界知识的领域,例如音乐、视频等。因此,尝试将分布式表示(distributed representation)与符号主义表示(symbolic representation)结合起来,以提高效果。
4. 属性抽取的实现方法
属性抽取可以抽象为序列标注问题,主要方法包括基于规则的方法、传统统计方法和深度学习方法。
4.1 基于规则的方法
基于规则的方法包括基于字典的方法和上下文无关语法(CFG)等。例如,以下是一个基于JSGF的示例:
- JSGF 是一种独立于平台和厂商的文法规则表示,可以将语言规则转化为图形结构。例如,“帮我打开空调”可以展开成特定的匹配路径。
4.2 基于传统统计的方法
传统的统计方法包括隐马尔可夫模型(HMM)和条件随机场(CRF)等。在此不赘述。
4.3 基于深度学习的方法
深度学习方法主要用于序列标注,主要包括:
- RNN(循环神经网络)
- LSTM(长短时记忆网络)
- Bi-LSTM(双向循环神经网络)
- Bi-LSTM-Viterbi
- Bi-LSTM-CRF
在实际系统中,我们采用了Bi-LSTM-CRF模型。同样地,在输入层将分布式表示和符号主义表示进行了融合,以提高模型效果。
5. 小结
在实际系统中,基于规则的方法和基于深度学习的方法并存。基于规则的方法主要用于快速解决一些简单问题,而基于深度学习的方法则是系统的核心。通过不断优化和迭代,我们可以构建更加智能、高效的对话系统。
参考文献
- https://en.wikipedia.org/wiki/Naturallanguageunderstanding
- Ward & Issar, CMU Phoenix System, 1996
- Yoon Kim, Neural Networks for Sentence Classification, EMNLP, 2014
- Suman Ravuri and Andreas Stolcke, Recurrent Neural Network and LSTM Models for Lexical Utterance Classification, InterSpeech, 2015
- Siwei Lai, Liheng Xu, Kang Liu, Jun Zhao, Recurrent Convolutional Neural Networks for Text Classification, AAAI, 2015
- Chunting Zhou, Chonglin Sun, Zhiyuan Liu, Francis C.M. Lau, A C-LSTM Neural Network for Text Classification, arXiv, 2015
- Grégoire Mesnil, et. al, Using Recurrent Neural Networks for Slot Filling in Spoken Language Understanding, TASLP, 2015
- Xiaodong Zhang, Houfeng Wang, A Joint Model of Intent Determination and Slot Filling for Spoken Language Understanding, IJCAI, 2016
- Bing Liu, Ian Lane, Joint Online Spoken Language Understanding and Language Modeling with Recurrent Neural Networks, arXiv, 2016