Zipf törvény: avagy mi köze a Debian fejlődésének egy matematikai problémához?

 ( trey | 2008. december 6., szombat - 13:51 )

George Kingsley Zipf amerikai nyelvész a múlt század derekán azt vette észre, hogy a szavak eloszlása ugyanazt a mintát követi ha újságcikket, könyvet, vagy bármilyen más szöveget vizsgál. Zipf megszámolta, hogy az egyes szavak hányszor bukkannak fel és arra jutott, a szavak gyakoriságuk szerint rangsorba állíthatók. Egészen pontosan, a leggyakrabban előforduló szó körülbelül kétszer olyan gyakran bukkan fel, mint a második leggyakoribb szó. A második leggyakoribb szó pedig körülbelül kétszer olyan gyakran fedezhető fel egy elegendően terjedelmes szövegben, mint a negyedik leggyakoribb szó és így tovább.

Matematikailag ez azt jelenti, hogy a szavak előfordulási gyakorisága fordítottan arányos azok rangsorával. Ezt ábrázolhatjuk hagyományos koordináta rendszerben, de Zipf a könnyebb értelmezhetőség miatt azt javasolta, hogy a koordináta rendszer legyen logaritmikus. Ha a Zipf görbét olyan koordináta rendszerben ábrázoljuk, amelynek mindkét tengelye logaritmikus skálázású (log-log), akkor egy egyenes vonalat kapunk, amelynek a lejtése körülbelül -1 (angol szövegnél -1, magyarnál kb. -0.9).

Zipf felfedezése óta a kutatók arra jutottak, hogy számos más természeti és emberi jelenséget is leír ez törvény. Például a városok populációját a rangsoruk szerint, az internetes forgalom karakterisztikáját, de volt már próbálkozás a Drupal keresőindexének és a közösségi támogatottságának a Zipf törvénnynel való összevetésére is.

A svájci ETH Zürich intézet kutatóit is érdekli a Zipf törvény és ez a problémakör. Éppen ezért kutatásokat végeztek. A kutatás alanya a Debian GNU/Linux disztribúció és annak egyes kiadásai (Woody, Sarge, Etch, Lenny) voltak. A kutatók a Debian csomagjait elemezve bebizonyították, hogy valóban az eddig csak feltételezett mechanizmusokból származik a Zipf törvény.

Az érdekes írás elolvasható itt.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Sok az unatkozó ember..

Egyaltalan nem felesleges ez a torveny. Gyakorlatban is alkalmazhato, ha egy tomoritett/tomoritetlen keresoindex meretet kell megadnod adott (nagy) korpusz mellett.
Ha rajonnek, hogy mi van a dolog mogott, akkor teljesen mas teruleteken is egyszerusit bizonyos szamitasokat.

--
I don't always dress in a T-shirt and jeans. Sometimes people give me awards, and I dress like a penguin instead. - Linus Torvalds

Ehem, legalabb most lesz mire hivatkozni a Dependency hellnél...
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

Kipróbáltam egy kisebb szöveges állományon, és a leggyakoribb szó tényleg kb. 2x-ese a 2. leggyakoribbnak... ez egy 10 000 soros szöveg, egy nagyobb könyvnél talán még jobban konvergálnak az értékek.

$ echo; cat *.txt | tr -s " " "\n" | sort | uniq -c | sort -nr | head -n 10

  12367 the
   6828 to
   6693 a
   5085 and
   4569 of
   3953 you
   3416 is
   3118 in
   2841 for
   2722 that

Szerk.: kicsit elgondolkodtam :) szerintem minden statisztikai értékekből alkotott görbét le lehetne írni logaritmikus függvénnyel, mondván ez már majdnem olyan mint a log (x/y^z) :) (monotonon csökkenőre vagy növekvőre gondolok)

A felfedezés egyébként érdekes.

meg tudnád ezt csinálni a kernel forrására is? >:)

2.6.27-9-generic:

1068709 =
727982 *
708924 */
599006 {
446815 #define
387119 the
322588 /*
245657 if
235460 }
222740 static
220475 int
208220
186460 to
182791 }
160259 0;
159515 struct
156807 0x00,
151901 struct
139237 /*
134497 of

Pár token kétszer szerepel:

...
322588 /*
...
235460 }
...
182791 }
...
159515 struct
...
151901 struct
...
139237 /*
...

Ha 180755-tel kevesebb a csukó kapcsoszárójel mint a nyitó, azt még megeszi a GCC? :)

igen, /* /* /* /* /* */

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Hint: kapcsoszárójel == '{' vagy '}'. :)

