4

我正在寻找一个 PHP 库,它允许用户基本上输入命令以使用真正的英语运行。基本上我希望用户能够执行以下操作:

Please search for all users in Europe这相当于一个select * where users = 'Europe'

或者我的意图的另一个例子:

Lookup (Find) the email address for John Smith

注意:如果你能说也很好for John Smith, Jane Smith, and John Doe

理想情况下,我希望这个库可以扩展,这样我就可以在某些事情出现后对需要发生的事情进行编程,find,email例如search,users

有人知道可以执行上述操作的 PHP 库吗?

4

1 回答 1

2

据我所知,目前没有用于基于自然语言查询进行搜索的库,无论是 PHP 还是任何其他编程语言(我假设您不能使用IBM Watson :))。

我认为可行的方法是基于语法的解析器模糊搜索

使用像Jison这样的解析器生成器,您可以在用户浏览器上解析和“理解”与生成语法对应的所有语句,将生成的查询或中间表示发送到服务器。

它比 PHP 解析器更好,因为用户可以在键入时立即获得反馈,而且它比提交表单并收到错误更令人沮丧。在这种情况下,查询解释将是 99% 正确的,但在许多情况下,完全正确的(从人类的角度来看)查询将被拒绝,因为语法没有预见到。

另一种情况,你可以做一些预处理,比如去除停用词、使文本小写、词干提取等,然后用全文搜索引擎进行搜索(Lucene 可能是最强大的,但它是在 Java 中的)。PostgreSQL支持它,MySQL 也有一些全文搜索功能。还可以使用索引和对空格和标点符号进行标记化文本来构建基于基本 RDBMS 的原始引擎。

哪种方式取决于您的数据和各种预期查询的多样化和嘈杂程度。也可以尝试实现一种混合方式,即使用语法解析文本,是否失败使用全文搜索。

于 2013-03-12T20:11:26.010 回答