Для домашнего задания мы должны превратить метод basicCompare
во что-то, что позволит сравнить два текстовых документа и посмотреть, имеют ли они сходные темы. По сути, программа удалит все слова длиной менее пяти символов и оставляет нам списки. Мы должны сравнить списки и сделать так, чтобы при достаточном использовании слов в двух документах (скажем, сходство на 80%) метод возвращает true и сообщает «match».
Тем не менее, я застрял прямо о том, где все комментарии в нижней части метода. Я не могу придумать или найти способ сравнить два списка и выяснить, какой процент слов в обоих списках. Возможно, я думаю об этом неправильно, и мне нужно отфильтровать слова, которых нет в обоих списках, а затем просто посчитать, сколько слов осталось. Параметры для определения того, соответствуют ли входные документы полностью, оставлены на наше усмотрение, так что их можно установить так, как я хочу. Если вы, добрые дамы и господа, могли бы просто указать мне правильное направление, даже на страницу документа Java по определенной функции, я уверен, что смогу пройти остаток пути. Мне просто нужно знать, с чего начать.
import java.util.Collections;
import java.util.List;
public class MyComparator implements DocumentComparator {
public static void main(String args[]){
MyComparator mc = new MyComparator();
if(mc.basicCompare("C:\\Users\\Quinncuatro\\Desktop\\MatchLabJava\\LabCode\\match1.txt", "C:\\Users\\Quinncuatro\\Desktop\\MatchLabJava\\LabCode\\match2.txt")){
System.out.println("match1.txt and match2.txt are similar!");
} else {
System.out.println("match1.txt and match2.txt are NOT similar!");
}
}
//In the basicCompare method, since the bottom returns false, it results in the else statement in the calling above, saying they're not similar
//Need to implement a thing that if so many of the words are shared, it returns as true
public boolean basicCompare(String f1, String f2) {
List<String> wordsFromFirstArticle = LabUtils.getWordsFromFile(f1);
List<String> wordsFromSecondArticle = LabUtils.getWordsFromFile(f2);
Collections.sort(wordsFromFirstArticle);
Collections.sort(wordsFromSecondArticle);//sort list alphabetically
for(String word : wordsFromFirstArticle){
System.out.println(word);
}
for(String word2 : wordsFromSecondArticle){
System.out.println(word2);
}
//Find a way to use common_words to strip out the "noise" in the two lists, so you're ONLY left with unique words
//Get rid of words not in both lists, if above a certain number, return true
//If word1 = word2 more than 80%, return true
//Then just write more whatever.basicCompare modules to compare 2 to 3, 1 to 3, 1 to no, 2 to no, and 3 to no
//Once you get it working, you don't need to print the words, just say whether or not they "match"
return false;
}
public boolean mapCompare(String f1, String f2) {
return false;
}
}