我正在努力采用Bot Framework实现FAQ的方法。我考虑使用LUIS,但发现我必须为每个问题创建一个Intent。由于可能存在大量这些(比如100),我想知道是否有更好的方法?
答案 0 :(得分:3)
如果您所做的只是返回FAQ,那么您根本不需要LUIS。只需使用搜索技术。你可以使用像Lucene这样的搜索引擎或更简单的东西,如果你只有几百常见问题,那就是编写你自己的排名,根据用户查询中与文档匹配的单词数来选择答案。
一个相当简单的排名算法是将用户话语分解为令牌,然后为每个文档搜索文档中的每个令牌。通过计算文档中匹配的令牌数量并计算覆盖率得分来生成得分。覆盖率基本上是用户查询中的术语百分比与文档匹配。
有两种方法可以计算覆盖率,但这是一种相当简单的方法。将所有匹配的标记长度相加,然后将其除以要搜索的文档/字段的总长度。所以我们可以说我们有一个问题“给我看看来自亚洲的狗”,我们有一个名为“亚洲狗”的文件。我们在用户话语中有2个令牌,匹配“狗”和“亚洲”。它们的总长度为8,标题的长度为10.因此(8/10)标题字段的覆盖率为0.8。
在搜索文档时,您可以执行相同的基本技术,但是您想要考虑术语匹配的次数。基本上我们想要一个有5次出现“dog”和10次出现“asia”的文档,对每个只出现1次的文档进行排名。
您可以在排名算法中添加许多其他内容,例如词干和& TF-IDF支持,但此时您应该只使用搜索引擎。
答案 1 :(得分:1)
我认为你不需要为每个问题创建一个Intent,信息设计是不可接受的。您需要做的是对您拥有的问题类型进行分类,这些分类应该是您的意图。
我们几乎做同样的事情,所以在我的情况下,我创建了一个名为“定义”的Intent,用于通常以“What is ..”开头的问题。然后我尝试用所有可能的问题来训练LUIS,要求定义。
由于您正在处理常见问题解答,因此它是一组有限的信息。您基本上可以使用所有常见问题解答并将其作为话语提交,并将其分类为正确的意图。