防止Luis.ai将'a'或'the'识别为实体

问题描述 投票:1回答:1

我创建一个pattern.any实体和意图与此相似:

I want to run [salesforce] bot
I want to run [facebook] bot

我称我的实体为“ BotName”,其意图为“ BotRun”

这很好,但是,当用户输入'a'或'the'时,这会使实体感到困惑,例如:

I want to run a bot
I want to run the bot

在这种情况下,路易斯仍会把它们识别为实体。

无论如何,我是否可以“排除”某些单词,例如“ a”或“ the”?还是有其他方法可以解决此问题?

nlp luis nlu
1个回答
1
投票

不,您不能这样做。我曾多次尝试创建您想要的排除类型。但是这些方法不起作用。您可以使用方括号[]来告诉LUIS忽略单词,但效果并不理想。例如,

    `run [a] [the] {BotName} bot`

理论上应该忽略这些词,但实际上“ a”和“ the”仍将被视为实体。

如果您对要求的发声格式更加严格,则可以使用类似的方法

    `run (a|the) {BotName} bot`

在漫游器名称之前需要输入“ a”或“ the”。 LUIS模式在此方面做得更好。在这种情况下,它不会将“ a”或“ the”标识为诸如“运行机器人”之类的短语的实体,但也不会识别其意图(除非您将“运行机器人”单独添加到非模式中)话语列表)。此外,“ Run facebook bot”也无法识别,这并不理想。但是,我认为可以要求更多完整的短语,尤其是在您依赖于此实体提取的情况下。 “运行facebook bot”更为自然。顺便说一句,此模式还将正确识别更长的短语,例如“我想运行facebook机器人”或“您可以运行facebook bot吗?”

您可以添加其他短语来处理其他情况,但是不能使用相同的短语来减少细节。例如,如果您保留简单的run {BotName} bot模式,它将覆盖更具体的模式,并且您将回过头来选择机器人名称“ a”和“ the”(这些模式独立工作)。

您可以对实体进行检查,如果它是“ a”或“ the”,则可以忽略它,但是考虑到用户可能使用的所有随机单词的情况,可能与考虑到机器人名称本身一样是人工的。

我已经决定使用非常具体的模式,其中包含额外单词的可能性很小。我直接在意图中添加了更多一般性的说法。我几乎总是在进行对话,所以我只是检查并查看是否找到了话语,否则,我会提示您。如果用户键入诸如“ Run my facebook bot”之类的无法识别该实体的信息,您将有使用户沮丧的风险,但实际上,替代方法是使用列表实体,具体取决于可能的值数量实体。

© www.soinside.com 2019 - 2024. All rights reserved.