Сравнение черепицы для почти повторного обнаружения
Я работаю над изменяющимся кодом для сравнения почти дубликатов. Я немного застрял в коде сравнения. Это моя грубая попытка до сих пор.
//shingles are already hashed integers and I'm working on the evaluation to true via the float similar parameter.
public static boolean compareShingles(float similar, CompareObject comp1, CompareObject comp2) {
int intersections = 0;
if(comp1.getShingle().size()>=comp2.getShingle().size()){
for(int i = 0; i < comp1.getShingle().size(); i++){
if(comp1.getShingle().get(i).equals(comp2.getShingle().get(i))){
intersections++;
}
}
}
else{
for(int i = 0; i < comp2.getShingle().size(); i++){
if(comp2.getShingle().get(i).equals(comp1.getShingle().get(i))){
intersections++;
}
}
}
return true; //not functional still working on when to return true
}
Я немного застрял в том, стоит ли сравнивать эту черепицу 1-1 в массиве или если мне нужно сравнить одну черепицу со всеми черепицами в цикле.
Например, если бы я сравнивал каждую гальку с каждой другой, то эти документы были бы идентичны...
{blah blah blah, Once upon a, time blah blah}
{Once upon a, time blah blah, blah blah blah}
Если бы я делал позиционное сравнение на тех же документах, то позиция 1 была бы "бла-бла-бла" по сравнению с "Однажды а", и это вернуло бы false.
Я думаю, что цикл будет более интенсивным процессом, но это может быть правильным вариантом. Мысли?
1 ответ
Порядок не имеет значения..
Вы в основном делаете наборы гальки и сравниваете их с Жаккар Сходством. Это помогает иметь хэш, чтобы автоматически выбрасывать дубликаты черепицы. Просто посчитайте совпадения между каждым документом и выясните, сколько нужно сопоставить, чтобы считать их похожими.
http://ethen8181.github.io/machine-learning/clustering_old/text_similarity/text_similarity.html