我正在尝试构建一个搜索引擎,允许我的用户使用自然语言命令进行搜索,就像Google Now一样。除此之外,我的搜索引擎稍微受到限制,因为它主要用于电子商务网站,并允许用户搜索某些设备。
我想提供的一些功能是:
1)允许用户按品牌进行搜索 2)按模型 3)按价格范围 4)通过3g / 4g的能力 5)按操作系统
等。等
我构建了一个模拟版本,用于查找某些关键字,例如" price"," cost"," iphone 5"等。
构建我自己的字典/关键字数组是实现此目的的最佳方法吗?
或者是否有现有的词典/ API来帮助解析用户的搜索查询并返回相应的信息。
答案 0 :(得分:3)
请参阅以下示例:
"找到一个4 gb ram和至少16 gb存储空间的Android手机。"
首先,您需要一个单词列表,您可以直接从输入中提取并插入搜索查询中。这是最简单的部分。
"找到一个安卓手机,内存为4 GB,存储空间至少为16 GB。"
接下来,输入中会有数字。
"找到一部带有 4 gb ram且至少 16 gb存储空间的Android手机。"
你已经提取过单词" android"和"电话"目前为止。现在你必须提取数字 - 以及它们之前和之后的2或3个单词。
"找到一个机器人手机,4 gb ram 和至少16 gb存储空间。"
您的下一步是弄清楚这些数字的含义。为此,您需要一个如下表所示的表:(让我们称之为表#34;属性")
将上表与您从输入中提取的数字周围的数字和单词进行比较:
4 ---电话,具有,的 GB 强>,<强> RAM 强> 6 ---在,至少,的 GB,存储强>
通过使用合适的算法和属性表,您可以轻松找出数字的含义。只需将每个数字与每个属性进行比较 - 首先检查数字是否属于属性的范围,然后检查单词是否输入中的数字与属性的标记匹配。 既然你知道每个数字的含义(4 = ram,6 =存储),你必须检查输入中的不等式。
检查不平等:
如果有任何短语,例如&#34; 至少&#34;,&#34; 不超过&#34;,&#34 ; 最多&#34;等等,那你就不平等了。在我们的例子中,你可以在4号附近找不到这样的词,但你可以找到术语&#34;至少&#34;数字6附近。这意味着用户想要一部4 gb ram的电话(使用==),但内部存储空间可能大于或等于6 gb(使用&gt; =)。
另请注意,如果您无法将某个号码与某个物业相关联,则该号码最有可能是该价格。
您可以添加更多功能..例如,让用户按属性的递增/递减顺序对结果进行排序。例如:
&#34;找到一个4 gb ram和至少16 gb存储空间的Android手机。显示便宜 &#34;
答案 1 :(得分:1)
我想你会想要这样的东西。