質問: 22%でしょうか? ・また、この場合、「天下」から見た「天下一武道会へ出場してみたいけど」も、「天下一武道会へ出場してみたいけど」から見た「天下」の類似度も同じ? > > 天下 > > 天下一武道会へ出場してみたいけど > > > --- その他、どんな「算出方法」や「考え方」があるか知りたいです
回答: 定番といえるようなアルゴリズムがあるのかどうか、私が検索した限りでは見つけられませんでした。「レーベンシュタイン距離」を用いるなら、想定される最大コストをmc,レーベンシュタイン距離をldとして、 **類似度(%) = (mc-ld)/mc * 100** とすると、 **'天下':'天一'->50% '天下':'天下一武道会へ出場してみたいけど'->12% '天下一武道会へ出場してみたいけど':'天下'->12% '天下':'武道会へ出場してみたいけど'->0% '天一':'天下一武道会へ出場してみたいけど'->12%** なんて結果になります。 レーベンシュタイン距離の計算はネットで見つけたJavaScript版のIterative with full matrix相当のもの、「想定される最大のコスト」は`mc = Math.max(str1.length, str2.length)`で計算しています。(どちらもサロゲートペアの文字は考慮されていません。) どなたかが、定番のアルゴリズムを見つけてこられた場合、単なるお茶濁しとなりますが、参考まで。