所有这些字符串都指的是同一部电影。如何比较它们以检查相似性?
我从外部来源获取所有这些字符串:
胶片:蜘蛛侠
对我来说,"Spider man 1"
和"Spider man 2"
是两个完全不同于"spider-man"
和"spider man"
的字符串。
我想要一个函数,如果它比较所有这些字符串,它将返回“true”
答案 0 :(得分:2)
我认为Smith-Waterman algorithm可以给你一些积分。
答案 1 :(得分:1)
使用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
答案 2 :(得分:0)
Levenshtein distance可以计算将一个字符串转换为另一个字符串所需的更改次数。