根据输入中的术语频率提升云搜索结果

时间:2013-05-26 01:50:39

标签: amazon-cloudsearch

我正在将一个项目从solr转换为cloudsearch,并且遇到一个问题,经过长时间搜索文档和网络后,我无法找到解决方法。我希望别人可以提供帮助。

我无法描述真实的细节,但我能找到的最接近我的问题的例子是抄袭检测。想象一下,已经将一堆已发布的文档加载到cloudsearch中,然后将业余文档作为查询来查看是否存在匹配。

给出一个索引文档 - 比如维基百科的暴龙页面:

  

与其他霸王龙一样,霸王龙是一种双足食肉动物   一条巨大的头骨,由长而重的尾巴平衡。

然后是业余文件:

  

我是食肉动物,我喜欢霸王龙,因为他也是一只双足食肉动物。

由于对项目很重要的原因,我正在创建有趣单词的分布,而不是用全文查询,例如:

carnivore: 2
tyrannosaurus: 1

我想更多地偏向于在维基百科文章中找到“食肉动物”一词,而不是“霸王龙”。

在solr中,我使用“^”运算符来增强查询,例如“食肉动物^ 2”。

根据我的发现,cloudsearch确实提升为“排名表达式”,但我没有发现任何类似于我的问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

寻找Zipf定律(也有类似的称为Zipf-Mandelbrot定律,但更难实现)基本上它代表任何语言(特别是在每个特定领域),字频的分布服从Zipfs分配。您可以构建一个词频列表,将其排序以适应zipf分布,您可以从中调整分布参数并推断术语相关性。

根据您的问题,我了解到您正在实施某种类型的td-idf,这比这更先进。不幸的是,我认为你的问题更多的是计算机科学/语言问题,它需要的解释比我在这篇文章中可以写的更多。

我不使用cloudsearch(我也在自然语言处理项目中工作,但我不使用cloudsearch)但是查看我发现了http://docs.aws.amazon.com/cloudsearch/latest/developerguide/rankexpressions.html

您可以使用这些操作数构建zipf分布(或其任何自定义/风格),并为您的排名定义阈值。

这不是一个“干净的代码”答案,但我希望它会对你有帮助。