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

LUIS inserts whitespace in utterances when punctuation present causing entity getting incorrectly parsed

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

默认情况下,Luis 会预处理在标点符号周围插入分词符的话语,因此话语“bt.a 的价格是多少”变成“what is price of bt.a”,因此 Luis 认为实体是“bt”而不是“bt.a"

有谁知道如何解决这个问题?感谢

我需要处理其中包含网站地址的句子,因此我不得不处理一些不同的符号。我找到了一种适合我的技术,但它不是很优雅。

我在这里假设您有一个实体设置来表示 "stock symbol"

这是你的情况。

  1. 检测 LUIS 错误获取 "stock symbol" 实体的情况。在 您的情况可能是在一段时间内结束。
  2. 当 LUIS 弄错实体时,使用空格标记原始查询 作为分隔符。通过寻找匹配项来获取正确的令牌 错误的部分标记。

所以对于你的例子....

"what is price of bt.a"

您会看到 "bt." 的 "stock symbol" 实体并且知道它是错误的,因为它以句点结尾。然后,您可以标记查询并查找包含 "bt." 的标记。这会将 "bt.a" 标识为请求的符号。

虽然不是很漂亮,但是在网站地址的情况下是可靠的。

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

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