自然语言搜索(用户意图搜索)
Natural Language Search (user intent search)
我正在尝试构建一个搜索引擎,允许我的用户使用自然语言命令进行搜索,就像 Google 现在一样。除此之外,我的搜索引擎稍微受限一些,因为它主要用于电子商务网站,并允许用户搜索某些设备。
我想提供的一些功能是:
1) 允许用户按品牌搜索
2) 按型号
3)按价格区间
4) 通过 3g/4g 能力
5) 按操作系统
等等等
我构建了一个模拟版本,使用它查找某些关键字,例如 "price"、"cost"、"iphone 5" 等
构建我自己的 dictionary/array 关键字是实现此目标的最佳方式吗?
或者是否存在 dictionaries/APIs 来帮助解析我的用户的搜索查询和 return 适当的信息。
我猜你会想要这样的东西。
参见以下示例:
"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"
我正在尝试构建一个搜索引擎,允许我的用户使用自然语言命令进行搜索,就像 Google 现在一样。除此之外,我的搜索引擎稍微受限一些,因为它主要用于电子商务网站,并允许用户搜索某些设备。
我想提供的一些功能是:
1) 允许用户按品牌搜索 2) 按型号 3)按价格区间 4) 通过 3g/4g 能力 5) 按操作系统
等等等
我构建了一个模拟版本,使用它查找某些关键字,例如 "price"、"cost"、"iphone 5" 等
构建我自己的 dictionary/array 关键字是实现此目标的最佳方式吗?
或者是否存在 dictionaries/APIs 来帮助解析我的用户的搜索查询和 return 适当的信息。
我猜你会想要这样的东西。
参见以下示例:
"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"