(二十一)RASA应用常见问题

DayNightStudy

共 1442字,需浏览 3分钟

 · 2021-10-11


作者简介





作者:孟繁中

原文:https://zhuanlan.zhihu.com/p/339722352

转载者:杨夕

面筋地址:https://github.com/km1994/NLP-Interview-Notes

个人笔记:https://github.com/km1994/nlp_paper_study



缺少训练数据

当用户实际使用bot时,将有大量的会话数据作为训练数据。然而,在刚开始训练bot的时候,几乎没有训练数据,因此意图分类的准确性很低。解决这个问题有几个途径:

  1. 使用数据增强技术,根据已有的训练数据生成一系列新数据,这个rasa里面本身也有这个功能。我们也可以应用三方工具生成一些。

  2. 使用远程监督或弱监督的方式,使用已有的训练数据生成新的数据。比如,我们将对话数据中的一些词换成同义词;将已有数据从知识库中匹配相似说法等等。注意的是,要控制好生成数据的置信度,以免引入过多的噪声数据。

  3. 选择众包,多用户写真实的数据。

  4. 使用Rasa Core的交互式学习功能也非常有助于获取新的Core和NLU训练数据。

集外词

不可避免地,用户会使用到模型中没有的单词,如果使用的是预训练单词嵌入,那么除了尝试在更大的语料库上训练的语言模型之外,你没有什么可做的。还是就是添加OOV_token,分类器学习处理包含看不见单词的消息。

相近意图

当意图非常相似时,很难区分它们。想象一下这样的情况,一个用户提供他们的名字或者给你一个日期。直观地说,您可能会为消息创建一个intent:provide_name,它是Sara,为消息创建一个intent:provide_date,它是在周一。然而,从NLU的角度来看,这些消息非常相似,除了它们的实体。出于这个原因,最好创建一个inten:inform,它将provide_name和provide_date统一起来。在Rasa core的故事中,可以根据Rasa NLU提取的实体选择不同的故事路径。

数据不平衡

你应该始终保持每个意图的示例数量的大致平衡。然而,有时有的意图(例如,上述示例中的通知意图)的训练数据数据量大大超出其他意图的。一般来说,更多的数据有助于获得更好的精度,但严重的不平衡会导致分类器有偏差,进而对精度产生负面影响。Rasa有关于训练数据均衡的策略,可以通过配置超参数部分解决这个问题。但到目前为止,最好的解决方案是重新建立一个平衡的数据集。

实体提取器泛化效果不好

如果实体提取器并没有得到很好的泛化,那么可能有两个原因:缺少训练数据及或ner_crf组件出现了过拟合。如果使用了很多正则化表达式,或查找表,那么可以试着不使用他们,然后再训练模型,观察模型是否依旧出现过拟合。否则,针对你的实体增加更多的训练示例。

地址提取

如果你想要提取地址,那么我们建议使用带查找表的ner_crf组件。

实体映射

有些时候,提取的实体虽然具有相同的含义,但是有不同的表现形式。比如,你提取国家,如,U.S.USAUnited dStates of America,这三种表述方式都是相同的。如果你想要将它们映射到特定的值,你可以使用ner_synonyms组件。在你的训练数据中,你可以进行特定的标记。


浏览 43
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报