AI即人工智能是一个令人着迷的领域,尤其是基于对话式AI系统的智能音箱的兴起,使人工智能直接走进了我们的家庭。

自然语言是人类的智慧,自然语言处理(NLP)是AI中最为困难的问题之一,而自然语言理解(NLU)也变成了一个主要的问题,充满了魅力和挑战。一介程序员,没有能力去做相关的研究,但是认知其中的一些基本概念,对于开发具体NLP/NLU相关的应用实现,尤其是对话式智能系统上的应用,还是非常有帮助的。那NLP 和 NLU 有啥区别和联系呢?以下理解并不准确,仅限于认知。

NLU与NLP

先看维基百科对NLP的解释:

Natural language processing (NLP) is a subfield of computer science,

information engineering, and artificial intelligence concerned with

the interactions between computers and human (natural) languages,

in particular how to program computers to process and analyze large amounts of natural language data.


Challenges in natural language processing frequently involve speech

recognition, natural language understanding, and natural language generation.

自然语言处理是一门研究人与人交际中,以及人与计算机交际中的语言问题的学科。NLP的目标是希望通过图灵测试,包括了语音、形态、语法、语义以及语用等方面,也要解决人类语言中的因果、逻辑和推理的问题。

在宗成庆老师的《统计自然语言处理》中,把NLP分为以下十六个方向,其中机器翻译、信息检索和问答系统的应用更广泛。。那么NLP是啥呢?

Natural-language understanding (NLU) or natural-language interpretation (NLI)

is a subtopic of natural-language processing in artificial intelligence that deals with machine reading comprehension.


NLU is the post-processing of text, after the use of NLP algorithms (identifying parts-of-speech, etc.),

that utilizes context from recognition devices (Automatic Speech Recognition [ASR], vision recognition,

last conversation, misrecognized words from ASR, personalized profiles, microphone proximity etc.),

in all of its forms, to discern meaning of fragmented and run-on sentences to execute an intent from typically voice commands.

简单的说, NLU是NLP的一个子集,因此在老码农眼中的简明AI中的那张图是错误的,应该是包含的关系。

NLU的一个主要功能是“execute an intent ”即提取意图。什么是意图呢?

意图表达

Intent意图如何理解呢?在我们开发Android 应用的时候,离不开Intent,尽管和NLU中的意图不太一样,但还是对意图的理解有帮助的。

在Android参考文档中,Intent主要是解决Android应用的各项组件之间的通讯,对Intent的定义是执行某操作的一个抽象描述。在NLU中,意图代表用户想要达到的目的,就是在语言表达中所体现出的“用户想干什么”,解决的是人与人,人与机器之间的通讯问题。意图是由什么组成的呢?在Android Intent中由Action,data 和一些属性组成,在NLU中,意图可以由槽位来表达,槽位就是意图的参数信息。槽位是指从句子中抽取出的特定概念,槽位填充为了让用户意图转化为用户明确的指令而补全信息的过程。

举个例子,比如我对一个对话式智能设备说“今天天气怎么样”,意图是什么呢?意图就是“查询天气”。那这个意图是由哪些槽位表达呢?有一个槽位是确定确定,就是时间槽位——“今天”。

那么,机器有了这个槽位和意图是否就可以应答了呢?现实中,各地的天气是不一样的,那么描述这个意图要增加一个槽位——地点。 如果对话式智能设备问我“那个城市的天气?”我回答“北京”,这大概就是槽位填充的过程。

俗话说,“一句话有十种说法”,同一个意图有着不同的表达方式。问天气的话,我还可以说“给我查查今天的天气”,“我想知道今天天气”,“天气怎么样”等等,如果统计一下,这些问天气的常常用句子,就是所谓的常用表达。

学以致用,我们了解了意图,槽位和常用表达,能做点什么呢?从零开始搭建一个对话系统,demo还可以,真的成为人们所使用的服务的话,恐怕显得有点高不可攀。感谢这个时代,对话式AI操作系统来了(感知人工智能操作系统),例如DuerOS,咱们在可以在上面研发并搭建自己的服务,这就是所谓的“技能”。

技能

什么是技能? 技能就是智能设备的一个能力,或者说一种服务。既然有AI操作系统,为啥还要开发技能呢? 这和有了windows 还要开发 office 类似, 不同的软件满足不同的需要。技能作为对话式AI操作系统的具体应用,同样是为了不同用户多种多样的个性化需求。

有了对话式AI系统,在技术,技能的开发和一个web应用的开发没有太大的区别,只不过遵循对话式AI系统提供的接口协议即可。以DuerOS为例,示意如下:

其中涉及的语音识别,自然语言生成及TTS播报,意图识别等等全部由对话式AI系统完成,我们只专注于具体的服务即可。

既然DuerOS已经提供了大量的服务和海量的资源,我们在上面开发技能还有什么必要么? 在MacOS上已经有了Messager/Facetime之类的应用,并不影响微信应用的研发和普及,这个道理是类似的。我们更了解用户的使用场景和需求,也更清楚具体是业务逻辑,可以让我们聚焦在擅长的领域。

在DuerOS上开发技能

