Prawo Zipfa: analiza tekstu i sprawdzanie online
Prawo Zipfa to empiryczna prawidłowość: w naturalnym tekście częstość słowa jest odwrotnie proporcjonalna do jego miejsca w rankingu częstości. Najczęstsze słowo występuje mniej więcej dwa razy częściej niż drugie, trzy razy częściej niż trzecie i tak dalej. Analiza tekstu prawem Zipfa pokazuje, na ile rozkład słów w twoim tekście przypomina naturalny. Sprawdzić tekst online można za darmo w analizatorze Zipfa (wykres log-log, nachylenie, R², indeks zgodności, top słów z odchyleniem) albo w detektorze AI PromoPilot, gdzie metryka „Prawo Zipfa” pojawia się w bloku metryk po sprawdzeniu. Poniżej — jak to się liczy, jak czytać wynik i jak sprawdzić tekst ręcznie.
Wzór prawa Zipfa
W ogólnej postaci prawo zapisuje się tak: f(r) = C / rα, gdzie f to częstość słowa, r — jego ranga (miejsce na liście posortowanej malejąco według częstości), C — stała w przybliżeniu równa częstości najczęstszego słowa, a wykładnik α dla języka naturalnego jest bliski jedności. Wynika z tego prosty wniosek: iloczyn rangi i częstości r × f jest w przybliżeniu stały.
| Ranga słowa | Oczekiwana częstość przy α = 1 | Ranga × częstość |
|---|---|---|
| 1 | 120 | 120 |
| 2 | 60 | 120 |
| 3 | 40 | 120 |
| 4 | 30 | 120 |
| 10 | 12 | 120 |
Jeśli zbudować wykres w skali logarytmicznej — logarytm rangi na osi poziomej, logarytm częstości na osi pionowej — punkty naturalnego tekstu ułożą się niemal na prostej o nachyleniu około −1.
Jak sprawdzić tekst prawem Zipfa online
Najszybciej — analizator tekstu prawem Zipfa: wklej tekst, a narzędzie zbuduje wykres rangi i częstości w skali logarytmicznej obok idealnej prostej, policzy nachylenie, R² i indeks zgodności, pokaże top 30 słów z oczekiwaną częstością i podświetli słowa, które występują wyraźnie częściej niż norma. Obliczenia odbywają się w przeglądarce, tekst nigdzie nie jest wysyłany.
Druga opcja — metryka „Prawo Zipfa” w detektorze AI, gdzie stoi wśród innych wskaźników tekstu:
- Otwórz detektor AI. Rejestracja nie jest potrzebna.
- Wklej tekst lub podaj adres strony — narzędzie samo pobierze z niej tekst. Bierz co najmniej 100 słów, a najlepiej 200 i więcej: na krótkim fragmencie metryka mało mówi.
- Wybierz język lub zostaw automatyczne wykrywanie i kliknij „Sprawdź”.
- W bloku metryk detektora znajdź wiersz „Prawo Zipfa” z podpowiedzią o rozkładzie częstości słów. Jeśli odchylenie jest wyraźne, w bloku wyjaśnień pojawi się wiersz o odchyleniu częstości słów od naturalnego rozkładu.
Ta sama metryka jest w rozszerzonej wersji detektora, gdzie wyświetla się na wykresie radarowym razem z innymi wskaźnikami i analizą tekstu zdanie po zdaniu.
Jak detektor liczy metrykę
- Tekst dzieli się na słowa według spacji, słowa sprowadza do małych liter, a znaki interpunkcyjne odrzuca. Lematyzacji nie ma: „link”, „linki” i „linku” liczą się jako różne słowa.
- Częstości sortuje się malejąco i dla pierwszych 50 rang rzeczywistą częstość porównuje z teoretyczną
f(1) / r. Liczy się średnie odchylenie względne. - Osobno ocenia się „ogon” — rzadkie słowa w dolnej jednej trzeciej listy: zbyt jednolity ogon też jest traktowany jako odchylenie.
- Obie oceny sumuje się po równo. Jeśli tekst ma mniej niż 50 słów, metryka zwraca neutralne 50%; pełną siłę uzyskuje przy 200 słowach i więcej, a przy pośredniej długości wynik jest przyciągany do 50%.
Jak czytać wynik w detektorze
| Wartość | Kolor paska | Co oznacza |
|---|---|---|
| do 40% | zielony | Rozkład częstości jest bliski naturalnemu |
| 40–70% | żółty | Wyraźne odchylenie; w tekstach do 200 słów często po prostu z powodu długości |
| powyżej 70% | czerwony | Silne odchylenie: przeoptymalizowanie, szablonowość lub monotonne słownictwo |
Im wyższy procent, tym dalej tekst od krzywej Zipfa. Przy tym w końcowym prawdopodobieństwie wygenerowania przez AI waga tej metryki jest niewielka — około 3%: na krótkich tekstach jest zawodna, a detektor opiera się przede wszystkim na innych cechach. Jak czytać cały raport — w artykule o sprawdzaniu tekstu pod kątem AI.
Sprawdzenie ręczne: słownik frekwencyjny i wykres log-log
Jeśli chcesz zobaczyć samą krzywą, a nie jedną liczbę, łatwo zbudujesz ją samodzielnie.
- Oczyść tekst: małe litery, bez interpunkcji i cyfr. W języku polskim wynik jest dokładniejszy, jeśli sprowadzisz słowa do formy podstawowej (lematyzacja).
- Policz, ile razy występuje każde słowo, i posortuj listę malejąco. Numer wiersza to ranga.
- Dodaj dwie kolumny:
=LOG10(ranga)i=LOG10(częstość). - Zbuduj wykres punktowy z tych kolumn i policz nachylenie: w Excelu i Arkuszach Google — funkcją
NACHYLENIE(SLOPE).
To samo w Pythonie:
import re, math
from collections import Counter
text = open("text.txt", encoding="utf-8").read().lower()
words = re.findall(r"[a-ząćęłńóśźż]+", text)
freqs = sorted(Counter(words).values(), reverse=True)
xs = [math.log10(r) for r in range(1, len(freqs) + 1)]
ys = [math.log10(f) for f in freqs]
n = len(xs); mx = sum(xs) / n; my = sum(ys) / n
slope = sum((x - mx) * (y - my) for x, y in zip(xs, ys)) / sum((x - mx) ** 2 for x in xs)
print("nachylenie:", round(slope, 2)) # dla naturalnego tekstu około -1
Przykład: zwykły i przeoptymalizowany tekst
Umowny przykład na artykule o długości około 600 słów o naprawie laptopów. W zwykłej wersji góra listy częstości wygląda tak: „w”, „i”, „na”, „nie”, „laptop”, „z” — słowa funkcyjne na górze, słowo tematyczne na piątym miejscu, częstości maleją płynnie. W wersji przeoptymalizowanej, w której autor wstawiał „naprawa laptopów” do każdego zdania, obraz jest inny:
| Ranga | Zwykły tekst | Tekst przeoptymalizowany |
|---|---|---|
| 1 | w — 31 | naprawa — 34 |
| 2 | i — 17 | laptopów — 33 |
| 3 | na — 11 | w — 29 |
| 4 | nie — 8 | i — 15 |
| 5 | laptop — 6 | na — 10 |
W pierwszej kolumnie częstości zachowują się jak 31 / r, w drugiej dwie pierwsze rangi są niemal równe — to właśnie odchylenie od prawa Zipfa, widoczne bez żadnych narzędzi. Analizator i detektor wychwytują je automatycznie, a na wykresie log-log takie słowa wyglądają jak „półka” na początku krzywej.
Jak interpretować odchylenia
| Co widać na wykresie | Możliwa przyczyna |
|---|---|
| Słowo tematyczne stoi w pierwszej trójce obok przyimków i spójników | Przeoptymalizowanie frazą kluczową — sprawdź gęstość słów kluczowych |
| Nachylenie wyraźnie bardziej strome niż −1 | Ubogie słownictwo, dużo powtórzeń tych samych słów |
| Nachylenie wyraźnie łagodniejsze niż −1 | Wykazy terminów, tabele, listy nazw |
| Długi, równy ogon słów o częstości 1 | Krótki tekst — to norma, a nie oznaka problemu |
Po co prawo Zipfa w SEO
- Diagnoza przeoptymalizowania: jeśli słowo kluczowe odstaje od rozkładu, powtarza się zbyt często.
- Ocena bogactwa słownictwa: płaski lub zbyt stromy rozkład świadczy o ubogim języku.
- Porównanie z konkurencją: bardziej przydatne niż abstrakcyjne normy — sprawdź, jak wyglądają teksty z topu na twoją frazę.
- Jedna z cech tekstu maszynowego: odchylenie to pośredni sygnał, że tekst złożono z szablonów lub wygenerowano.
Drugie prawo Zipfa
W analizie tekstu czasem wspomina się też drugie prawo Zipfa. Opisuje ono drugą stronę rozkładu: ile różnych słów ma tę samą częstość. Im niższa częstość, tym więcej takich słów: najwięcej jest słów występujących w tekście tylko raz — w typowym tekście to znaczna część słownictwa. To właśnie ta część tworzy „ogon”, który detektor ocenia osobno: w naturalnym tekście jest niejednorodny, w szablonowym — podejrzanie równy.
Skąd wzięło się prawo
Prawidłowość opisał amerykański językoznawca George Zipf w latach 30. i 40. XX wieku, choć podobne obserwacje dotyczące częstości słów robiono już wcześniej. Później znaleziono ją daleko poza językiem — w wielkości miast, dochodach, odwiedzalności stron. W tekstach utrzymuje się zadziwiająco stabilnie: w każdym wystarczająco dużym naturalnym tekście rozkład częstości układa się na tej samej krzywej. Górne rangi niemal zawsze zajmują słowa funkcyjne — przyimki, spójniki, zaimki — a znaczące słowa tematu znajdują się niżej i to ich udział pokazuje, o czym jest tekst.