1. ホーム
  2. java

[解決済み] Javaによる類似文字列比較

2022-06-21 16:55:28

質問

複数の文字列を互いに比較し、最も似ているものを見つけたいのです。 どの文字列が他の文字列とより似ているかを返すようなライブラリ、メソッド、またはベストプラクティスがあるかどうか疑問に思っています。 たとえば

  • "The quick fox jumped" -> "The fox jumped"
  • "The quick fox jumped" -> "The fox"

この比較では、前者が後者よりも似ていると返されるでしょう。

というようなメソッドが必要なんでしょうね。

double similarityIndex(String s1, String s2)

そんなものがどこかにあるのだろうか。

編集:なぜ私はこれをやっているのでしょうか?私は、MS Project ファイルの出力と、タスクを処理するいくつかのレガシー システムの出力を比較するスクリプトを作成しています。 レガシー システムのフィールド幅は非常に限られているため、値が追加されるとき、説明は省略されます。 生成されたキーを得るために、MS Projectのどのエントリーがシステム上のエントリーと類似しているかを見つける半自動化された方法が欲しいのです。 それはまだ手動でチェックされなければならないので、欠点がありますが、それは多くの仕事を節約するでしょう。

どのように解決するのですか?

そうですね、よく知られたアルゴリズムがたくさんあります。

  • コサイン類似度
  • ジャカード類似度
  • ダイス係数
  • マッチングの類似性
  • オーバーラップ類似度
  • などなど

良いまとめ("Sam's String Metrics") はここで見つけることができます。 (元のリンクが切れているため、Internet Archive にリンクしています)

また、これらのプロジェクトもチェックしてください。