2017-04-21 12 views
2

私は2つのストリングを比較し、同様のフレーズと単語を選ぶプロジェクトに取り組んでいます。Javaで類似の単語やフレーズを検索するにはどうすればよいですか?

たとえば、以下の2つの質問をお読みください。

質問1:この小説の主人公は、セレステが運営するカフェで頻繁に食べる。彼は母親の葬儀に出席し、悲しみの兆候を示さない主人公と一緒に開く。 Meursaultは10ポイントでアルバートカミュスの小説で浜辺にアラブを撃つ?

質問2:この本の中のキャラクターは、友人のエマニュエルと消防車に乗り、しばしばセレステで昼食を食べる。それは主人公の母親の葬儀に始まり、母親は泣かない。 MebertaultがAlbert Camusによって、無意識のうちにアラブを撃って死ぬと非難されたこの小説に10点を挙げてください。

"Celeste"と小説が "葬儀で始まる"という事実を選ぶプログラムにしたい。どうすればこれを達成できますか?私はちょうどいくつかのリソースへのいくつかのポインタを探しています。 (私はJavaを使用しています)。

+1

チェックアウトこの記事に記述されレーベンシュタインアルゴリズム、:http://stackoverflow.com/questions/6087281/similarity-score-levenshtein –

+1

あなたは「近似文字列照合」と呼ばれている記述は何かを"ファジー検索"。それは正しい方向にあなたを指している可能性があります:) https://en.wikipedia.org/wiki/Approximate_string_matching –

答えて

0

あなたのケースでうまくいくことを望みます。それを試してみてください。

public void pringCompare(){ 

    String s = "This is a sample sentence."; 
    String s2 = "This is not the previous, but similar"; 
    String[] words = s.split("\\s+"); 
    for (int i = 0; i < words.length; i++) { 
     // You may want to check for a non-word character before blindly 
     // performing a replacement 
     // It may also be necessary to adjust the character class 
     words[i] = words[i].replaceAll("[^\\w]", ""); 
    } 

    List result = Arrays.asList(words).stream().filter(x->{ 
     System.out.println(s2+" "+x); 
     return s2.contains(x); 
     }).collect(Collectors.toList()); 
    result.forEach(System.out::println); 
} 
+0

これは、OPが求めているものではない正確な単語の一致です。 –

関連する問題