AWS Lex在输入完全匹配的语句时却匹配到错误的意图

我在多种不同情况下都遇到了这个问题。

我将分享一个例子。

我有几个FAQ意图。其中一个回答“What is Named Entity Recognition?”以下是它的语句:

  1. Tell me about Named Entity Recognition
  2. Tell me about NER
  3. What is NER
  4. What do you mean by Named Entity Recognition
  5. What is Named Entity Recognition

另一个回答“What is Optical Character Recognition?”以下是它的语句:

  1. OCR
  2. What do you mean by OCR
  3. Can you tell me what OCR is
  4. Tell about OCR
  5. What is optical character recognition
  6. What is OCR

当我输入“What is ocr?”时,它按预期工作并显示OCR的答案。但当我改为输入全大写的OCR,并使用完全相同的问题(What is OCR?)时,它却切换到了NER意图并显示“What is NER?”的答案。

有人能回答为什么会这样吗?更重要的是,我该怎么做才能让它按预期工作?

请记住,这只是一个例子。我在许多其他类似场景中也遇到了这个问题。

还有一个案例中,意图语句看起来根本不匹配,但它仍然切换到了错误的意图。


回答:

最后我没有找到合适的解决方案,而是使用了一些非常不雅的变通方法,但只要能用就行:D

我使用的变通方法是创建一个“what”意图,一个“how”意图等,保持句子结构不变:

例如:

IntentName => "Bot_HowTo"Utterances => "What is {slotName}""What are {slotName}""Meaning of {slotName}"Slots =>name : "slotName"values (using synonyms) : {OCR => "ocr", Optical Character recognition"}{NER=> "ner", Named Entity Recognition"}

这使得所需的意图数量大大减少,并且消除了很多歧义。所有带有“what”或类似格式的问题都直接进入该意图。

然后在我的代码钩子中,我会查看匹配了哪个同义词,并相应地提供答案。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注