1

我正在为使用 Bot Framework 实施常见问题解答应采取的方法而苦苦挣扎。我考虑过使用 LUIS,但发现我必须为每个问题创建一个 Intent。由于可能有很多这样的(比如 100 个),我想知道是否有更好的方法?

4

2 回答 2

3

如果您所做的只是返回常见问题解答,则根本不清楚您是否需要 LUIS。只需使用搜索技术。如果您只有几百个常见问题解答,您可以使用像 Lucene 这样的搜索引擎,或者更简单的方法是编写自己的排名器,根据用户查询中与文档匹配的单词数来选择答案。

一个相当简单的排名算法是将用户话语分解为标记,然后为每个文档搜索文档中的每个标记。您的分数是通过计算文档中匹配的标记数并计算覆盖率分数来生成的。覆盖率基本上是用户查询中与文档匹配的术语的百分比。

有几种方法可以计算覆盖率,但这里有一个相当简单的方法。将匹配的标记的所有长度相加,然后将其除以正在搜索的文档/字段的总长度。所以假设我们有一个查询“给我看来自亚洲的狗”,我们有一个名为“亚洲狗”的文档。我们在用户的话语中有 2 个匹配的标记,“dogs”和“asia”。它们的总长度为 8,标题的长度为 10。因此 (8 / 10) 将为标题字段产生 0.8 的覆盖率分数。

在搜索文档时,您可以使用相同的基本技术,但您需要考虑术语匹配的次数。基本上,我们想要一个包含 5 次“dog”和 10 次“asia”的文档来对每个仅出现 1 次的文档进行排名。

您可以在排名算法中添加许多其他内容,例如词干提取和 TF-IDF 支持,但此时您应该只使用搜索引擎。

于 2016-04-10T05:39:18.973 回答
1

我认为您不需要为每个问题创建一个意图,信息设计是不可接受的。你需要做的是对你的问题类型进行分类,这些分类应该是你的意图。

我们几乎在做同样的事情,所以在我的例子中,我为通常以“什么是......”开头的问题创建了一个名为“定义”的意图。然后,我尝试用所有可能的问题来训练 LUIS,要求定义。

由于您正在处理常见问题解答,因此它是一组有限的信息。您基本上可以使用所有常见问题解答并将它们作为话语提交,并将它们分类为适当的意图。

于 2016-04-08T18:29:10.997 回答