《智能语音》专题第四章:自然语言处理。自然语言处理常常被称为“人工智能皇冠上的明珠”:如果语言智能可以实现突破,跟它同属认知智能的知识和推理就会得到长足的发展,就能推动整个人工智能体系,有更多的场景可以落地。
本专题之前章节参考:一, NLP难点和任务划分
人工智能类比人类的能力,可以划分为感知智能和认知智能。比如说信号处理、语音识别、机器视觉等领域均属于感知智能范畴;而认知智能主要集中在语言智能(即自然语言处理)。如果语言智能可以实现突破,跟它同属认知智能的知识和推理就会得到长足的发展,就能推动整个人工智能体系,有更多的场景可以落地,所以自然语言处理被称为人工智能皇冠上的明珠。
语言承载着信息语言是一种承载信息的载体,是人类进化出来的一种高效,不需要借助任何外部工具的信息传达手段,而从另一个角度也可以把语言理解为信息压缩的一种手段。
在信息论中定义“信息是对不确定性的消除”,自然语言处理的核心是要掌握和处理语言中的信息,而这究竟有多难呢?
假如我们需要用语言来传达上面这幅图片的信息,最最简单的一句话是「一匹马在吃草。」如果简单地从图片和文本的存储空间来看,这句话的文本占用空间远比图像要少(文本12B vs 图像200KB),而它们却传递了相似的信息。
图像中包含大量的冗余信息,信息密度更低,即使我们把图片砍掉一半,人们还是能够得到“一匹马在吃草”的关键信息。而我们通过文字描述并传递信息时,忽略了很多信息(这是匹什么颜色的马,多高,多重,在哪里吃草,怎么吃的等等),作为信息接收方我们收到“一匹马在吃草”之后,在每个人的脑海里的画面是不一样的,这里完全取决于我们对于世界的认知,取决于先验知识。通过图像传递信息时,即使丢掉了大量数据也没关系,我们还是能够猜到这是一匹马,但是如果以文本方式传递,不确定性可能进一步放大了。
图像有更多的冗余信息,更高的抗损失能力,更直观容易理解(儿童在成长时,首先是通过图像绘本的方式去认知世界,再通过文字的方式去理解和记录这个世界),图像代表着更低的信息密度;
而文字冗余信息少,容错性更低,不确定性更高,非通用,需要更多的知识去理解消化,代表着更高的信息密度。所以语言传播信息,无论是自然语言理解还是自然语言生成,目前主要的难点还是在于让机器有足够的先验知识,去消化这些高信息密度的文本信息。
既然是明珠,那摘起来肯定不容易,自然语言处理它可以分析、理解或者生成自然语言,实现人与机器的自然交流,同时也有助于人与人之间的交流,整体上划分为两个大的任务方向:自然语言理解、自然语言生成。
主要任务划分自然语言处理任务主要划分自然语言处理从应用上可以划分为以下部分,有的是自然语言理解的独立应用,有的是自然语言生成的独立应用,有的则是两则结合的产物:
信息抽取:从给定文本中抽取重要的信息,比如时间、地点、人物、事件、原因、结果、数字、日期、货币、专有名词等等。通俗说来,就是要了解谁在什么时候、什么原因、对谁、做了什么事、有什么结果。
文本生成:机器像人一样使用自然语言进行表达和写作。依据输入的不同,文本生成技术主要包括数据到文本生成和文本到文本生成。数据到文本生成是指将包含键值对的数据转化为自然语言文本;文本到文本生成对输入文本进行转化和处理从而产生新的文本。
问答系统:对一个自然语言表达的问题,由问答系统给出一个精准的答案。需要对自然语言查询语句进行某种程度的语义分析,包括实体链接、关系识别,形成逻辑表达式,然后到知识库中查找可能的候选答案并通过一个排序机制找出最佳的答案。
对话系统:系统通过一系列的对话,跟用户进行聊天、回答、完成某一项任务。涉及到用户意图理解、通用聊天引擎、问答引擎、对话管理等技术。此外,为了体现上下文相关,要具备多轮对话能力。
文本挖掘:包括文本聚类、分类、情感分析以及对挖掘的信息和知识的可视化、交互式的表达界面。目前主流的技术都是基于统计机器学习的。
语音识别和生成:语音识别是将输入计算机的语音符号识别转换成书面语表示。语音生成又称文语转换、语音合成,它是指将书面文本自动转换成对应的语音表征。
信息过滤:通过计算机系统自动识别和过滤符合特定条件的文档信息。通常指网络有害信息的自动识别和过滤,主要用于信息安全和防护,网络内容管理等。
舆情分析:是指收集和处理海量信息,自动化地对网络舆情进行分析,以实现及时应对网络舆情的目的。
信息检索:对大规模的文档进行索引。可简单对文档中的词汇,赋之以不同的权重来建立索引,也可建立更加深层的索引。在查询的时候,对输入的查询表达式比如一个检索词或者一个句子进行分析,然后在索引里面查找匹配的候选文档,再根据一个排序机制把候选文档排序,最后输出排序得分最高的文档。
机器翻译:把输入的源语言文本通过自动翻译获得另外一种语言的文本。机器翻译从最早的基于规则的方法到二十年前的基于统计的方法,再到今天的基于神经网络(编码-解码)的方法,逐渐形成了一套比较严谨的方法体系。二, 智能语音中的NLP
自然语言理解 Nature Language Understanding自然语言处理中,自然语言理解(Nature Language Understanding)整体成熟度要优于自然语言生成,大家学语文时也知道阅读理解还是比写作文要容易些。目前NLU部分要做到掌握先验知识,最基本的是需要了解每个语言本身的特性,包含三个方面:语法、语义、语用。
语言基本特性语法:句子的组成结构,词和短语的作用
我/看见/一个/女孩 对应的分词,词性分析。语义:词在句法结构中,推导出句子的意义
我/看见/一个/女孩。按照语法结构,得到基本的语义。语用:上下文对语句的影响,不同上下文的应用
A: 谁和他在一起?
B: 我看见一个女孩。
A: 你在看什么?
B: 我看见一个女孩。多词性和多词义是语言的一种普遍现象,而汉语这种现象比西方语言严重得多,同时再叠加多种情况导致的语义歧义让NLU的难度进一步提升。
他说:“她这个人真有意思(funny)”。她说:“他这个人怪有意思的(funny)”。于是人们以为他们有了意思(wish),并让他向她意思意思(express)。他火了:“我根本没有那个意思(thought)”!她也生气了:“你们这么说是什么意思(intention)”?事后有人说:“真有意思(funny)”。也有人说:“真没意思(nonsense)”NLU的很大一部分工作就是消歧,从语言可能造成歧义的多个维度开展:
中文歧义分类而在我们日常口语对话中,不严格遵从所谓语法,充斥着用词不当目的是为了帮用户解决确实的问题,例如查询某一种信息(天气),或者完成某一个动作(例如:订机票、酒店、餐厅座位等),通常称为Task Completion Bot(任务完成/问题解决型机器人)
我们将大量的先验语料知识做标记和训练,让机器人进行分类训练,从分词、词性、句法结构、单句含义、上下文含义,最终得到NLU结果:目前的对话基于哪个领域,得到的是什么意图,有哪些关键的实体或者槽位需要提取,再向具体的应用输出,完成“设备听懂“的步骤。
NLU的过程我们在产品设计的时候,就要弄清楚我们的语音设备需要应用的垂直语言场景。比如说需要支持天气查询的意图,对应哪些功能点需要做语音交互:
天气状况:晴、下雨、冰雹、雷阵雨、雪等等,要支持到的天气条件粒度。
天气指数:空气指数、PM2.5、PM10、紫外线指数、风力、等等,要支持的指数粒度。
趋势查询:未来3、5、1周、15天的天气,要支持的程度
场景指数:滑雪、洗车、戴墨镜等等每种功能点有哪些主要的说法,对应每种功能点需要提取的实体或者槽位(Entity、Slots)有哪些,对应的泛化能力要求是多强,是否要支持多轮对话,多轮对话怎么跳转。关于NLU部分更多技术细节参考之前的文章:
明确以上大多数情况的用户表达,目标就是让整个语音交互的体验更加明确,用户会说什么,设备怎么回答,而串联其中的就是对话管理系统。
对话管理 Dialog ManagerDialog Manager汇聚了很多的信息和上下文,它可以包含很多职责,上至NLU的理解工作,下至NLG的文本生成工作都可以在DM中完成。不同类型的DM设计会有差异,但是核心来说DM是一个状态相关的组件。
对话管理就像是语音交互的大脑,灵魂,是业务能力的载体,决定着交互逻辑的下一步状态,下一个动作。
对话管理流程完成两大核心任务:
•维护和更新对话的状态。
•基于当前的对话状态,选择接下来合适的动作。1) NLU输出:查询天气的例子中,NLU模块的语义表征输出,比如”{Domain:Weather, Intention:Query}”。
2) 业务对接:不同功能的DM对接不同的业务平台,这个可以是公司自有的业务,也可以是第三方平台。比如机票酒店预订对接携程,去哪儿;查询新闻对接新浪,网易,腾讯;听歌或者电子书对接QQ音乐,喜马拉雅,蜻蜓FM;闲聊百科对接百度,Wiki,知识图谱;导航对接高德,百度,四维图新等等。业务执行的结果决定了DM的对话状态走向不同的方向,请求成功了怎么说,请求失败了怎么说。
3) 用户偏好:用户曾经的使用习惯,听歌偏好的曲风,导航曾经去过的餐馆,经常选择的菜系,买机票是否喜欢靠窗的位置,导航到加油站更喜欢中石油、中石化还是壳牌等等。这些用户偏好使用得当可以让用户感觉很贴心,用不好则会出现一种莫名其妙的用户体验,需要好好把握。
4) 系统偏好:这是从另一个层面上去完善DM的信息,很多时候我们对话中并不会涵盖所有的信息,这些信息是约定俗成的或者是通识。比如当前的城市,位置,天气等等。订机票时如果没有指定出发地,默认的是当前城市,导航到太平洋百货也是默认指的当前城市,如果下雨导航优先选择地下停车场等等。
5)上下文:当前对话中的上下文信息,包括目前的Domain,之前对话中提到的Slot,顺序,代词等等。在语音对话中,除了以上部分,很关键的多轮对话的能力也是由DM完成。
基于天气的多轮对话我们之前的例子“成都明天出门要带伞吗”NLU完成意图识别和实体提取“天气、成都、明天、伞、下雨”;当用户继续问“后天呢”,NLU没有识别到意图,但是得到了新的实体“后天”,DM根据意图判断是否继续之前的对话,将上一轮的意图和实体继承过来,得到“天气、成都、后天、下雨”;再然后用户问“北京呢”,NLU没有识别到意图,但是得到了新的实体“北京”,DM根据意图判断是否继续之前的对话,将上一轮的意图和实体继承过来,得到“天气、北京、后天、下雨”。
这样通过意图继承和实体继承,我们完成了多轮的对话。当用户新的请求不在此意图中时,我们再根据具体的业务形态看是否能够继承之前的实体,还是作为新请求处理,复杂度也更高。基于实体继承,实现领域内多轮对话,跨领域的多轮对话。
更多技术细节参考之前的文章:
自然语言生成 Nature Language Generation自然语言生成(Nature Language Generation)就像写作文搞创作一样,
在日常对话中,我们的核心诉求是快速传递意图,并非要长篇大论的写文章。适合当前场景的自然语言表达,尽量多元化,增加对话的趣味性,整体的难度上更低,更容易落地。智能语音当中的NLG大家可以理解为NLU的逆向过程,需要根据DM输入的各种情景,语义等等作为参数,生成对应的文本。
NLP主要过程NLG主要分量两大步骤:
句子规划:DM输入的语音表征会包含当前的域,意图,槽值,为NLG提供了一个句子最基本的内容,但并没有完全指定输出文本的内容和结构,句子规划的任务就是进一步明确定义规划文本的细节,具体包括文本结构(Text structuring),句子聚合(Aggregation)、词汇化(Lexicalization)、指代表达式生成(ReferringExpressionGeneration)等工作。
句子实现:句子实现主要包括语言实现和结构实现两部分,具体地讲就是将经句子规划后的文本描述映射至由文字、标点符号和结构注解信息组成的表层文本。生成算法首先按主谓宾的形式进行语法分析,并决定动词的时态和形态,再完成遍历输出。更多技术细节参考之前的文章:
三, 提升NLP智能水平
NLP部分代表着智能语音中的认知智能,决定了当前设备的智能水平。语言承载着信息,而这信息背后是知识的体现,对于先验知识的掌握和应用,决定了NLP的智能水平。
知识库和知识图谱智能语音对话中NLP部分长期的发展方向必然是通过知识库和知识图谱(Knowledge Graph)补充先验知识,消化高信息密度的文本信息。
知识图谱应当应用在NLU、DM、NLG的整个过程当中,能够让NLP有更多的先验知识导入,导入的过程参考以下步骤:
第一步明确我们需要导入的领域,比如上图的音乐领域,包括音乐人、曲库、风格、人物关系等等。
第二步确定我们的知识从哪来,所谓的数据来源,这里可以通过对一些结构化的数据、非结构化的数据做转换、对非结构化的数据,即文本,从里面去信息抽取。
第三步,知识图谱里最重要的是词汇的挖掘,各种同义词、缩略词、短语等等。
第四步,有词汇不够,我们要把同义词聚集为一个概念,也就是所谓的实体发现,包括实体实现、实体归类、实体链接等等。
第五步,除了实体之外,知识图谱里还有边,也就是关系,我们要做关系的抽取。
源,所以我们要做知识的融合,主要是实体对齐、属性融合、值的规范化。
最后,对知识图谱的质量做检查控制,包括知识的补全,有错的话要纠错,还有知识更新,最后形成一个领域的知识图谱。知识图谱基于知识图谱:系统知道了谢霆锋的女朋友是王菲、知道了王菲有首歌是传奇、知道了传奇的原唱是李建、知道了李健的音乐风格是民谣。能够从闲聊、播放音乐等多个不同的领域之间跳转,并主动发起对话。
形成了垂直领域专家知识库的概念,可以进行推理。形成了合理跨域关联跳转,主动引导对话的可能性。知识图谱也不是万能的,可以看到它是通过主题模型方式针对具体领域进行挖掘、标注与清洗,再通过预设定好的关系进行实体之间关系的定义最终形成知识图谱。
模型构建初期可能会存在数据的松散和覆盖率问题,导致匹配的覆盖率低,无法产品化;
对于知识图谱增量维护相比传统的QA对知识的维护上的成本会更大一些;语音技能重复造轮子不是一个明智的事情,在NLP领域同样的有大量“轮子”可以复用。目前很多智能语音或者AI厂商都将通用的NLP能力封装为“语音技能”,供相关的厂商可以直接调用。
通用语音技能:针对某个具体功能应用,包含了完整的NLU、DM、NLG,能够实现从文本输入到文本输出的通用能力。
语义技能开发平台:供开发者自行训练用户技能的开发平台,提供模板和基础语料。云知声的技能平台和讯飞的AIUI开发平台NLP的对话体验NLP能够形成基于文本的完整对话体验,业内通常称为Chat Bot。从应用上来说分为Chitchat Bot (闲聊机器人),和Task Completion Bot(任务完成/问题解决型机器人)。
微软小冰是前者的代表,这类机器人存在的目的就是陪用户闲聊。大多数闲聊机器人,会希望用户消耗在聊天上的时间尽量长,不做任何领域的限定。各种客服机器人,个人助手/语音助手(包括微软小娜/Cortana)则属于后者,它们存在的目的是为了帮用户解决确实的问题。
由于先验知识无法限定,闲聊机器人的难度远高于任务型机器人。所以目前大多数智能设备都是任务型机器人,同时有兼顾一定的闲聊能力(简单的一些对话,然后就会告诉你“我还在学习中”)。
所以我们回顾下本章的内容重点,如何才能提高NLP的认知智能。
核心要点:明确系统要支持的领域列表,明确不同领域间的界限,补足对话中上下文信息,补充领域先验知识。