当标点符号出现时,LUIS会在话语中插入空格,导致实体解析错误



我在这里玩Luis股票行情器示例,GitHub MicrosoftBotBuilder示例,它运行良好,话语中的实体已被识别,但世界上有些股票行情器中有句点,如bt.a

默认情况下,Luis预处理在标点符号周围插入断字的话语,因此"bt.a的价格是多少"的话语变成了"bt.a的价格是什么",因此Luis认为实体是"2t"而不是"bt.a

有人知道如何绕过这个吗?Thx

这就是LUIS标记话语的方式,我认为在不久的将来不会改变。我认为你可以研究两种解决方案之一:

  1. 预处理话语并用标点符号规范实体(可能将它们保存在地图中),并在调用LUIS并提取实体时反转过程
  2. 使用短语列表功能,以标记形式添加LUIS遗漏的实体,在话语中标记实体标记,并重新训练模型(我建议你在应用程序的克隆中尝试,这样你就不会丢失任何当前进度)

我需要处理带有网址的句子,所以我必须处理一些不同的符号。我找到了一种适合我的技巧,但不是很优雅。

我在这里假设你有一个实体设置来表示"股票符号"

以下是您的情况。

  1. 检测LUIS获取"股票符号"实体错误的情况。在里面在你的情况下,这可能是在一段时间内结束的任何时候
  2. 当LUIS得到错误的实体时,使用空格标记原始查询作为分离器。通过查找匹配项来获取正确的令牌错误的部分标记

以你为例。。。。

"bt.a的价格是多少"

你会看到"bt."的"股票符号"实体,并知道它是错误的,因为它以句点结束。然后将查询标记化并查找包含"bt."的标记。这将标识"bt.a"作为请求的符号。

它并不漂亮,但在网站地址的情况下是可靠的。

最新更新