在DuerOS开发语音技能是一个相对轻松的事,在技能开放平台(DBP,DuerOS Bot Platfrom,https://dueros.baidu.com/dbp)上可以方便地完成应用的开发,测试和发布。DBP具备Java/Javascript/PHP/Python/Go的SDK,形成了一个开发框架。同时,通过DBP平台上的可视化界面,可以为用户提供个性化的服务。

DuerOS还提供了大量的系统意图,极大了节约了开发成本,下图是部分系统意图:

词典在意图识别中具有很重要的地位,一般是某一领域词汇的集合,DuerOS根据词典去解析相应的槽位信息,发送给技能应用处理。 我们可以在DBP自定义字典,更可以直接使用系统词典。

如果没有固定的词典与槽位关联的话,还可以将常用表达中需要识别的内容标注为通配槽位,那么DuerOS会将这些请求的内容发送给技能应用。

即便是对于某个技能而言,常用表达也仅仅是“常用表达”,难以穷举用户的各种请求,那么遇到用户的特殊问题,咱们开发的技能是否就不能正常应答了呢?不会的,这正是DuerOS的强大所在,这涉及到很多NLU/NLP的技术,其中一种就是泛化。对于特定领域的问答,DBP 平台还提供了数据训练的能力,无需关注机器学习的算法,只需要提供一些语句的资料即可。

感知自然语言理解,可以从开发小技能开始,5分钟即可创建一个小技能,信不信由你!

参考资料

  • 宗成庆,《统计自然语言处理(第2版)》,清华大学出版社,2013

  • http://www.cs.bham.ac.uk/~pjh/sem1a5/pt1/pt1_history.html

  • https://dueros.baidu.com/dbp

感知自然语言理解(NLU)相关推荐

  1. 自然语言处理NLP、自然语言理解NLU、自然语言生成NLG、任务家族

    自然语言处理NLP.自然语言理解NLU.自然语言生成NLG.任务家族 自然语言生成(NLG) 看图说话(image caption) 说话生图(text to image) 文本相似性(text si ...

  2. 机器学习不会解决自然语言理解(NLU)问题

    作为唯一由人类自身创造的符号,自然语言处理一直是机器学习界不断研究的方向. 自然语言处理技术主要是让机器理解人类的语言的一门领域.在自然语言处理技术中,大量使用了编译原理相关的技术,例如词法分析,语法 ...

  3. 对话系统中的中文自然语言理解 (NLU) 任务介绍

    每天给你送来NLP技术干货! 来自:看个通俗理解吧 Chinese Natural Language Understanding, NLU, in Dialogue Systems 1&2 T ...

  4. 对话系统中自然语言理解NLU——意图识别与槽位填充

    目录 1. 什么是意图识别和槽位填充 1.1 语义槽的设计 2. 意图识别的方法 2.1 规则模板 2.2 统计机器学习 2.3 深度学习 3. 意图识别的难点 4. 槽位填充的方法 5. 参考 问答 ...

  5. 自然语言理解(NLU)个人入门笔记记录1

    概念理解: NLP是我们在让机器基于文本数据完成特定任务时使用的思想.方法和技术的总称--其中一部分支持机器理解文本数据的内容,因此统称NLU:一部分支持机器生成人类可以理解的文本数据,因此统称NLG ...

  6. 用于自然语言理解的多任务深度神经网络

    1. 摘要     本文提出了一个多任务深度神经网络(MT-DNN),用于跨多个自然语言理解(NLU)任务学习表示.MT-DNN不仅利用了大量的跨任务数据,而且还受益于正则化效应,从而产生更通用的表示 ...

  7. 自然语言一般使用计算机,自然语言理解

    自然语言处理(N LP , Natural Language Processing)是使用自然语言同计算机进行通讯的技术, 因为处理自然语言的关键是要让计算机"理解"自然语言,所以 ...

  8. 景联文科技:自然语言处理(NLP)系列(一)——自然语言理解(NLU)

    作为人工智能领域的基础,自然语言处理(NLP)一直是该领域最热门技术之一.近年来,一种潜在的新语言模型GPT-4出现,他能够掌握更广泛的会话主题,甚至成为对话的 "主导者",实时语 ...

  9. 自然语言处理(NLP) vs 自然语言理解(NLU)

    自然语言处理,是Natural Language Processing, 简称NLP 自然语言理解,是Natural Language Understanding,简称NLU. (图1) (图2) 1 ...

最新文章

  1. 如何在mac下安装MPV播放器?
  2. 使用Nexus创建私服
  3. Blender建模与游戏换装(转载文)
  4. POJ3278(BFS)
  5. SpringMVC配置没问题却却找不到页面,页面显示404
  6. 在阿里云服务器centOs7系统中部署.NET Core项目
  7. JAVA学习day07 1
  8. 读懂金融危机必看的十四本书
  9. 【股价预测】基于matlab遗传算法优化BP神经网络预测股价【含Matlab源码 1250期】
  10. python svm参数_python SVM 案例,sklearn.svm.SVC 参数说明
  11. element-admin/若依主题风格设计
  12. [ActionSprit 3.0] FMS安装与测试
  13. QDockWidget标题栏
  14. html视频顺序播放,三个视频并排显示按顺序播放的效果怎么制作?怎么使同框视频依次播放|视频合成软件...
  15. 下面有关java final的基本规则,描述错误的是?
  16. [Maven进阶]多环境配置与应用
  17. Linux c — void类型变量和指针
  18. 学术论文如何撰写数据分析部分?
  19. 大数据开发教程——构建Hadoop开发环境
  20. RS导出Excel交叉表角对应的列占用多列问题

热门文章

  1. SAE J1587简介
  2. 高通平台上的AMSS(Modem端) windows环境搭建
  3. 音乐数字计算机,数字计算机技术在民族音乐学领域的应用
  4. nfs服务器之间实现目录共享
  5. java程序实现wifi连接打印_Android下通过wifi调用打印机打印,Java代码片段分享,
  6. Latex-- CTEX 中 标准字体命令与字号的对应
  7. 三极管和MOS管用于开关控制笔记
  8. 某宾馆大楼建筑供配电系统设计(任务书+说明书+答辩PPT+CAD图纸)
  9. 美军推出反海盗无人直升机
  10. 用html制作一个卡通形象,教你快速做一个自己的卡通形象