自然语言理解-从规则到深度学习

简介: 自然语言理解是人工智能的核心难题之一,也是目前智能语音交互和人机对话的核心难题。之前写过一篇文章自然语言理解,介绍了当时NLU的系统方案,感兴趣的可以再翻一番,里面介绍过的一些内容不再赘述。本文详细讨论了自然语言理解的难点,并进一步针对自然语言理解的两个核心问题,详细介绍了规则方法和深度学习的应用。

1. 引言

自然语言理解是人工智能的核心难题之一,也是目前智能语音交互和人机对话的核心难题。维基百科有如下描述[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平台中自然语言理解的具体实现,详细的、系统的介绍意图分类和属性抽取两个核心算法。如下图所示,第一个框中是意图分类,第二个框中是属性抽取。

aaa.png

对于整个NUI平台的介绍可以参考孙健/千诀写的从“连接”到“交互”—阿里巴巴智能对话交互实践及思考

2. 自然语言理解的难点

为什么自然语言理解很难?本质原因是语言本身的复杂性。自然语言尤其是智能语音交互中的自然语言,有如下的5个难点:

1. 语言的多样性

一方面,自然语言不完全是有规律的,有一定规律,也有很多例外;另一方面,自然语言是可以组合的,字到词,词到短语,短语到从句、句子,句子到篇章,这种组合性使得语言可以表达复杂的意思。以上两方面共同导致了语言的多样性,即同一个意思可以有多种不同的表达方式,比如:

  • 我要听大王叫我来巡山
  • 给我播大王叫我来巡山
  • 我想听歌大王叫我来巡山
  • 放首大王叫我来巡山
  • 给唱一首大王叫我来巡山
  • 放音乐大王叫我来巡山
  • 放首歌大王叫我来巡山
  • 给大爷来首大王叫我来巡山
2. 语言的歧义性

在缺少语境约束的情况下,语言有很大的歧义性,比如:

  • 我要去拉萨

    • 火车票?
    • 飞机票?
    • 音乐?
    • 还是查找景点?
3. 语言的鲁棒性

语言在输入的过程中,尤其是通过语音识别转录过来的文本,会存在多字、少字、错字、噪音等等问题,比如:

  • 错字

    • 大王叫我来新山
  • 多字

    • 大王叫让我来巡山
  • 少字

    • 大王叫我巡山
  • 别称

    • 熊大熊二(指熊出没)
  • 不连贯

    • 我要看那个恩花千骨
  • 噪音

    • 全家只有大王叫我去巡山咯
4. 语言的知识依赖

语言是对世界的符号化描述,语言天然连接着世界知识,比如:

  • 大鸭梨

    • 除了表示水果,还可以表示餐厅名
  • 七天

    • 除了表示时间,还可以表示酒店名
  • 总参

    • 除了表示总参谋部,还可以表示餐厅名
  • 天气预报

    • 还是一首歌名
  • 晚安

    • 这也是一首歌名
5. 语言的上下文

上下文的概念包括很多内容,比如:

  • 对话上下文
  • 设备上下文
  • 应用上下文
  • 用户画像
  • ...

U:买张火车票

A:请问你要去哪里?
U:宁夏  

这里的宁夏是指地理上的宁夏自治区

U:来首歌听

A:请问你想听什么歌?
U:宁夏  

这里的宁夏是指歌曲宁夏

3. 意图分类的实现方法

意图分类是一种文本分类。主要的方法有:

  • 基于规则(rule-based)

    • CFG
    • JSGF
    • ……
  • 传统机器学习方法

    • SVM
    • ME
    • ……
  • 深度学习方法

    • CNN
    • RNN/LSTM
    • ……

3.1 基于规则的方法

这里重点介绍基于CFG的方法[2],该方法最早出现于CMU Phoenix System中,以下是一个飞机票领域的示例:
cfg.png
按照上面的文法,对于“从北京去杭州的飞机票”,可以展成如下的树:
cfg2.png

3.2 基于传统统计的方法

我们在第一版的系统中,采用的基于SVM的方法,在特征工程上做了很多工作。第二版中切换到深度学习模型后,效果有很大提升,此处略过,直接介绍深度学习方法。

3.3 基于深度学习的方法

深度学习有两种典型的网络结构:

  • CNN(卷积神经网络)
  • RNN(循环神经网络)

基于这两种基本的网络结构,又可以衍生出多种变形。我们实验了以下几种典型的网络结构:

  • CNN [3]
  • LSTM [4]
  • RCNN [5]
  • C-LSTM [6]

从实验结果来看,简单的CNN的效果最好,其网络结构如下:
cnn1.png

单纯的CNN分类效果无法超越复杂特征工程的SVM分类器,尤其是在像音乐、视频等大量依赖世界知识的领域中。比如怎么把如下的世界知识融入到网络中去:
cnn3.png

这背后更大的背景是,深度学习在取得巨大成功后,慢慢开始显露出瓶颈,比如如何表示知识、存储知识,如何推理等。其中一个探索方向就是试图把联结主义和符号主义进行融合。纯粹的基于联结主义的神经网络的输入是distributed representation,把基于符号主义的symbolic representation融合到网络中,可以大大提高效果,比如:
cnn2.png

4. 属性抽取的实现方法

属性抽取问题可以抽象为一个序列标注问题,如下例:
slot1.png

  • 基于规则(rule-based)

    • Lexicon-based
    • CFG
    • JSGF
    • ……
  • 传统机器学习方法

    • HMM
    • CRF
    • ……
  • 深度学习方法

    • RNN/LSTM
    • ……

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.

其基本的符号及其含义如下:

<>,非终结符
|,or
[], 可选项
(),分组
*,零个或多个
{}, 标签

比如对于如下的示例:

public <controlDevice> = <startPolite> <command> <endPolite>;

<command> = <action> <object>;
<action> = (打开|关闭);
<object> = [这个|那个](空调|加湿器|音箱){device};
<startPolite> = (请|帮 我) *;
<endPolite> = [啊|吧];

可以展开成图:
jsgf2.png

对于“帮我打开空调”,其在图中的匹配路径如下:
jsgf3.png

匹配到这条路径后,可以根据标签,把“空调”抽取到device这个属性槽上。

4.2 基于传统统计的方法

经典算法为CRF,略过。

4.3 基于深度学习的方.

用于序列标注的深度学习模型主要有[7]:

  • RNN
  • LSTM
  • Bi-LSTM
  • Bi-LSTM-Viterbi
  • Bi-LSTM-CRF

也有一些多任务联合训练的模型,比如[8]、[9]。

在我们的系统中,采用的是Bi-LSTM-CRF模型:
NLU-4.01.jpg

同样的,在input上,将distributed representation和symbolic representation做了融合。

5. 小结

在实际的系统中,基于规则的方法和基于深度学习的方法并存。基于规则的方法主要用来快速解决问题,比如一些需要快速干预的BUG;基于深度学习的方法是系统的核心。

参考文献

[1] https://en.wikipedia.org/wiki/Natural_language_understanding
[2] Ward & Issar, CMU Phoenix System, 1996
[3] Yoon Kim, Neural Networks for Sentence Classification, EMNLP, 2014
[4] Suman Ravuri and Andreas Stolcke, Recurrent Neural Network and LSTM Models for Lexical Utterance Classification, InterSpecch, 2015
[5] Siwei Lai, Liheng Xu, Kang Liu, Jun Zhao, Recurrent Convolutional Neural Networks for Text Classification, AAAI, 2015
[6] Chunting Zhou, Chonglin Sun, Zhiyuan Liu, Francis C.M. Lau, A C-LSTM Neural Network for Text Classification, arXiv, 2015
[7] Grégoire Mesnil, et. al, Using Recurrent Neural Networks for Slot Filling in Spoken Language Understanding, TASLP, 2015
[8] Xiaodong Zhang, HoufengWang, A Joint Model of Intent Determination and Slot Filling for Spoken Language Understanding, IJCAI, 2016
[9] Bing Liu, Ian Lane, Joint Online Spoken Language Understanding and Language Modeling with Recurrent Neural Networks, arxiv, 2016

目录
相关文章
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】神经网络简介 ( 有向图本质 | 拓扑结构 | 连接方式 | 学习规则 | 分类 | 深度学习 | 机器学习 )(二)
【数据挖掘】神经网络简介 ( 有向图本质 | 拓扑结构 | 连接方式 | 学习规则 | 分类 | 深度学习 | 机器学习 )(二)
232 0
|
机器学习/深度学习 物联网 数据挖掘
【数据挖掘】神经网络简介 ( 有向图本质 | 拓扑结构 | 连接方式 | 学习规则 | 分类 | 深度学习 | 机器学习 )(一)
【数据挖掘】神经网络简介 ( 有向图本质 | 拓扑结构 | 连接方式 | 学习规则 | 分类 | 深度学习 | 机器学习 )(一)
686 0
|
13天前
|
机器学习/深度学习 API 语音技术
|
1天前
|
机器学习/深度学习 边缘计算 监控
深度学习赋能智能监控:图像识别技术的革新与应用
【4月更文挑战第23天】 随着人工智能的迅猛发展,深度学习技术在图像处理领域取得突破性进展,特别是在智能监控系统中,基于深度学习的图像识别已成为提升系统智能化水平的核心动力。本文旨在探讨深度学习如何优化智能监控系统中的图像识别过程,提高监控效率和准确性,并分析其在不同应用场景下的具体实施策略。通过深入剖析关键技术、挑战及解决方案,本文为读者提供了一个关于深度学习图像识别技术在智能监控领域应用的全面视角。
|
1天前
|
机器学习/深度学习 存储 边缘计算
深度学习在图像识别中的应用与挑战
【4月更文挑战第23天】 随着人工智能技术的飞速发展,深度学习作为其重要分支之一,在图像识别领域取得了显著的成果。本文将探讨深度学习在图像识别中的应用,分析其优势和面临的挑战,并展望未来的发展趋势。
|
3天前
|
机器学习/深度学习 数据采集 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用
【4月更文挑战第21天】 本文章深入探讨了深度学习技术在自动驾驶车辆图像识别领域的应用。不同于传统的摘要方式,本文将直接点出研究的核心价值和实际应用成果。我们专注于卷积神经网络(CNN)的创新设计,其在复杂道路场景下的行人和障碍物检测中的高效表现,以及这些技术如何整合到自动驾驶系统中以增强安全性和可靠性。通过实验验证,我们的模型在公开数据集上达到了行业领先水平的准确率,并且在真实世界的测试场景中展现了卓越的泛化能力。
|
3天前
|
机器学习/深度学习 算法 云计算
深度学习在图像识别中的应用与挑战
【4月更文挑战第21天】 随着计算机视觉技术的飞速发展,深度学习已经成为图像识别任务的核心动力。本文旨在探讨深度学习技术在图像识别领域的应用进展,分析其面临的主要挑战,并提出可能的解决方案。通过对卷积神经网络(CNN)的深入研究,我们揭示了其在图像分类、目标检测和语义分割中的关键作用。同时,数据不平衡、模型泛化能力和计算资源限制等问题也被详细讨论。文章最终指出了未来研究的方向,包括网络结构的优化、无监督学习的发展以及跨领域知识迁移的可能性。
|
4天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用研究
【4月更文挑战第20天】 本研究聚焦于深度学习技术在图像识别领域的应用,并探讨其在自动驾驶系统中的实际效用。文章首先回顾了深度学习与图像处理技术的基础知识,随后详细分析了卷积神经网络(CNN)在车辆环境感知中的关键作用。通过实验数据对比分析,本文验证了所提出算法在提高自动驾驶车辆对周围环境的识别准确性和实时性方面的有效性。最后,讨论了目前技术的局限性及未来可能的研究方向,旨在为进一步的技术突破提供参考。
|
5天前
|
机器学习/深度学习 监控 算法
深度学习驱动下的智能监控革新:图像识别技术的前沿应用
【4月更文挑战第19天】 在数字时代,智能监控系统作为城市安全和效率的守护者,正经历着前所未有的技术变革。本文深入探讨了基于深度学习的图像识别技术如何重塑智能监控领域,通过算法创新提升识别准确率,实时处理大量数据,并在各种环境条件下稳定运行。我们将分析当前最前沿的技术应用案例,探讨其在实际应用中遇到的挑战及未来发展趋势,从而为相关领域的研究者和实践者提供参考和启示。
|
6天前
|
机器学习/深度学习 传感器 人工智能
基于深度学习的图像识别技术在自动驾驶系统中的应用
【4月更文挑战第18天】 随着人工智能的快速发展,深度学习技术在图像处理和识别领域取得了显著进展。特别是在自动驾驶系统中,基于深度学习的图像识别技术已成为关键技术之一。本文将探讨深度学习在自动驾驶系统中的应用,重点关注卷积神经网络(CNN)和循环神经网络(RNN)在车辆检测、行人识别和交通标志识别等方面的应用。通过对比传统图像识别方法,我们将展示深度学习技术如何提高自动驾驶系统的准确性和鲁棒性。