用于构建搜索引擎的自然语言处理关键字

时间:2017-06-17 14:15:59

标签: nlp nltk search-engine gensim corpus

我最近对NLP感兴趣,并希望建立搜索引擎以进行产品推荐。 (实际上我总是想知道如何建立谷歌/亚马逊的搜索引擎)

以亚马逊产品为例,我可以访问所有" word"有关一种产品的信息:

Product_Name    Description      ReviewText
"XXX brand"    "Pain relief"    "This is super effective"

通过应用nltkgensim套餐,我可以轻松比较不同产品的相似性并提出建议。

但这是另一个我觉得非常模糊的问题: 如何为这类产品构建搜索引擎?

例如,如果我感到痛苦并希望在线搜索药物,我想输入"pain relief""pain",其搜索结果应包含{{1} }。

所以这听起来更像关键字提取/标记问题?如何在NLP中完成?我知道语料库应该包含所有单个字词,所以它就像:

"XXX brand"

因此,如果我输入["XXX brand" : ("pain", 1),("relief", 1)] "pain",我可以获得"relief";但我搜索"XXX brand"怎么样?

我可以想出在我的javascript中直接调用python来计算基于浏览器的服务器上输入词"pain relief"的相似性并提出建议;但那种可行吗?

我仍然希望在后端建立非常大的关键字列表,存储在数据集/数据库中,并直接在搜索引擎的网页中可视化。

谢谢!

1 个答案:

答案 0 :(得分:1)

即使这不能提供完整的操作方法,但有两件事可能会有所帮助。

首先,重要的是要注意谷歌只处理单数词而不是ngram。 或多或少每个NLP问题以及因此从文本中检索信息都需要处理ngrams。这是因为短语比单数标记更具表现力和信息。

这就是为什么所谓的 NGramAnalyzers 在搜索引擎中很受欢迎,无论是Solr还是弹性的。由于两者都基于Lucene,因此您应该看看here

依赖于任一框架,您可以使用同义词分析器为每个单词添加您提供的同义词。 例如,您可以在同义词映射中添加relief = remedy(反之亦然)。然后,无论您是否搜索“疼痛缓解”或“疼痛补救”,两个引擎都将检索相关文档。但是,您可能还应该阅读this post有关您可能遇到的问题,尤其是在针对短语同义词时。