我正在开发一个用户提交一系列问题的应用程序.这些问题是自由形式的文本,但基于特定的产品,因此我对上下文有一般性的了解.我有一个常见问题解答列表,我需要尝试将用户的问题与常见问题解答中的问题相匹配.
我的语言是Delphi.我的一般思维方法是抛弃小的"垃圾词",a,an,the,is,of,by等...对这些单词运行一个词干程序来获取根词,然后尝试匹配尽可能多的其余的话尽可能.
有更好的方法吗?我曾考虑过某种类型的自然语言处理,但我担心的是我会关注多年的发展,而不是一两周.
您不需要发明一种新方法.以前都做过.你需要的是一个FAQ查询器,由Hammond等人在1995年推出(FAQ finder:基于案例的知识导航方法,第11届人工智能应用会议).
AI杂志包括一些同一作者的论文,作为评估其实施的第一篇论文.Burke等人,问题答案来自常见问题文件:经验与FAQ FINDER系统,1997.它描述了它的工作原理的两个阶段:
首先,他们使用Smart(一种信息检索系统)根据用户的输入生成一组初始候选问题.看起来它的效果与你描述的相似,可以阻止所有单词并省略短词的停止列表中的任何内容.
接下来,根据统计相似性,语义相似性和覆盖范围,针对用户的查询对候选者进行评分.(阅读文章了解详情.)评分语义相似性依赖于WordNet,WordNet将英语单词分组为不同的概念集.此处查看的常见问题解答查找器旨在涵盖所有Usenet常见问题解答; 由于您所覆盖的域名较小,因此您可以应用比WordNet提供的基础知识更多的域知识.