0

我们正在设计一个可以接受这种格式命令的系统

command context

上下文是从大约 200 个单词元组的列表中定义的,例如:

physical therapy
cardiac
physician visit
hospital inpatient
hospital outpatient
etc.

我们希望系统能够纠正用户错误,例如拼写错误,同时也能理解“物理治疗”与“物理治疗师”相同,并且接受同义词

最后,如果不是完全匹配,它应该要求用户消除最佳匹配之间的歧义

这就是我的想法:

  1. 词干上下文词和传入查询
  2. 从查询中删除/隔离命令字符串
  3. 检查并更正任何字谜(但是:这仅涵盖一类拼写错误)
  4. 寻找完全匹配的单词
  5. 寻找“近距离匹配”

这感觉不是一个巧妙的解决方案,尤其是第 3 步和第 5 步。

有什么更好/更简单的方法来做到这一点?任何在 C# 中执行此操作的库,奖金。

Lucene 可以做到这一点吗?任何指导表示赞赏。

谢谢!

4

2 回答 2

1

对于您的目的而言,它可能过于不精确,但Soundex是一种常用算法,用于判断两个单词是否“听起来相似”。

于 2012-04-16T23:55:26.380 回答
0

我认为 Lucene 最好只应用于第 4 步和第 5 步,因为 Lucene 目前仅支持“glob”意义上的近似匹配(通配符——“?”用于匹配单个字符,“*”用于匹配多个字符)。

有一整套关于近似匹配的文献——我将从agrep工作开始,然后从那里开始(但部分是因为我熟悉 agrep)。

于 2012-04-17T20:30:46.503 回答