【问题标题】:Natural language processing keywords for building search engine用于构建搜索引擎的自然语言处理关键字
【发布时间】:2017-11-20 04:46:58
【问题描述】:

我最近对 ​​NLP 很感兴趣,想建立一个搜索引擎来进行产品推荐。 (其实我一直在想 Google/Amazon 的搜索引擎是怎么建立起来的)

以亚马逊产品为例,在这里我可以访问关于一个产品的所有“单词”信息:

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

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

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

例如,如果我感到疼痛,想在网上搜索药物,我想输入"pain relief""pain",搜索结果应该包括"XXX brand"

所以这听起来更像是关键字提取/标记问题?在 NLP 中应该如何做到这一点?我知道 corpus 应该包含 all单个 单词,所以就像:

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

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

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

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

谢谢!

【问题讨论】:

  • 我认为您正在寻找的是对信息检索 (IR) 的介绍。问答(QA)可能有点过头了。即使使用不同的措辞(同义词),关于特定止痛药的文档也很可能会大量谈论缓解疼痛,因此查询“缓解疼痛”也应该如此。

标签: nlp nltk search-engine gensim corpus


【解决方案1】:

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

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

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

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

【讨论】:

  • 非常感谢。我的目的是为用户设置一个非常方便的网页,他们只需要输入并弹出结果。所以另一个困扰我的问题是,我如何在 Github 浏览器服务器中运行我的程序(比如 python)?可行吗?我能想到的是使用 jQuery/Ajax 在 javascript 和 python 之间来回发送数据。
  • 恕我直言,如果您想允许超过少数用户,在您描述的框架中设置这样的引擎是不可行的。查询处理和后端都需要更复杂的设置。
猜你喜欢
  • 1970-01-01
  • 2011-06-24
  • 2012-03-04
  • 1970-01-01
  • 2011-09-21
  • 1970-01-01
  • 2016-11-17
  • 1970-01-01
  • 2011-08-24
相关资源
最近更新 更多