11 · Prawa i prawdy · 4 min czytania · aktualizacja
Co mówi prawo Zipfa o częstości słów w języku?
W skrócie
Częstość słowa jest w przybliżeniu odwrotnie proporcjonalna do jego miejsca w rankingu: drugie jest o połowę rzadsze od pierwszego. Co to znaczy dla NLP.
Co to jest
W dużym tekście częstość słowa jest w przybliżeniu odwrotnie proporcjonalna do jego pozycji w rankingu częstości: f(r) ≈ C / r. Prawo nosi imię George’a Kingsleya Zipfa, który opisał je w latach 30. i rozwinął w książce „Human Behavior and the Principle of Least Effort” z 1949 roku (wcześniej zauważał to m.in. Jean-Baptiste Estoup).
W praktyce oznacza to: najczęstsze słowo pojawia się mniej więcej dwa razy częściej niż drugie, trzy razy częściej niż trzecie i sto razy częściej niż setne. Na wykresie w skali logarytmicznej na obu osiach (log częstości vs log rangi) punkty układają się w przybliżeniu na prostej o nachyleniu bliskim −1.
Konsekwencja jest ogromna: garstka słów („i”, „w”, „się”, „the”, „of”) stanowi dużą część każdego tekstu, a większość słownika to słowa rzadkie, często spotykane jeden raz. Ten sam kształt — „długi ogon” — pojawia się też w wielkościach miast, popularności stron internetowych i liczbie cytowań.
Mechanizm — dlaczego tak działa
Tu trzeba powiedzieć wprost: przyczyna prawa Zipfa jest sporna. Opis jest empirycznie solidny, ale istnieje kilka konkurencyjnych wyjaśnień i żadne nie jest powszechnie przyjęte.
Zipf proponował „zasadę najmniejszego wysiłku”: mówiący chce używać niewielu ogólnych słów, słuchający woli wiele precyzyjnych; kompromis tych dwóch nacisków ma dawać rozkład potęgowy. Herbert Simon w 1955 roku zaproponował mechanizm „bogaci się bogacą”: słowo, które już było częste, ma większą szansę być użyte ponownie, a od czasu do czasu pojawia się słowo nowe. Taki proces generuje rozkład Zipfa.
George Miller w 1957 roku pokazał rzecz niewygodną: małpa losowo uderzająca w klawisze (litery i spację) też produkuje „słowa” o rozkładzie zbliżonym do Zipfa. Krótkie ciągi są liczniejsze i częstsze, długie rzadsze — i ranking układa się w potęgę. To sugeruje, że część zjawiska wynika z samej kombinatoryki, a nie z czegoś specyficznego dla języka. Steven Piantadosi w przeglądzie z 2014 roku podsumował, że prawo jest bardzo dobrze potwierdzone, a jego wyjaśnienie — wciąż otwarte, i że dokładne dopasowanie f ∝ 1/r często się nie trzyma, zwłaszcza dla najczęstszych i najrzadszych słów.
Niezależnie od przyczyny, kształt rozkładu ma bezpośrednie skutki techniczne. Każdy nowy tekst przynosi nowe rzadkie słowa (prawo Heapsa: słownik rośnie bez końca, choć coraz wolniej), więc stały słownik zawsze będzie miał luki.
Na przykładzie
Korpus: dokumentacja (docstringi) publicznych klas i funkcji scikit-learn 1.7.2 — 934 teksty, 299 421 słów, 6303 różne słowa (małe litery, tylko litery). Najczęstsze: „the” (15 439 razy), „of” (9335), „to” (5822). Drugie słowo ma 60% częstości pierwszego, trzecie 38% — blisko przewidywanych 50% i 33%.
Dalej prawo działa jako kształt, ale nie co do stałej: słowo na miejscu 10 występuje 3217 razy (czyste 1/r dawałoby 1544), na miejscu 100 — 497 razy (przewidywane 154), na miejscu 1000 — 35 razy (przewidywane 15). Nachylenie prostej w skali log–log między rangami 10 i 1000 wynosi −1,10, bardzo blisko Zipfowskiego −1. Dziesięć najczęstszych słów to 20,3% całego tekstu, sto najczęstszych — 54,0%. Jednocześnie 23,0% różnych słów pojawia się tylko raz.
W praktyce
- Policz rozkład:
collections.Counter(tokens).most_common(), potem wykresplt.loglog(ranks, freqs). - W
CountVectorizeriTfidfVectorizerparametrymin_df,max_dfimax_featuresprzycinają oba końce rozkładu: bardzo częste słowa (mało informacji) i bardzo rzadkie (szum, rozmiar macierzy). - TF-IDF obniża wagę słów częstych właśnie dlatego, że rozkład Zipfa daje im ogromne surowe liczby.
- Tokenizacja podsłowowa (BPE, WordPiece) rozwiązuje problem długiego ogona: rzadkie słowa rozkłada na częste fragmenty, więc model nie ma „nieznanych słów”.
- Embeddingi rzadkich tokenów są słabo wyuczone — model widział je kilka razy. Sprawdzaj jakość modelu osobno na rzadkich przypadkach.
Najczęstsze pytania
- Czy prawo Zipfa dotyczy też języka polskiego?
- Tak, rozkład częstości słów w polskich tekstach ma ten sam ogólny kształt. Ze względu na bogatą fleksję (wiele form jednego słowa) ogon jest jeszcze dłuższy, jeśli liczy się formy, a nie lematy.
- Dlaczego prawo Zipfa jest ważne dla modeli językowych?
- Bo determinuje, jak wygląda słownik: kilka tysięcy tokenów pokrywa większość tekstu, a reszta to długi ogon rzadkich form. Stąd tokenizacja podsłowowa, obcinanie słownika i trudność modeli z rzadkimi słowami.
- Czy prawo Zipfa jest dokładne?
- Nie. To przybliżenie: nachylenie bywa różne od −1, a najczęstsze i najrzadsze słowa odstają od prostej. Kształt „długiego ogona” jest jednak bardzo stabilny w różnych językach i korpusach.
Źródła
- George K. Zipf, „Human Behavior and the Principle of Least Effort”, Addison-Wesley, 1949.
- Herbert A. Simon, „On a class of skew distribution functions”, Biometrika 42(3/4), 1955, s. 425–440.
- Steven T. Piantadosi, „Zipf’s word frequency law in natural language: A critical review and future directions”, Psychonomic Bulletin & Review 21(5), 2014, s. 1112–1130.
- Mark E. J. Newman, „Power laws, Pareto distributions and Zipf’s law”, Contemporary Physics 46(5), 2005, s. 323–351.