1

これらの文字列はすべて同じ映画を参照しています。それらを比較して類似性を確認するにはどうすればよいですか?

これらすべての文字列を外部ソースから取得します。

  • スパイダーマン

  • スパイダーマン

  • スパイダーマン 1

  • スパイダーマン

  • スパイダーマン

  • 映画: スパイダーマン

  • 映画:スパイダーマン

    私にとって、"Spider man 1"とは とと"Spider man 2"はまったく異なる 2 つの文字列です。"spider-man""spider man"

これらすべての文字列を比較すると、「true」を返す関数が必要です

4

3 に答える 3

2

Smith-Watermanアルゴリズムはあなたにいくつかのポイントを与えることができると思います。

于 2012-11-21T22:56:46.370 に答える
1

Smith-Watermanアルゴリズムまたは他の文字列類似性アルゴリズムを使用します。1つの可能性は、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-21T22:56:59.710 に答える
0

レーベンシュタイン距離は、ある文字列を別の文字列に変換するために必要な変更の数を計算できます。

于 2012-11-21T23:04:02.747 に答える