我試圖腳本骰子的係數,但我有一點與陣列相交的問題。如何返回具有重複元素的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