#similarity #metrics #overlap #user #measure #rank #parameters

bin+lib rbo

Rank-Biased Overlap (RBO):不定序列表的相似度度量

9 个版本

0.2.7 2022年8月16日
0.2.6 2022年4月5日
0.1.0 2022年4月4日

#5 in #overlap

每月 24 次下载

MIT 许可证

34KB
302 代码行

Rank-Biased Overlap (RBO) Crates.io Docs.rs MIT licensed

RBO 不定序排名相似度指标。

此代码实现了RBO指标,如以下文档所述

@article{wmz10:acmtois,
    author = "Webber, William and Moffat, Alistair and Zobel, Justin",
    title = "A similarity measure for indefinite rankings",
    journal = "ACM Transactions on Information Systems",
    year = {2010},
}

什么是RBO(摘自论文)

排名偏置重叠(RBO)度量基于一个简单的概率用户模型。这个度量基于(但不限于)一个简单的用户模型,其中用户比较两个排名在增量增加的深度处的重叠。用户有一定的耐心水平,在模型中参数化,并在检查每个深度后有一个固定的停止概率,作为伯努利随机变量建模。RBO然后计算为用户在比较两个列表时观察到的期望平均重叠。该度量接受一个指定用户持久性的参数 p,即用户在检查一个排名的重叠后继续考虑下一个排名重叠的概率。

(收敛的)尾部的权重之和决定了在全面评估中可能达到的最小和最大相似度分数之间的差距或 residual。在部分RBO评估中的最小、最大和残余分数在深度上都是单调的。一个点分数也可以 extrapolated

使用方法

通过 cargo install

cargo install rbo
./rbo -p 0.8 first_list.txt second_list.txt

或者作为库调用

use rbo::rbo;

let first = "abcdefghijklmnopqrstuvwxyz".chars().collect::<Vec<_>>();
let second = "kxcnarvmwyp".chars().collect::<Vec<_>>();
let rbo_val = rbo(&first,&second,0.99).expect("valid rbo");
println!("{}",rbo_val);

正确性

此代码通过William Webber的原始 rbo_ext 实现、另一个 rbo_minrbo_res 参考实现进行测试。

许可证

MIT

依赖项

~0.4–1MB
~21K SLoC