2

我正在将一个项目从 solr 转换为 cloudsearch,并且在对文档和网络进行了相当长的搜索后,我找不到解决方法。我希望其他人可以提供帮助。

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

给定一个索引文档——比如维基百科的霸王龙页面:

与其他暴龙科动物一样,暴龙是一种双足食肉动物,有一个巨大的头骨和一条又长又重的尾巴。

然后是业余文件:

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

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

carnivore: 2
tyrannosaurus: 1

而且我更倾向于在维基百科文章中找到“食肉动物”这个词,而不是“暴龙”。

在 solr 中,我正在使用“^”运算符增强查询,例如“carnivore^2”。

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

有任何想法吗?

4

1 回答 1

1

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

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

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

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

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

于 2013-06-12T02:49:20.563 回答