首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于NLP和elasticsearch的语义搜索

基于NLP和elasticsearch的语义搜索
EN

Stack Overflow用户
提问于 2012-01-08 04:08:53
回答 7查看 32.4K关注 0票数 66

我正在尝试使用elasticsearch作为搜索服务器,我的任务是构建一个“语义”搜索功能。从像“我有一个爆裂的管道”这样的短文本短语中,系统应该推断用户正在搜索一个管道工,并返回在elasticsearch中索引的所有管道工。

这可以直接在elasticsearch这样的搜索服务器中完成吗,或者我是否必须使用自然语言处理(NLP)工具,例如Maui Indexer。我手头的任务文本分类的确切术语是什么?尽管给定的文本非常短,因为它是搜索短语。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-01-08 10:28:35

可能有几种方法具有不同的实现复杂性。

最简单的方法是创建list of topic (如管道),附加bag of words (如“”),通过大多数关键字识别搜索请求,并仅在指定的主题中搜索(您可以在弹性搜索文档中添加字段topic,并在搜索过程中使用+将其设置为必填项)。

当然,如果你有很多文档,手动创建主题列表和词袋是非常耗时的。您可以使用机器学习自动执行某些任务。基本上,只需测量单词和/或文档之间的距离就可以自动发现主题(例如,通过data clustering),并将查询分类到这些主题之一。这些技术的混合也可能是一个很好的选择(例如,您可以手动创建主题并将初始文档分配给它们,但使用分类来进行查询分配)。看看维基百科在上的文章,以更好地理解这个想法。还请注意data clusteringdocument classification上的两篇链接文章。是的,通过这种方式,Maui Indexer可能会成为很好的助手工具。

最后,您可以尝试构建一个引擎来“理解”短语的含义(而不仅仅是使用词频),并搜索适当的主题。最有可能的是,这将涉及自然语言处理基于本体的知识库。但事实上,这个领域仍在积极研究中,如果没有以前的经验,你将很难实现这样的东西。

票数 72
EN

Stack Overflow用户

发布于 2016-11-22 02:52:56

您可能想探索一下https://blog.conceptnet.io/2016/11/03/conceptnet-5-5-and-conceptnet-io/

它结合了semantic networksdistributional semantics

当大多数开发人员需要单词嵌入时,他们第一个也可能是唯一的地方是word2vec,这是谷歌的一个神经网络算法,它从分布语义计算单词嵌入。也就是说,它学习从周围的单词中预测句子中的单词,而嵌入是做出最佳预测的单词的表示。但是,即使在数‘t的文本之后,您也无法仅从分布语义中了解词义的某些方面。

一些结果

ConceptNet Numberbatch word embeddings内置于ConceptNet 5.5中,比任何以前的系统都能更好地解决这些ConceptNet类比问题。它获得了56.4%的问题正确。之前最具可比性的系统,特尼的SuperSim (2013),获得了54.8%的支持率。在SAT的类比测试中,我们越来越接近“人类水平”的表现--虽然特别聪明的人当然可以答对更多的问题,但大学申请者的平均答题率为57.0%。

票数 4
EN

Stack Overflow用户

发布于 2019-01-25 07:13:32

语义搜索基本上是有意义的搜索。Elasticsearch默认使用JSON序列化,要将有意义的搜索应用于JSON,您需要扩展它以通过JSON-LD支持边缘关系。然后,您可以将您的语义分析应用于JSON-LD模式,以消除单词、管道工实体和爆裂管道上下文作为主语、谓语、宾语关系的歧义。Elasticsearch的语义搜索支持非常弱,但你可以使用分面搜索和词袋来绕过它。您可以为管道术语的同义词库架构建立索引,然后对句子中的文本短语进行语义匹配。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8772692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档