delphi - 如何从用户的自然语言查询中选择常见问题解答条目?

标签 delphi text nlp matching

我正在开发一个应用程序,用户可以在其中提交一系列问题。这些问题是自由格式的文本,但基于特定的产品,因此我对上下文有一个大致的了解。我有一个常见问题解答列表,我需要尝试将用户的问题与常见问题解答中的问题相匹配。

我的语言是Delphi。我的一般思维方法是扔掉小“垃圾词”,a、an、the、is、of、by 等...对这些单词运行词干提取程序以获取根单词,然后尝试匹配尽可能多的单词尽可能保留剩余的单词。

有更好的方法吗?我曾经考虑过某种类型的自然语言处理,但恐怕我会考虑多年的开发,而不是一两周。

最佳答案

您不需要发明一种新方法来做到这一点。这一切以前都已经完成了。您需要的是 FAQ 查找器,由 Hammond 等人于 1995 年引入(FAQ finder: a case-based approach to knowledge navigation,第 11 届人工智能应用 session )。

《AI 杂志》收录了一篇由一些作者撰写的论文,该论文与第一篇评估其实现的论文相同。伯克等人,Question Answering from Frequently Asked Question Files: Experiences with the FAQ FINDER System ,1997。它描述了它如何工作的两个阶段:

首先,他们使用 Smart(一种信息检索系统)根据用户的输入生成一组初始候选问题。看起来它的工作原理与您所描述的类似,提取所有单词并省略短单词停止列表中的任何内容。

接下来,根据统计相似性、语义相似性和覆盖率,针对用户的查询对候选者进行评分。 (详细信息请阅读论文。)语义相似度评分依赖于 WordNet ,它将英语单词分组为不同概念的集合。此处查看的常见问题解答查找器旨在涵盖所有 Usenet 常见问题解答;由于您涵盖的领域较小,因此您可以应用比 WordNet 提供的基础知识更多的领域知识。

关于delphi - 如何从用户的自然语言查询中选择常见问题解答条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8332471/

相关文章:

delphi - 为什么将 single 分配给变体会产生 varDouble 变体?

java - 如何在java中写入文本文件而不删除之前的文件内容

wpf - 使用多种类型的控件搜索并突出显示 WPF 窗口上的任何文本

node.js - 我如何检测具有上下文的意图? (Dialogflow API V2 的 Node.js SDK)

nlp - (a^p )(b^q) 是正则语言吗

delphi - 从列表框中选择一个代理(IDHTTP)

delphi - 对 TListView 列进行排序 - 续(升序降序)

delphi - 将 TRichEdit 绘制到 Canvas 上

excel - 计算 A 列中包含 "(CLOSED)"或 "(DO NOT USE)"的所有行

swift - MLDataTable 中 MLDataType 的值