在关于对话系统的technology.org系列的第7部分中,您接触了一些数学知识,以更好地了解机器如何从输入和预期输出的示例中学习。然后,通过继续第6部分中的意图分类器主题,您有机会将新学到的概念应用到为用户输入实现一个非常基本的单意图分类器的问题上。
在本系列的这一部分中,您将学习如何扩展基本分类器以包含更多类。此外,您将看到如何用单个分类器替换多个二元分类器。最后,我们将评估通过向分类器提供更多训练数据可以获得的性能优势。
如果您错过了前七篇文章,您可能有兴趣阅读之前的文章,然后再开始第六部分:
如何使用对话系统让您的客户满意?
增强基本分类器
在第7部分中,我们构建了一个只能识别一个意图的分类器。我们可以将其视为对两个类别(#reset_password和其他所有内容)的预测。然而,对于现实世界的对话系统,必须支持几十个类。假设我们的示例零售连锁店需要在其对话系统中提供不少于十几个意图。
首先,让我们扩展我们的基本分类器来识别三个意图。训练数据将只包含三个意图中的每一个的一个示例语句:
通过在训练数据集中包含一个新语句,我们在之前的七个包中添加了三个新包,分别代表“where”、“is”和“nearest”。让我们看看这将如何改变我们新模型中的权重。
在训练模型之前,您应该弄清楚如何为输出分配一个数值。为每个类分配一个随机数可能会让我们很难找到匹配所有意图的正确函数。所以最好使用多个二元分类器,其中一个分类器负责检测单个类。如果我们结合输出,预测的意图将来自产生最高正置信度的分类器。
在使用https://rb.gy/nohcqg提供的代码训练三个分类器后,我们得到三组权重:
现在,如果我们使用第7部分中推导出的方程式来计算话语“重置我的密码”属于三个意图之一的概率,我们会得到以下值:
分类器
正预测概率
负预测概率
#重设密码
0.704
0.296
#store_hours
0.128
0.872
#商店地址
0.165
0.834
在此表中,右侧列中的值显示话语不属于相应意图的可能性有多大。例如,我们的系统有0.872置信度,即密码重置请求与商店营业时间的类别关系不大。为了进一步提高这种信心,您应该投入更多精力来训练分类器。同时,由于第一个分类器具有最高的正向预测置信度,因此将被选为最终输出。
向训练数据添加更多示例将向下推动偏差参数。这样分类器就知道大多数话语不能属于一个特定的意图。如果我们有10个意图中的每一个有10个示例,那么每个意图将使用10个正示例和90个负示例进行训练。由于任何意图的负面例子的数量是正面例子的九倍,每个分类器肯定会知道大多数话语不是正面例子。
标签:
免责声明:本文由用户上传,如有侵权请联系删除!