Jak Sprawdzić Podobieństwo Tekstów (i Wykryć Duplikat Treści)
Podobieństwo cosinusowe dwóch tekstów to liczba od 0% do 100%, która mówi, jak duża część słownictwa jest wspólna dla obu tekstów. Wynik 74% oznacza, że teksty dzielą zdecydowaną większość znaczących słów, czyli prawdopodobnie to ten sam materiał tylko lekko przeredagowany. Wynik 6% oznacza, że słownictwo jest niemal całkowicie różne, nawet jeśli oba teksty opisują dokładnie to samo.
Jak w ogóle liczony jest ten wynik
Mechanizm jest prostszy, niż brzmi nazwa “podobieństwo cosinusowe”. Narzędzie bierze oba teksty, zamienia wszystko na małe litery, usuwa znaki interpunkcyjne i dzieli tekst na pojedyncze słowa. Potem odrzuca słowa jednoliterowe oraz najczęstsze słowa funkcyjne danego języka (spójniki, przyimki, zaimki), bo one występują wszędzie i nic nie mówią o treści. Z tego, co zostaje, powstaje dla każdego tekstu lista: słowo i liczba jego wystąpień.
Mając dwie takie listy, narzędzie liczy iloczyn skalarny obu wektorów i dzieli go przez iloczyn ich długości. To właśnie jest podobieństwo cosinusowe. W praktyce efekt jest taki: im więcej tych samych słów pojawia się w podobnych proporcjach w obu tekstach, tym wynik bliższy 100%. Im mniej wspólnych słów, tym bliżej 0%. To narzędzie liczy tylko dosłowne pokrywanie się słownictwa. Nie rozumie znaczenia zdań, nie wie, że “tani” i “przystępny cenowo” znaczą to samo. Liczy tylko, czy dwa teksty używają tych samych słów.
Warto dodać jedną techniczną uwagę: lista słów funkcyjnych, którą narzędzie odrzuca, obecnie obejmuje tylko kilka języków (między innymi angielski, portugalski, hiszpański, francuski i niemiecki). Przy tekstach w innych językach te krótkie słowa zostają w wektorze, co zwykle ma niewielki wpływ na wynik, ale warto o tym wiedzieć.
Przykład 1: dwa przeredagowane opisy produktu
Klasyczny scenariusz w SEO: masz jeden opis produktu i chcesz opublikować drugi, nieco inny, żeby uniknąć duplikatu. Wklej te dwa teksty (angielskie, bo to demo działa niezależnie od języka, a angielski daje wynik, który można łatwo zweryfikować):
Tekst A: “Buy affordable wireless bluetooth headphones with active noise cancellation and thirty hour battery life. Free shipping on every order today.”
Tekst B: “Shop cheap wireless bluetooth headphones featuring active noise cancellation and a thirty hour battery. Enjoy free shipping on every order this week.”
Wynik: 74% podobieństwa, czyli pasmo “wysokie podobieństwo”.
| Słowa | |
|---|---|
| Wspólne (13) | active, battery, bluetooth, cancellation, every, free, headphones, hour, noise, order, shipping, thirty, wireless |
| Tylko w tekście A (4) | affordable, buy, life, today |
| Tylko w tekście B (5) | cheap, enjoy, featuring, shop, week |
Ktoś przeczytałby te dwa opisy i pomyślałby, że to dwie osobne treści, bo kilka słów na początku i na końcu się różni. Ale pod spodem dzielą trzynaście z osiemnastu unikalnych znaczących słów. Narzędzie to wychwytuje: 74% to wynik powyżej progu “umiarkowane” i tuż przy własnym progu “wysokie” tego narzędzia. To dokładnie ten typ duplikacji, który Google potrafi rozpoznać jako treść przepisaną na szybko, a nie napisaną od nowa.
Przykład 2: ten sam tekst, ale sparafrazowany od zera
Teraz coś przeciwnego. Weźmy ten sam tekst A co wyżej (nazwijmy go tekstem C, bo to identyczna treść) i zestawmy go z tekstem D, który opisuje dokładnie ten sam produkt, ale zupełnie innymi słowami:
Tekst D: “Our over ear audio devices block outside sound automatically and last more than a full day per charge, and delivery costs nothing no matter what you order.”
Wynik: 6% podobieństwa, pasmo “niskie podobieństwo”. Jedyne wspólne słowo to “order”.
Merytorycznie tekst D mówi niemal to samo co tekst A: słuchawki, które blokują dźwięk z otoczenia, bateria starczająca na cały dzień, darmowa dostawa. Człowiek czytający oba teksty powie, że to ta sama treść przepisana innymi słowami. Narzędzie widzi to inaczej, bo liczy tylko dosłowne pokrywanie się słów, a nie znaczenie, więc wynik spada do 6%.
To jest kluczowy wniosek z obu przykładów razem. Wysoki wynik (jak 74% w przykładzie 1) to mocny sygnał realnego pokrywania się treści. Niski wynik (jak 6% w przykładzie 2) nie oznacza jednak, że treść jest oryginalna, oznacza tylko, że słownictwo jest inne. Narzędzie dobrze wychwytuje leniwe, pospieszne kopiowanie z drobnymi zmianami. Nie da się go używać jako wykrywacza plagiatu przeciwko tekstowi, który ktoś naprawdę sparafrazował.
Progi wyniku
| Wynik | Etykieta | Co to zwykle oznacza |
|---|---|---|
| 70% i więcej | Wysokie podobieństwo | Teksty dzielą większość znaczących słów, wygląda na tę samą treść tylko lekko zmienioną |
| 40% do 69% | Umiarkowane podobieństwo | Wyraźne pokrywanie się tematu i słownictwa, ale też sporo różnic |
| 1% do 39% | Niskie podobieństwo | Niewiele wspólnych słów, teksty prawdopodobnie mówią o czym innym albo są napisane zupełnie innym językiem opisowym |
| 0% | Brak podobieństwa | Żadne znaczące słowo się nie powtarza |
Sprawdź swój własny tekst
Wklej dwa dowolne fragmenty poniżej i zobacz wynik na żywo, dokładnie tak samo jak w przykładach powyżej. Wszystko liczy się w przeglądarce, żaden tekst nie jest wysyłany na żaden serwer.
Wprowadź oba teksty powyżej, aby obliczyć podobieństwo
Podobieństwo cosinusowe TF · słowa stop usunięte · działa w przeglądarce
Częste błędy i pułapki
Traktowanie tego jako prawdziwego modelu embeddingowego. To narzędzie liczy zwykłe pokrywanie się słów, a nie rozumie znaczenia zdań tak, jak robi to prawdziwy model semantyczny. Przykład 2 pokazuje to najlepiej: tekst mówiący dokładnie to samo, ale innymi słowami, dostaje wynik 6%, bo narzędzie nie ma pojęcia, że “block outside sound” i “noise cancellation” opisują tę samą funkcję.
Wnioskowanie z niskiego wyniku, że treść jest na pewno oryginalna. To odwrotność powyższego błędu. Ktoś, kto naprawdę chce ukryć skopiowaną treść, może ją sparafrazować na tyle mocno, że wynik spadnie blisko zera, mimo że merytorycznie to ten sam materiał. Niski wynik mówi tylko, że słownictwo jest różne, nic więcej.
Porównywanie krótkiego fragmentu z dużo dłuższą stroną i dziwienie się, że wynik nie jest wyższy. Jeśli krótki akapit jest dosłownie zawarty w środku dużo dłuższego tekstu, wynik i tak może wyjść umiarkowany albo niski, bo cała dodatkowa, unikalna treść dłuższego tekstu rozcieńcza podobieństwo. To nie błąd narzędzia, po prostu wektor dłuższego tekstu ma znacznie więcej unikalnych słów.
Zapominanie, że słowa funkcyjne są usuwane przed liczeniem. Bardzo krótkie teksty złożone głównie ze spójników, zaimków i przyimków mogą po odfiltrowaniu zostać niemal puste, co daje wynik 0% nawet przy tekstach, które brzmią podobnie na głos.
Najczęściej zadawane pytania
Czym różni się to narzędzie od prawdziwego modelu embeddingowego, na przykład text-embedding-3 od OpenAI? Prawdziwy model embeddingowy zamienia tekst na wektor liczb reprezentujący jego znaczenie, więc potrafi rozpoznać, że dwa zdania mówią o tym samym nawet przy zupełnie innym słownictwie. To narzędzie liczy wyłącznie, ile tych samych dosłownych słów pojawia się w obu tekstach. Jest szybkie, działa lokalnie w przeglądarce i dobrze wychwytuje przeredagowane duplikaty, ale nie rozumie synonimów ani parafraz, co pokazuje przykład 2 z wynikiem 6% dla tekstu mówiącego to samo innymi słowami.
Jaki wynik powinien niepokoić przy sprawdzaniu duplikatu treści pod kątem SEO? Pasmo 70% i wyżej, czyli “wysokie podobieństwo”, to poziom wart potraktowania poważnie, tak jak w przykładzie 1 z wynikiem 74%. Zawsze warto jednak spojrzeć nie tylko na samą liczbę, ale też na listę wspólnych i unikalnych słów, którą narzędzie pokazuje. Ta lista mówi konkretnie, które fragmenty się pokrywają, a nie tylko sam procent.
Czy to narzędzie wykrywa sparafrazowany plagiat? Nie. Przykład 2 pokazuje to wprost: tekst opisujący dokładnie ten sam produkt, ale całkowicie innymi słowami, dostaje wynik zaledwie 6%. Do wykrywania parafrazowanego plagiatu potrzebny jest model rozumiejący znaczenie, a nie liczący dosłowne pokrywanie się słów.
Czy słowa funkcyjne (spójniki, przyimki) są liczone do wyniku? Nie, są usuwane przed liczeniem razem ze słowami jednoliterowymi, żeby nie zniekształcały wyniku. Obecnie lista słów funkcyjnych obejmuje kilka języków, między innymi angielski, portugalski, hiszpański, francuski i niemiecki.
Czy mój tekst jest wysyłany na jakiś serwer? Nie. Całe liczenie odbywa się lokalnie w przeglądarce, tekst nigdy nie opuszcza urządzenia.
Czy mogę zapisać albo udostępnić wynik komuś innemu linkiem? W tej osadzonej wersji nie, bo to widget bez własnego adresu URL. Żeby dostać link z gotowymi, wklejonymi tekstami do wysłania komuś, otwórz pełną stronę narzędzia i użyj tam opcji udostępniania.