Shotnest

Shotnest · ライブラリ

空白が繰り返される文章を比較する

空白が二つあるRed blueはRed blueと完全には一致しませんが、どちらもred blueにまとまるので、正規化後の一致は「はい」、単語の重なりは1です。

同じさの三つの段階

「完全に一致」は元の文字列を一文字ずつ比べるので、空白が一つ多いだけでRed blueはRed blueと別物になります。「正規化後に一致」は、まず小文字にしてアクセントをそろえ、次に連続する空白、タブ、改行をそれぞれ一つの空白に置き換え、両端を切り詰めます。どちらの入力もred blueになります。続いて「単語の重なり」が異なる語を比べ、ここでは集合が同一なので1になります。

同じまとめ方で、ほかの組も説明できます。Red、タブ、blue、改行のように、タブと末尾の改行がある場合も、正規化するとred blueになります。Caféとcafeも一致します。空白をまとめる前に、アクセントの正規化が行われるからです。

検索で使われる文字の表もここで適用されるので、空白をまとめる前に全角の文字と全角スペースが変換されます。RED BLUEは正規化するとred blueになり、red blueと一致します。

入力値

1つ目のテキスト
Red blue
2つ目のテキスト
Red blue

結果

完全に一致
いいえ
正規化後に一致
はい
単語の重なり
1
1つ目のテキストだけにある
利用できません
2つ目のテキストだけにある
利用できません

テキストの重なりだけでは、2つの画像や文書が同一だとは証明できません。

空白が意味を持つかを判断する

  1. まず「完全に一致」を読みます。「いいえ」なら、少なくとも一文字が違います。
  2. 次に「正規化後に一致」を読みます。「はい」なら、違いは大文字小文字、アクセント、空白のどれかでした。
  3. コード、詩、表のように、レイアウトが意味を持つかどうかを考えます。
  4. 意味を持つなら、抽出したテキストではなく元のスクリーンショットを比べます。
Red、タブ、blue、改行とred blue · 正規化後
はい
Caféとcafe · 完全
いいえ
Caféとcafe · 正規化後
はい

空白をまとめるときの間違い

テキストが同じでも、画像は違うかもしれない

正規化後の一致が表すのは、抽出された語だけです。テキストが同じ二枚のスクリーンショットでも、レイアウトや色、文字認識が拾えなかった細部が違うことがあります。

Shotnestのクリーンアップでも、テキストの確認には英字だけの語が使われるので、数字は無視されます。ほぼ同じ二つの画面を見分けるのは、画像のフィンガープリントです。