所有这些字符串都指向同一部电影。我怎样才能比较它们的相似性呢?
我从外部来源获得所有这些字符串:
"Spider man 1"和"Spider man 2"是两个字符串,与"spider-man"和"spider man"完全不同。我想要一个函数,如果它比较所有这些字符串,它将返回"true“
发布于 2012-11-21 22:56:46
我认为Smith-Waterman算法可以给你一些分数。
发布于 2012-11-21 22:56:59
使用Smith-Waterman算法或其他字符串相似算法.一种可能是使用FuzzBall。
require 'fuzz_ball'
THRESHOLD_SCORE = 0.75
MATCHER = FuzzBall::Searcher.new [ 'Spider man' ]
def complies?( str )
matchdata = MATCHER.search str
return false if matchdata.nil? or matchdata.empty?
score = matchdata[0][:score]
puts "score is #{score}"
score > THRESHOLD_SCORE
end
complies? 'man spider'
#=> score is 0.8
#=> true发布于 2012-11-21 23:04:02
Levenshtein距离可以计算出将一个字符串转换为另一个字符串所需的更改数。
https://stackoverflow.com/questions/13503384
复制相似问题