Вот один из подходов:
// extract the words from the sentences by splitting on white space
String[] sentence1Words = sentence1.toLowerCase().split("\\s+");
String[] sentence2Words = sentence2.toLowerCase().split("\\s+");
// make sets from the two word arrays
Set<String> sentence1WordSet = new HashSet<String>(Arrays.asList(sentence1Words));
Set<String> sentence2WordSet = new HashSet<String>(Arrays.asList(sentence2Words));
// get the intersection of the two word sets
Set<String> commonWords = new HashSet<String>(sentence1WordSet);
commonWords.retainAll(sentence2WordSet);
Это даст набор, содержащий строчные версии общих слов между двумя предложениями. Если он пуст - нет никакого сходства. Если вас не интересуют некоторые слова, такие как предлоги, вы можете отфильтровать их из окончательного набора схожести или, еще лучше, предварительно обработать свои предложения, чтобы сначала удалить эти слова.
Обратите внимание, что реальный (ie. полезно) реализация проверки на подобие обычно намного сложнее, так как вы обычно хотите проверить слова, которые похожи, но с небольшими расхождениями. Некоторые полезные отправные точки для изучения этого типа проверки сходства строк: расстояние Левенштейна и метафоны .
Обратите внимание, что существует дублирующая копия набора в приведенном выше коде, где я создаю набор commonWords, потому что пересечение выполняется на месте, так что вы можете повысить производительность, просто выполнив пересечение с предложением1WordSet, но я предпочел ясность кода производительности.