用于构建搜索引擎的自然语言处理关键字
Natural language processing keywords for building search engine
最近对NLP感兴趣,想做产品推荐的搜索引擎。 (其实我一直在想 Google/Amazon 的搜索引擎是如何建立起来的)
以亚马逊产品为例,我可以访问一个产品的所有"word"信息:
Product_Name Description ReviewText
"XXX brand" "Pain relief" "This is super effective"
通过应用 nltk
和 gensim
包,我可以轻松比较不同产品的相似性并提出建议。
但是还有一个问题我觉得很模糊:
如何为此类产品建立搜索引擎?
比如我觉得痛,想上网查药,我想输入"pain relief"
或者"pain"
,搜索结果应该是"XXX brand"
.
所以这听起来更像是关键字 extraction/tagging 的问题?这应该如何在 NLP 中完成?我知道 corpus 应该包含 all 但 single 单词,所以它就像:
["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 了解您可能遇到的问题,尤其是在针对短语同义词时。
最近对NLP感兴趣,想做产品推荐的搜索引擎。 (其实我一直在想 Google/Amazon 的搜索引擎是如何建立起来的)
以亚马逊产品为例,我可以访问一个产品的所有"word"信息:
Product_Name Description ReviewText
"XXX brand" "Pain relief" "This is super effective"
通过应用 nltk
和 gensim
包,我可以轻松比较不同产品的相似性并提出建议。
但是还有一个问题我觉得很模糊: 如何为此类产品建立搜索引擎?
比如我觉得痛,想上网查药,我想输入"pain relief"
或者"pain"
,搜索结果应该是"XXX brand"
.
所以这听起来更像是关键字 extraction/tagging 的问题?这应该如何在 NLP 中完成?我知道 corpus 应该包含 all 但 single 单词,所以它就像:
["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 了解您可能遇到的问题,尤其是在针对短语同义词时。