0

我想了解用户的 serarh 术语。想想有人正在搜索“纽约的订书钉” - 我想了解它是一个位置搜索,其中关键字是订书钉,位置是纽约。类似地,如果有人键入“cat in hat”,解析器不应将其标记为位置搜索,这里整个关键字是“cat in hat”。是否有任何算法或开源库可用于解析搜索词并理解其比较(如 A 与 B)或基于位置的搜索(如 X 中的 A)?

4

3 回答 3

3

您描述的问题称为信息提取。存在许多算法,最简单的是正则表达式匹配,最好的结构化机器学习。如果您了解 Python ,请先尝试正则表达式并查看类似NLTK的内容。

如果您的程序知道“NY”是一个位置,则可以区分“纽约的订书钉”和“戴帽子的猫”。您可以通过大写字母或因为“NY”出现在名为gazetteer的列表中来判断。

一般来说,问题是AI-complete,所以如果你想要好的结果,请期待付出很多努力。

于 2011-06-20T19:53:15.067 回答
1

您应该在 GATE 和http://code.google.com/p/graph-expression/等语法中编写此类语言规则。示例: (LocationLookup) 中的 Token+。

于 2011-06-21T07:29:16.280 回答
0

不太确定,但根据我的解析经验有两种方法 -

  1. 定义一个可以解析表达式并收集值/参数的语法。您可能想提出一个关键字字典,然后您可以使用它来推断搜索的类型。

  2. 定义语法时要严格,以便表达式本身告诉您搜索的类型。例如 LOC: A in B , VALUE $ to Euro。等等

对于解析器,请参阅 ANTLR / jcup 和 jflex。

于 2011-06-20T19:53:38.263 回答