#string-similarity #string #similarity #nlp #language #word

nightly three-set-compare

使用三集合算法比较两个字符串的相似度

2 个版本

0.1.1 2019年1月10日
0.1.0 2019年1月9日

#20 in #string-similarity

自定义许可证

11KB
172

关于

Rust 实现的三集合比较算法,该算法对单词排序和拼写错误稳定。最佳使用案例是比较新闻标题,例如。不要用于超过255个字符的数据。

主要思想是找到属于两个单词都有的字母集合中的字符。

A = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
S1 = {s1, s2, s3 ... sn}
S2 = {s1, s2, s3 ... sm}

S1 ⊆ A, S2 ⊆ A

Sim(S1, S2) = ||S1 ∩ A| - |S2 ∩ A||/|S1| + |S2|

目前尚未优化,但未来应该非常便宜。

基准测试

MacBook Pro (15英寸,2017),2.9 GHz Intel Core i7

test tests::bench_similarity ... bench: 30,278 ns/iter (+/- 2,312)

用法

use three_set_compare::ThreeSetCompare;
let comparator = ThreeSetCompare::new();

// 1.0
let similarity = comparator.similarity("First phrase here!", "Here firts phrase");

许可证

MIT

依赖

~3MB
~78K SLoC