EthanLab 软件开发 · 产品管理 · 科技评测
返回研究笔记

[对话式AI-2] Chatbot的阅读能力–自然语言理解篇

更新于

一个基本的文本型聊天机器人框架(Chatbot Framework),包含「自然语言理解、对话管理、自然语言生成」三大模块。有些机器人能够使用语音与用户交互,还需包含「自动语音辨识、语音合成」模块 ,例如知名的Siri、Google Assistant。本期AI专栏将为大家详细介绍聊天机器人的内核「自然语言理解 」模块。

自然语言理解是什么?

自然语言理解(Natural Language Understanding)是为了把自然语言转换(映射)成机器可读的语意表示(Semantic Representation),是自然语言处理(Natural Language Processing)中最困难的技术;若要让机器理解自然语言,必须分析「语音、音韵、词法、句法、语意和语用」,可以简单理解如下:

  • 语音(Phonetics):人类如何发出语音
  • 音韵(Phonology): 如何拼出自然语言的读音
  • 词法(Morphology):如何构成自然语言的单词
  • 句法(Syntax):如何构成自然语言的句子
  • 语意(Semantics):如何理解自然语言的句子
  • 语用(Pragmatics):如何使用自然语言的句子

对机器来说,自然语言理解可能碰到以下问题:

  • 语音辨识所产生的错误,是否能在自然语言理解中容错?
  • 中文并没有像是英文的空格去分隔单词,如何正确分词?
  • 如何兼容同一个语意的上百种自然语言表示?例如:「我爱你、我喜欢你、我中意你、你是我的菜」 等 。
  • 同一句话可能会因情境(上下文)不同,而有不同的语意, 如何正确判断 ?
  • 对话中的代词或省略所代表的内容?
  • 还没学到的词汇该如何处理?例如:「是在哈啰、 新冠肺炎」。

自然语言理解在聊天机器人的功用

自然语言理解在聊天机器人发挥的功能,主要可分为以下七点:

  • 用户意图侦测( User Intent Detection ):针对用户对话的意图进行分类,得以确定用户想要或计划做什么,可分为显性(直接知道分类,例如:「今天天气好吗?」)和隐性意图(间接推敲出分类,例如:「今天适合出门吗?」),以上两个问句,用户意图都是「查天气」。
  • 命名实体识别(Named Entity Recognition):用来截取用户对话中具有特定意义的实体,例如:「查找日期、地点」等专有名词,以填充特定意图的槽位(Slot filling),例如:「2020年2月25日台北的天气?」,日期的槽位值是「2020年2月25日 」,地点的槽位值是「台北」;而上述的用户意图「查天气」正是需要这两个槽位值补充说明。
  • 指代消解(Coreference Resolution):判断在对话中代词所代表的实体或事件,例如威诺格拉德模式(Winograd Schema)的示例。
  • 省略恢复:判断用户在对话中所省略的内容。
  • 情感分析(Sentiment analysis):识别用户对话中的主观信息,例如正面或负面,或寻找更复杂的状态,例如开心、生气、哀伤等;可以让机器与人交互时更有温度。
  • 意图确认:当意图识别的置信度(Confidence)不足时,请用户再次进行确认。
  • 拒绝识别:当识别的意图超出服务范围、涉及敏感内容或置信度过低时,系统可拒绝回复。

不同类型的聊天机器人(请参考聊天机器人的类型与对比),其自然语言理解着重的技术有所不同,如下:

一、问答系统(Question Answering system):

着重于识别问题中的信息词,例如问题词(Who What Where When Why How)、焦点词、主题词、中心动词等,与自然语言理解略有不同,比较偏向自然语言处理的范畴;以模板比对、基于统计、基于深度学习的语意分析,基于深度学习的端对端生成(此方法目前处于研究阶段),以上四种方法为主流。主要评估指针为召回率(Recall)、精确率(Precision)、F-Score。

二、任务导向对话系统(Task-Oriented Dialogue system)

着重于将自然语言,转换成机器可读的语意表示,例如分为用户意图(User Intent)及槽位值(Slot Value)。具体工作有中文分词、词性标注、命名实体识别、指代消解、句法分析等。以基于规则、基于统计、基于深度学习的意图识别与槽位填充,以上三种方法为主流;主要评估指针为意图分类准确率(Accuracy)、槽位填充的F-Score。

三、闲聊系统(Chit-Chat Dialogue system)

着重于个性化,以及情感分析(使用自然语言处理来识别对话中的主观信息,例如正面或负面等)。以对话库检索、基于深度学习的端对端生成,以上两种方法为主流。主要评估指针为词重叠率和矢量距离。

自然语言理解的实作方法

如上所述,自然语言理解可视为分类和串行标注问题,通常分为基于规则、基于统计、基于深度学习三种方法:

  • 采用基于规则的方法,优点在于容易调整修正,而且不需仰赖训练数据,缺点是当场景变多时,规则数量也大幅增加,将变得难以维护。
  • 采用基于统计的方法,优点在于系统强健性高(Robustness),而且容易维护。缺点是训练出来的模型较难解释和修正。常用支持矢量机( Support Vector Machine, SVM)或自适应增强(Adaptive Boosting, )进行意图分类,隐藏式马可夫模型(Hidden Markov Model, HMM)或条件随机域(Conditional Random Field, CRF)进行分词、实体识别。
  • 采用基于深度学习的方法,优点在于其效果最佳,系统强健性高,而且容易维护,缺点是需要大量的训练数据,模型的空间与时间复杂度高 ,而且几乎无法解释与修正, 如同黑盒子一般。常用Attention-based RNN及LSTM等模型,进行意图侦测与槽位填充等任务。

自然语言理解相关技术的其他用途

自然语言理解涉及的自然语言处理技术,除了用于聊天机器人,也可用于其他用途:

  • 垃圾邮件侦测 (Spam Detection):分析大量的数据归纳出特征,协助用户过滤垃圾邮件,例如Gmail中的垃圾邮件匣。
  • 搜索引擎建议(Search Engine Suggestions):通过预测用户输入的字词,主动推荐搜索的内容,例如在Google搜索输入些许字词,所出现的推荐搜索清单。
  • 机器翻译(Machine Translation):将某种自然语言翻译成另一种自然语言,例如Google翻译的英翻中功能。
  • 自动摘要(Automatic Summarization):分析一篇或多篇文章,自动产生一段大意,常应用在新闻短讯中。

参考文献