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

Natural language processing keywords for building search engine

最近对NLP感兴趣,想做产品推荐的搜索引擎。 (其实我一直在想 Google/Amazon 的搜索引擎是如何建立起来的)

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

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

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

但是还有一个问题我觉得很模糊: 如何为此类产品建立搜索引擎?

比如我觉得痛,想上网查药,我想输入"pain relief"或者"pain",搜索结果应该是"XXX brand".

所以这听起来更像是关键字 extraction/tagging 的问题?这应该如何在 NLP 中完成?我知道 corpus 应该包含 allsingle 单词,所以它就像:

["XXX brand" : ("pain", 1),("relief", 1)]

因此,如果我输入 "pain""relief",我可以得到 "XXX brand";但是我搜索了 "pain relief"?

呢?

我想出了在我的 javascript 中直接调用 python 来计算基于浏览器的服务器上输入词 "pain relief" 的相似度并进行推荐的想法;但这是可行的吗?

我还是喜欢在后端建立非常大的关键字列表,存储在datasets/database中,直接在搜索引擎的网页中可视化。

谢谢!

尽管这没有提供完整的操作方法答案,但有两件事可能会有所帮助。

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

这也是为什么所谓的 NGramAnalyzers 在搜索引擎中流行的原因,无论是 Solr 还是 Elastic。由于两者都是基于 Lucene,你应该看看 here.

依靠任一框架,您可以使用同义词分析器,为每个词添加您提供的同义词。 例如,您可以将 relief = remedy(如果您愿意,反之亦然)添加到同义词映射中。然后,无论您搜索 "pain relief" 还是 "pain remedy",两个引擎都会检索相关文档。但是,您可能还应该阅读 this post 了解您可能遇到的问题,尤其是在针对短语同义词时。