我试图脚本骰子的系数,但我有一点与阵列相交的问题。如何返回具有重复元素的Ruby数组交集? (问题与骰子系数的双字母组)
def bigram(string)
string.downcase!
bgarray=[]
bgstring="%"+string+"#"
bgslength = bgstring.length
0.upto(bgslength-2) do |i|
bgarray << bgstring[i,2]
end
return bgarray
end
def approx_string_match(teststring, refstring)
test_bigram = bigram(teststring) #.uniq
ref_bigram = bigram(refstring) #.uniq
bigram_overlay = test_bigram & ref_bigram
result = (2*bigram_overlay.length.to_f)/(test_bigram.length.to_f+ref_bigram.length.to_f)*100
return result
end
的问题是,作为&删除重复,我得到的东西是这样的:
string1="Almirante Almeida Almada"
string2="Almirante Almeida Almada"
puts approx_string_match(string1, string2) => 76.0%
它应该返回100
的uniq的方法指甲,但没有信息丢失,这可能会在我工作的特定数据集中带来不需要的匹配。
我怎样才能与所有重复的交集包括在内?
我很欣赏皮尔。你发布的代码做的是trick =)ty – Rui 2009-10-21 13:10:12