自然语言搜索(用户意图搜索)

Natural Language Search (user intent search)

我正在尝试构建一个搜索引擎,允许我的用户使用自然语言命令进行搜索,就像 Google 现在一样。除此之外,我的搜索引擎稍微受限一些,因为它主要用于电子商务网站,并允许用户搜索某些设备。

我想提供的一些功能是:

1) 允许用户按品牌搜索 2) 按型号 3)按价格区间 4) 通过 3g/4g 能力 5) 按操作系统

等等等

我构建了一个模拟版本,使用它查找某些关键字,例如 "price"、"cost"、"iphone 5" 等

构建我自己的 dictionary/array 关键字是实现此目标的最佳方式吗?

或者是否存在 dictionaries/APIs 来帮助解析我的用户的搜索查询和 return 适当的信息。

http://www.nltk.org/

我猜你会想要这样的东西。

参见以下示例:

"find me an android phone with 4 gb ram and at least 16 gb storage."

首先,您需要一个可以直接从输入中提取并插入到搜索中的单词列表query.This 是最简单的部分。

"find me an android phone with 4 gb ram and at least 16 gb storage."

接下来,输入的是数字。

"find me an android phone with 4 gb ram and at least 16 gb storage."

你现在应该已经提取了单词 "android" 和 "phone"。现在您必须提取数字 - 以及它们前后的 2 或 3 个单词。

"find me an android phone with 4 gb ram and at least 16 gb storage."

您的下一步是弄清楚这些数字的含义。为此,你需要一个像下面这样的 table:(我们称之为 table "Properties")

将上面的 table 与您从输入中提取的数字周围的数字和单词进行比较:

4---phone,with,gb,ram 6---至少,gb,存储空间

通过使用合适的算法和属性 table 你可以很容易地找出数字是什么 mean.Just 将每个数字与每个数字进行比较 属性 - 首先检查数字是否落入属性 的范围,然后检查输入中数字周围的单词是否与 属性 的标签匹配。 现在您知道每个数字的含义 (4=ram,6=storage),您必须检查输入中的不等式。

检查不等式:

如果有“至少”、“不超过”、“在most" 等等,那么你就有了不平等。在我们的例子中,你在数字 4 附近找不到这样的词,但你可以在数字 6 附近找到术语 "at least"。这意味着用户想要一个 phone 正好有 4 gb ram(使用== ),但内部存储 space 可以大于或等于 6 GB(使用 >=)。

另请注意,如果您无法将数字与 属性 相关联,则该数字很可能就是价格。

您可以添加更多功能.. 例如让用户按照 property.For 示例的 increasing/decreasing 顺序对结果进行排序:

"find me an android phone with 4 gb ram and at least 16 gb storage.Show the cheap ones first"