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

时间:2015-05-26 09:39:10

标签: nlp search-engine keyword voice-recognition naturallyspeaking

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

我想提供的一些功能是:

1)允许用户按品牌进行搜索 2)按模型 3)按价格范围 4)通过3g / 4g的能力 5)按操作系统

等。等

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

构建我自己的字典/关键字数组是实现此目的的最佳方法吗?

或者是否有现有的词典/ API来帮助解析用户的搜索查询并返回相应的信息。

2 个答案:

答案 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;属性")

enter image description here

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

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)

http://www.nltk.org/

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