Nlp 构建搜索引擎的自然语言关键词处理

Nlp 构建搜索引擎的自然语言关键词处理,nlp,nltk,search-engine,gensim,corpus,Nlp,Nltk,Search Engine,Gensim,Corpus,我最近对NLP很感兴趣,我想建立一个产品推荐的搜索引擎。事实上,我一直在想Google/Amazon的搜索引擎是如何建立起来的 以亚马逊产品为例,我可以访问一个产品的所有word信息: Product_Name Description ReviewText "XXX brand" "Pain relief" "This is super effective" 通过应用nltk和gensim软件包,我可以轻松地比较不同产品的相似性并提出建议 但还有一个问题我觉得很模糊

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

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

Product_Name    Description      ReviewText
"XXX brand"    "Pain relief"    "This is super effective"
通过应用nltk和gensim软件包,我可以轻松地比较不同产品的相似性并提出建议

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

例如,如果我感到疼痛并想在线搜索药物,我想输入止痛或疼痛,其搜索结果应包括XXX品牌

这听起来更像是关键词提取/标记问题?在NLP中应该如何做到这一点?我知道语料库应该包含除了单个单词以外的所有单词,所以它就像:

["XXX brand" : ("pain", 1),("relief", 1)]
所以,如果我输入疼痛或缓解,我可以得到XXX品牌;但是我的止痛药呢

我可以想到在我的javascript中直接调用python,在基于浏览器的服务器上计算输入单词的相似度,并提出建议;但这是我能做到的吗

我仍然喜欢在后端建立非常大的关键字列表,存储在数据集/数据库中,并直接显示在搜索引擎的网页中


谢谢

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

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

这也是为什么所谓的NgramAnalyzer在搜索引擎中很流行,无论是Solr还是elastic。因为两者都是基于Lucene的,所以您应该看看

依赖于这两种框架,您可以使用同义词分析器,为每个单词添加您提供的同义词。
例如,如果希望添加同义词映射,可以添加relief=rememy,反之亦然。然后,两个引擎都将检索相关文档,无论您是搜索止痛药还是止痛药。但是,您可能还应该阅读您可能遇到的问题,特别是针对短语同义词时。

我认为您正在寻找的是信息检索IR简介。问答QA可能有点过头了。关于特定止痛药的文档很可能会谈论很多关于止痛药的内容,即使使用了不同的同义词,因此对止痛药的查询也应该给出这些内容。非常感谢。我的目的是建立一个对用户来说非常方便的网页,用户只需输入并弹出结果。所以另一个困扰我的问题是,如何在Github浏览器服务器中运行我的程序(比如python)?可行吗?我所能想到的是使用jQuery/Ajax在javascript和python.IMHO之间来回发送数据,如果您想要允许更多的用户,那么在您描述的框架中设置这样一个引擎是不可行的。查询处理和后端都需要更复杂的设置。