想象一下,假设时光倒流回十年前,或者二十年前,能否想象突然之间没有了手机,没有无线网,没有所有电子设备的生活吗?
这可能会很困难。
其实在不知不觉中,我们已经被裹挟在信息浪潮中,已经处在一个知识,传播更新迭代非常快速的时代。所以“AI”,它不是一个追求,一种新鲜或一时的刺激,而是真正未来的方向,一个刚需。
同样,“语言”是非常重要的,在所有的生物中,只有人类是真正意义上具有语言能力的,所以人工智能最重要的一个关口,就是可以感觉到它应该像一个人类。如果连最核心的语言关都没有办法攻破的话,怎么样去实现所谓真正的智能,显然这是不可能做到的。而如今许多“NLP”的研究者都在引入一些语言学的知识来帮助他们提取更多的训练特征,提供更靠谱的思维角度。
接下来这一点,其实是学科上的一个空白,如果平时我们积极关注科技领域,会发现,主要力量是计算机专业或者相关学科背景的人,在为科技发展做贡献,而语言学学科背景的人士,更多去专注于翻译和教育这两个方向,把语言当作工具使用。所以在未来,我们或许需要一个跨学科的合作。
而且自然语言分析有两个方向,一是理解,首先机器要能够懂得人类的语言。另外一个方面,就是机器要能够自己去表达思想。
而这两个方面,都是很困难的,如果没有投入极大的精力,还有专业的支撑,可能就是闭门造车。如果这个行业只有计算机相关的人员在参与在内,他们大概只能够做到不断的去优化和提升技术,但是对于真正需要应用的,**尤其是语言领域等核心问题,大部分人是没有涉猎的。所以这是作为文科背景的同学们也是可以选择AI行业的重要原因。
以智能客服为例,如图所示,首先左边是用户的输入,当用户输入接进来了之后,需要通过“naturAI language understanding”,也就是“自然语言理解”形式去对它进行初步的处理,经过这样的一个步骤,把分析好的信息,交接到下一个“diAIog manager”,就是“对话管理模块”,由模块去判断我们对话的状态,以及调用“knowledge graph”知识库的这些知识。
从这个里面正确的得到了一个非常简单初步的信息,但是简单初步的信息,显然是没有办法直接拿给用户的,那么也就到了下面一个关键的节点,就是“NLG”。
“NLG”,自然语言生成。
到达这一步后,把非常粗糙的方面,处理成为易懂并且自然流畅的语言,最后再进行输出。在这整个流程中间,最关键的是“NLU” “DM”还有“NLG”,这三个模块,也就是我们自然语言分析处理,应用的最核心的几个板块。
逐步介绍。首先第一个板块是“NLU”,自然语言理解。顾名思义,首先应该有理解,理解之后才可以分析,才有输出,这是要迈出的第一步。
如图所示,右边有三个例句,“预约一下周日上午的小时保洁。”“可以帮我叫家政阿姨来我家吗?”“应该找个钟点工来打扫卫生。”
大部分人会产生误解,会觉得机器的理解是不是和机器翻译一样,看一下这个词,然后组合去进行理解?其实不是的,机器理解,它每个词的确切含义,对它来说并不重要,重要的是这整一句话的意思。为了使机器能够进行处理,首先是通过语义分析,然后再进行转换。
回顾一下这三句话。经过思考之后,会发现这三句话想表达的是同一件事情。在这时候,“NLU”要做的事情是什么?
首先第一步“领域识别”。举个例子,假设我们现在是淘宝的客服,这个时候,用户进来直接说“宇宙会不会爆炸?”那么马上就会进行判断,这是一个领域外的问题,可以用其它系统进行筛选拦截之类的,不会让它进入到后面的流程中去。
第二步是“意图的抽取”,理解分析用户到底是什么意图。
当前两个步骤顺利完成了之后,第三点就是槽位的填充。再次回顾一下之前的三句话,其实信息最完整的是第一句话,因为下面两句话,虽然也表达出了,要预约一个保洁来家里的信息,但是并没有说清楚时间。当我们对下面两句话进行分析的时候,走到槽位抽取的步骤,会发现槽为空。而第一个就不一样,第一个首先可以抽到一个槽位,是服务类型,还有服务的时间,这样的槽位是满的,接下来就可以直接做处理。
“NLU”现在有两种方法,如图所示,它非常简单,在答案非常单一,场景同样单一的情况下,用简单粗暴的一些规则形式,去进行一个匹配。但是右边模型的处理方式却不太一样,模型是非常依赖前期大量的数据标注的。这两种方法各有利弊。
如图所示,假如现在有非常迫切的需求,比较紧急,那么首先可以考虑用左图规则,因为它并不需要前期准备数据之类的步骤,但是它的容错率会非常低,灵活性也很差,而且一旦出现更新之类的过程,维护迭代同样非常困难。
右边模型的形式,虽然在前期可能会耗费大量的精力,去进行标注,还有分析,但是相对于左边就会非常灵活,覆盖度广,非常准确,而且它的针对的场景,也可以更复杂一些。
接下来,“DM对话管理”,它是对话系统的一个大脑,维护更新对话的状态,基于对话状态,选择接下来最合适的一种动作。
举一个例子,某位用户说“帮我叫一个车回家”,在这种情况下,系统的动作可能向用户询问“几点出发”,或者“您的出发地和目的地分别是什么”。
假如用户说的很清楚明白,例如“明天早上8点,帮我叫一辆从家里出发到公司的车”,那么这个时候DM的处理方式,就是直接为用户叫车。
最后,“NLP对话生成”。
举个例子,之前有一则社会新闻,讲述机器可以自动写小说,虽然很惊讶,但是随后发现机器用了一些非常稀奇古怪,甚至不能称之为句子的语言拼凑了字数组合在一起。当然这些都是噱头,机器目前并不能做到人类真正意义上想要看到的文章。
机器学会自己去表达,是需要非常多的准备,比如今的理解认知还要更复杂一些,首先要将知识比较完整的收集整理,然后选一个合适的形式,存到计算机系统里,并且还要有效的,去利用它们,如果个别环节出错,可能会导致前功尽弃。这一部分,需要语言学的应用非常多,一个文本一个字符串,是有很多含义的,一对多,多对一既是自然语言最大的魅力,也是现在进行分析处理最主要的障碍。
在自然语言生成的过程中,“应该表达什么”和“应该怎么样去表达”这两种方面是非常重要的,但是却普遍忽略了另外一个问题,就是“为什么要用这种方式去表达”这同样是非常具有价值的一个角度。
到底有什么机遇和挑战?首先在NLU之前,有一个非常必要的,同样关键的流程,就是标注。假设某位用户,输入是“灯泡不亮”,四个字,现在要根据这个现象进行标注,应该怎么标呢?可能有人会标停电了,或者标灯丝烧断了等,大概率的人都会以这个思路去走。
如图所示,左边这一圈白字,其实都是有可能造成灯泡不亮的原因,既然这么多原因都能对应到灯泡不亮,那么就不能在一开始,就预判他一定是其中哪一种,把范围定位的太窄,就会造成很多的错误。
如图所示,右边板块,我们需要做一些预判和优化,在对话系统中,我们要及时的发现用户是否偏离,状态是否异常,如果存在异常,就可以考虑是否主动结束话题或者转换话题。
在未来,机器人如果学习了这样一种处理机制的话,对话才是比较智能的,甚至可以预判客户的真实的需求,我们也可以更好的引导。
在做自然语言处理的时候,需要面对三个问题,一个是体系的建立,一个是数据,还有一个是算法,这是对话机器人痛点。
这里存在一个很有意思的现象,语言学科背景的语言学家们在此领域是无处不在的,并且可以参与到各个环节当中,例如智能音箱,语音助手等,它是把语音转化为文字,然后再输出,再把文字转回语音,等于在大框架里,接入了一些语音技术,变成了一个语音助手的形式。很多人觉得就只能处理语言,就只能文本,是不是范围太窄了,其实并不是,我们现在能够看到的,背后真正的核心就是“NLU”,“DM”,还有“NLG”三个模块。
其次是“检索”,通过“命名实体识别”,就可以找句子里我们所需要的最关键的信息,例如做售前售后工作的人士,可能比较关心是设备型号,再例如智能音箱,大家用的最多的功能比如播放歌曲,或者城市温度等,这些都是可以通过检索的形式实现的。
所有的产品,其核心都是以用户需求出发,如果把握住这一点,很多问题都会简单化。
至于对话机器人,它承载了一个全新的交互形式。虽然道路有些漫长,但是我们已经在路上。有大部分人不是专业计算机专业出身,加入智能领域,会极其不自信,“是不是会没有帮助?”“专家根本会不会看不起我,不让我入行”,这些顾虑都是没有必要的,首先一定要去进行了解,很多恐惧,都是因为未知而产生的,如果认真的进行了解,就清楚自身能力能发挥哪些作用,平时学会多思考,这个,才是最重要的。
如果把“AI”,比作“飞机”的话,它处在“引擎”很关键的位置,我们的目标,就是用我们对语言天然的敏感,用语言学相关的知识让机器去理解和学习人类的语言,同时这些文本可以发挥最大的价值,只有做到了这一点,真正的“智能”才会变为“可能”。