Én is kipróbáltam, összesen 450 kByte szöveges (text) állományon, amely azonban (több) magyar nyelvű publicisztika volt (tehát az irodalmi igényű nyelvi szóhasználat fokozottabban volt jelen, mint "köznapi" (az én olvasatomban: igénytelen) használatban. Ennek eredménye viszont:
A leggyakoribb szó _háromszor_ gyakoribb, mint a második (2.92).
A második leggyakoribb _kevesebb, mint másfélszer_ gyakoribb, mint a negyedik (1.23).
Ebben a szellemben tovább.

Ekkora mintát feldolgozva - és nem tudva, hogy vajon az alkotók, és ellenőrzői végigtesztelték-e teszem azt nem angolszász, nem indogermán, stb. nyelveken is - úgy tűnik, hogy nem feltétlenül/mindig igaz a magyarra (ill. ebből fakadóan más hasonló nyelvtani rendszerű, vagy nagy szókincsű nyelvre, mondjuk török, perzsa, kínai, stb), illetve más eredményeket mutat finoman szólva egyszerű (mint említettem volt, igénytelen), és nyelvi igénnyel bíró használat során.

Mivel eme lehetőség analóg lenne azon tapasztalattal, miszerint a fordító és helyesírás ellenőrző programok hatásfoka összehasonlíthatatlanul nagyobb mondjuk angol nyelv esetén, mint magyarnál (és adott esetben most finomak voltunk :) ), így a nyelvek csoportosíthatóak lehetnek aszerint, hogy egy nyelvet kifejezetten ember (értelmes, logikus, empirikus és emocionális lény) vagy akárcsak egy gép (logikus és intelligens készítmény) is beszélni-használni képes-e.

egy publicisztika szaknyelvet használ, és az teljesen eltér a köznapi nyelvezettől, nem csoda, hogy nagyobbak az eltérések.
pl. a hupon a linux szó valószínűleg 1000x olyan gyakran fordul elő, mint a kiskegyed.hu-n :)
zipf törvénye nem vonatkozik erre.

A Zipf-törvény egyformán érvényes minden természetes nyelven megírt, kellően hosszú szövegre, mindegy hogy milyen nyelven, témában és stílusban íródott. Az egyformán érvényest úgy kell érteni, hogy a fenti paraméterektől függetlenül a Zipf-törvényt lehet használni a szóeloszlások közelítésére, ám ez a közelítés mindenképp pontatlan lesz. A leginkább éppen a leggyakoribb szavaknál lesz pontatlan, ahol mindenki szereti nézegetni az illeszkedést. Az hogy egy nyelv második leggyakoribb szavának valószínűsége hogy aránylik a leggyakoribb szóéhoz, pusztán a véletlen műve, meg a számolás módszerétől is függ (pl. mi számít ugyanannak a szónak?), de legtöbbször 1/2-1/10 között lesz.

Az angolban is hiába igaz hogy a leggyakoribb (the) szó gyakoriságának kábé a fele a második leggyakoribb (of), ha a harmadik már nem a harmada (and). Az a fontos, mennyire illeszkedik a Zipf-összefüggés a teljes tartományon.

Nagy angol korpusz gyakorisági listája (/millió szóban mérve)
http://ucrel.lancs.ac.uk/bncfreq/lists/1_2_all_freq.txt

Mit ért a connectivity alatt? A dependency-t?

Igen.
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

Mégis a mátrix rabja vagyok?

Kivétel hogy a Debian magyar fordításaiban feltűnően sokat szerepel az "e" és "eme" szócska, pl. "törlöd eme fájlt?". Szerintem ultrabéna egy kifejezés, mindig megüti a szemem de gondolom ha másnak baja lenne vele már le lenne cserélve...

Szembeotlo? :)

--
B+ - http://pozor.hu

Nem lehet ez eszperente nyelv? (e, eme)

--
I don't always dress in a T-shirt and jeans. Sometimes people give me awards, and I dress like a penguin instead. - Linus Torvalds

Neeeem, csak régi (tősgyökeres - rooted-root) magyar szóhasználat.

25617 szóból álló mintán:

 1	a	2132
 2	az	 688
 3	és	 449
 4	hogy	 444
 5	nem	 373
 6	egy	 347
 7	is	 209
 8	de	 158
 9	volt	 142
10	meg	 142
11	csak	 130
12	ez	 114
13	már	  99
14	azt	  98
15	még	  93
16	úgy	  92
17	ha	  85
18	mint	  84
19	van	  81
20	el	  77