一个基本的文本型聊天机器人框架(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):分析一篇或多篇文章,自动产生一段大意,常应用在新闻短讯中。
参考文献
- Support-vector networks
https://link.springer.com/article/10.1007/BF00994018 - A Short Introduction to Boosting
https://cseweb.ucsd.edu/~yfreund/papers/IntroToBoosting.pdf - Hidden Markov model
https://en.wikipedia.org/wiki/Hidden_Markov_model - Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data
https://dl.acm.org/doi/10.5555/645530.655813 - Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling
https://arxiv.org/abs/1609.01454 - Long Short-term Memory
https://www.researchgate.net/publication/13853244_Long_Short-term_Memory
