Porównanie wektorów

Gdy zamieniłeś coś na wektor to połowa pracy za Tobą. Teraz gdy chcesz to porównać wystarczy wykorzystać matematyczne własności tych wektorów. Tak też stwierdzę w mojej aplikacji: podobieństwo tekstów to podobieństwo wektorów.

Matematyczne podstawy

Nie będę oszukiwał. Nie znam się na tym, dlatego w większości polegam na opracowaniach moich kolegów. Bardzo podoba mi się ten blog, opisano tam czym fizycznie jest porównanie wektorów na płaszczyźnie dwóch wymiarów. Oczywiście wektory które wyprodukuję z tekstów mają dużą ilość wymiarów/własności bo każde unikalne słowo jest takim wymiarem. Optycznie można fajnie to zobaczyć też tutaj u pana Kima.

Poszukiwania

Gdzieś otrzymałem taki kod

Za pomocą tej funkcji bierzemy dwa teksty je ze sobą składamy. Tworzą się wielowymiarowe wektory porównywane przez kosinusowe podobieństwo.
Jak udało mi się to empirycznie sprawdzić dla podobnych wg mnie tekstów z Wikipedii dotyczących graczy piłkarskich i samochodów osobowych wykazywały podobieństwa rzędu > 0.1. Sprawdzisz to na moim notatniku tutaj. Dlatego niech to będzie moja granica podobieństwa. Przeprowadźmy testy.

Testy

Testy przeprowadzone na kilku tekstach wykazują poprawne zachowanie algorytmu. Teksty podobne są podobne 🙂

Implementacja

Zaimplementowano więc porównywaczkę jako Kalkulator SimilarityCalculator.

Wszedł on w skład kryteria porównywaczego:

Tak oto wyposażony mogę porównywać teksty podobne.