ML Atlas

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 wykres plt.loglog(ranks, freqs).
  • W CountVectorizer i TfidfVectorizer parametry min_df, max_df i max_features przycinają 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.

Zobacz też