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

Prevent Luis.ai from recognizing 'a' or 'the' as entities

我创建了一个 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

在这种情况下,Luis 仍会将它们识别为实体。

无论如何我可以 "exclude" 某些词,例如 'a' 或 'the'?或者有其他方法可以解决这个问题吗?

不,你不能这样做。我曾多次尝试创建您想要的排除类型。但是这些方法不起作用。您可以使用方括号 [] 告诉 LUIS 忽略单词,但它不会像您预期的那样工作。例如,

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

理论上应该忽略这些词,但实际上 "a" 和 "the" 仍将被识别为实体。

如果你能在要求的话语格式上更严格一点,你可以使用像

这样的东西
    `run (a|the) {BotName} bot`

这将需要 "a" 或 "the" 在 bot 名称之前。 LUIS 模式在这方面做得更好。在这种情况下,它不会将 "a" 或 "the" 识别为像 "Run the bot" 这样的短语的实体,但它也不会识别意图(除非您单独将 "run the bot" 添加到你的非模式话语列表)。此外,"Run facebook bot" 也无法识别,这并不理想。但是,我认为需要更多的完整短语是可以的,特别是如果您依赖于此实体提取。 "Run the facebook bot" 更自然。顺便说一句,这种模式也能正确识别较长的短语,如 "I want to run the facebook bot" 或 "Can you run the facebook bot?"

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

您可以检查实体并忽略它,如果它是 "a" 或 "the",但考虑到用户可能使用的所有随机词的情况可能与手动一样考虑机器人名称本身。

我已经确定的是使用非常具体的模式,其中包含额外单词的可能性非常小。我直接在意图中添加了更多一般性的话语。我几乎总是在做对话,所以我只是检查并查看是否找到了话语,如果没有,我会提示它。您 运行 如果用户输入诸如 "Run my facebook bot" 之类的内容将无法识别该实体,您可能会感到沮丧,但实际上另一种选择是您使用列表实体,这可能不可行,具体取决于实体的数量实体的可能值。