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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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