I would use, for example, Diff :: LCS:
>> require "diff/lcs" >> seq1 = "lorem ipsum dolor sit amet consequtor".split(" ") >> seq2 = "lorem ipsum dolor amet sit consequtor".split(" ") 1.9.3-p194 :010 > Diff::LCS.diff(seq1, seq2).length => 2
It uses the longest general subsequence algorithm (the method of using LCS to get diff is described on the wiki page ).
Yehuda katz
source share