Kādi ir izplatītākie latviešu valodas vārdi un kā tie mūs raksturo

Savulaik, izstrādājot Latviešu moderno tastatūru, veicu izpēti par burtu sadalījumu latviešu valodā, bet tagad, latviskojot Espeak teksta — runas sintezatoru, man parādījās interese arī par izplatītākajiem latviešu valodas vārdiem.

Lai arī cik tas nebūtu dīvaini, Latvijas Universitātes Mākslīgā intelekta laboratorija savā lapā http://www.korpuss.lv/ nedod (vieglu) atbildi uz tādu "vienkāršu" jautājumu, kā "kādi ir izplatītākie latviešu valodas vārdi?".

Lai arī es varēju iet līdzīgu ceļu kā iepriekš un izmantot tikai dažus literārus darbus, šoreiz es vēlējos savākt plašāku tekstu paraugu, tāpēc nolēmu "saskrāpēt" to no tīmekļa vietnēm.

Saturs

Satura savākšana un apkopošana

Skrāpējot tīmekļa saturu, lielākās grūtības sagādā izvilkt no lapu HTML koda tikai lapai unikālo tekstu, atmetot iesākumu, nobeigumu, paneļus, reklāmas un citas vietnēs atkārtojošās lietas. Tomēr, izpētot HTML kodu parasti var atlasīt kādu zīmīgu HTML elementu, kurā ir galvenais lapas teksts. Pēc dažādiem neveiksmīgiem mēģinājumiem kā datu avotus izmantoju divas tīmekļa vietnes: vikipēdiju un Delfi un TVNET ar sekojošu Bash skriptu:

#!/bin/bash

echo "Getting content from Wikipedia ..."
wget -e robots=off -r -np -l3 -R *.css,*.js,*.png,*.JPG,*.jpg,*.jpeg,*.ogg,*.svg,*.gif -N --local-encoding=utf8 https://lv.wikipedia.org/wiki/Special:RecentChanges >wget.log 2>&1

echo "Getting content from Delfi ..."
wget -e robots=off -r -np -l3 -R *.css,*.js,*.png,*.JPG,*.jpg,*.jpeg,*.ogg,*.svg,*.gif -N --local-encoding=utf8 https://www.delfi.lv/ >wget.log 2>&1

echo "Getting content from Tvnet ..."
wget -e robots=off -r -np -l4 -R *.css,*.js,*.png,*.JPG,*.jpg,*.jpeg,*.ogg,*.svg,*.gif -N --local-encoding=utf8 http://www.tvnet.lv/ >wget.log 2>&1

rm tmp.txt 2>/dev/null

echo "Aggregating content of Wikipedia ..."
for i in $(find lv.wikipedia.org/wiki/ -type f)
do
 # use hxselect to get only wikipedia article and then
 # cut off end part of wikipedia articles which has notes and references with sed, then
 # grep out just numbers and convert it to lowercase
 cat "$i"|hxselect "#mw-content-text" 2>/dev/null \
 | xidel - --xquery "//p" 2>/dev/null \
 |grep -vE "\s*?[0-9]+\.\s*.*|^\s*$|^Ārējie rīki|^Šajās lapās|^Šiet ir nesen"|sed 's/.*/\L&/' >> tmp.txt
done

echo "Aggregating content of Delfi ..."
for i in $(find www.delfi.lv/ -type f)
do
 # Similarly to Delfi use xidel
 cat "$i" 2>/dev/null|xidel - --xquery "//p" 2>/dev/null|grep -vE '^\s*$' |sed 's/.*/\L&/' >> tmp.txt
done

echo "Aggregating content of Tvnet ..."
for i in $(find www.tvnet.lv/ -type f)
do
 # Similarly to Delfi use xidel
 cat "$i" 2>/dev/null|xidel - --xquery "//p" 2>/dev/null|grep -vE '^\s*$|\.\.\.[[:digit:]]*$' |sed 's/.*/\L&/' >> tmp.txt
done

echo "Sorting words..."
# Replace "word terminator" symbols with linebreaks
# I use custom java app to support unicode characters
cat tmp.txt|mytr "~*#,;.:?! ()[]{}<>'\"\/\t“”„«»:…^+=→—–−-×·•°²³%‰ ′″" \
"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" \
|sort > tmp-sorted.txt
echo "Counting words..."
cat tmp-sorted.txt|uniq -c > word-count.txt
echo "Sorting counted words..."
sort -rn word-count.txt > word-count-sorted.txt

Darbinot lapu satura savākšanu ar tail -f wget.log vēroju wget žurnāla failu un, ieraugot, ka wget savāc pārāk daudz drazas, attiecīgi pielāgoju tā parametrus. Kad jutos daudzmaz apmierināts ar rezultātiem, atļāvu skriptam iziet līdz galam.

(Ja lietojat vai esat spiests lietot Windows operētājsistēmu, tad varat mēģināt izmantot šādu risinājumu ar Linux virtuālo mašīnu, Cygwin, vai arī jauno Windows 10 Ubuntu iekš Windows iespēju. Bet ilgtermiņā, protams, pareizāk ir pāriet uz Linux.)

Teksta statistika

Pēc vairāku stundu gaidīšanas, ar man pieejamo 2×10Mb/s tīkla pieslēgumu, savācu:

  1. no vikipēdijas ap 58k lapu 3,2G apjomā,
  2. no Delfi ap 15k lapu 1,5GB apjomā,
  3. no TVNET ap 25k lapu 2,9GB apjomā.

No šī kopējā nepilnu 2G datu apjoma izvilku unikālu tekstu ar 14M vārdu "tikai" 104MB apjomā. Ap 2M vārdu tur bija dažāda draza: gari skaitļi (gadi, skaitļi kopā ar mērvienībām, kodi un identifikatori) angļu (tajā skaitā angļu valodas vārdi no neizvākta JavaScript un neattīrīta HTML koda) un krievu valodas vārdi, kā arī dažādas nenofiltrēta Unicode rakstzīmes (pasvītrojumzīme, bultiņas, pēdiņas u.tml.). Atmetot "vārdus", kas atkārtojās tikai vienu reizi, pāri palika ap 10M (10'360'701) vārdu.

Lai saskaitītu kopā sugas vārdus gan teikuma sākumā, gan citur, visus vārdu burtus pārvērtu uz mazajiem. Pēc tam, tīrot drazu, izmetu angļu un krievu valodu sugasvārdus, bet atstāju internacionālismus, zīmolus un dažādus izplatītus saīsinājumums.

Vārdu izplatība

Rezultātā ieguvu sekojošu 100 sastopamāko vārdu sadalījumu (tabulā norādīts vārds, tā parādīšanās skaits un attiecība promilēs no kopējā vērā ņemto vārdu skaita):

Vārds Skaits‰ Vārds Skaits‰ Vārds Skaits‰ Vārds Skaits
un 403926 39,0 pēc 34983 3,4 ļoti 18547 1,8 gada 12514 1,2
ir 297076 28,7 gan 34288 3,3 valsts 18485 1,8 labi 12317 1,2
ar 155089 15,0 lv 33897 3,3 viņš 17843 1,7 kopā 12215 1,2
no 122068 11,8 jo 30222 2,9 tās 17667 1,7 tomēr 12080 1,2
par 119236 11,5 visas 29971 2,9 kaut 17444 1,7 tagad 11967 1,2
ka 114194 11,0 es 28531 2,8 tik 17441 1,7 viņi 11873 1,1
arī 92503 8,9 ne 28406 2,7 tur 17248 1,7 mēs 11745 1,1
kā 88978 8,6 pie 28084 2,7 tu 17025 1,6 viens 11639 1,1
kas 85982 8,3 savu 26124 2,5 būs 16959 1,6 piemēram 11636 1,1
bet 80240 7,7 ziņas 25373 2,4 tie 16667 1,6 atrodas 11626 1,1
to 76770 7,4 latvijas 25307 2,4 viņa 16056 1,5 šajā 11617 1,1
uz 72351 7,0 līdz 24945 2,4 laikā 15831 1,5 viss 11530 1,1
vai 67314 6,5 ievērojamas 23946 2,3 nākamais 15680 1,5 kurš 11370 1,1
nav 61922 6,0 © 23864 2,3 pret 15660 1,5 pirms 11023 1,1
tas 55387 5,3 paturētas 23830 2,3 būtu 15649 1,5 viņu 10891 1,1
tā 54585 5,3 tiek 22815 2,2 daudz 15305 1,5 visi 10651 1,0
ja 52158 5,0 kur 22766 2,2 iepriekšējais 15262 1,5 tev 10632 1,0
lai 48433 4,7 vēl 22536 2,2 visu 14779 1,4 cik 10520 1,0
var 45558 4,4 kad 22527 2,2 lasīt 14615 1,4 normas 10480 1,0
bija 44876 4,3 bez 21084 2,0 tika 14289 1,4 latvijā 10327 1,0
tad 43360 4,2 būt 20998 2,0 šo 14256 1,4 komentāru 10156 1,0
jau 42559 4,1 man 20534 2,0 taču 13997 1,4 aicina 10095 1,0
ko 40182 3,9 pa 20516 2,0 tam 13265 1,3 saglabāt 10058 1,0
tikai 36162 3,5 pat 20266 2,0 vairāk 13231 1,3 mums 10053 1,0
tiesības 35764 3,5 nu 18593 1,8 mūsu 12588 1,2 noteikumi 9932 1,0

Sekojošā attēlā 50 izplatītāko vārdu sadalījums ir parādīts grafikā (klikšķiniet uz attēla, lai to apskatītu lielāku):

Att01.png

100 izplatītākie vārdi kopā sastāda ap 34% no visiem vārdiem. Lai arī centos izfiltrēt lapās atkārtojošos saturu ar hxselect, xidel un teksta apstrādes rīkiem, vietnēm raksturīgi vārdi "topā" tomēr ir ielavījušies. Piemēram, labot, satura rādītājs, saites, bet, no otras puses, tīmekli lietojot, šie vārdi ir sastopami pat vēl biežāk, tikai mēs iemācāmies tiem nepievērst uzmanību.

50% no visa teksta sastāda sekojoši 400 vārdi:

un ir ar no par ka arī kā kas bet to uz vai nav tas tā ja lai var bija tad jau
ko tikai tiesības pēc gan lv jo visas es ne pie savu ziņas latvijas līdz
ievērojamas © paturētas tiek kur vēl kad bez būt man pa pat nu ļoti valsts viņš
tās kaut tik tur tu būs tie viņa laikā nākamais pret būtu daudz iepriekšējais
visu lasīt tika šo taču tam vairāk mūsu gada labi kopā tomēr tagad viņi mēs
viens piemēram atrodas šajā viss kurš pirms viņu visi tev cik normas latvijā
komentāru aicina saglabāt mums noteikumi vien kāds tiem pasaules gadu iestādēm
iztikt komentāriem lasītājus lietotājam kuri pieeju kuras patur ziņot tāpēc
nekā šī elementāras pieklājības tolerantiem attiecīgajām liegt tiesībsargājošām
rupjībām nevis varētu tāpat kuru viena starp rīgas nevar jūs citu km savā kura
te cilvēki pats kādu pievienots eiropas tieši jeb vispār avots gadā savas
latviešu parasti visiem foto vienu maijs savukārt cilvēku kurā iespējams
krievijas varbūt dziesmu jums utc nebija kam vieta esi neko darba daļa laika
šis kāda trīs tām šīs laiku tos viņam tajā vietu novada šobrīd vairs dēļ lapas
protams asv kāpēc dziesma ap viņiem labāk vismaz vietā rakstu krievu gadus
katru bieži maijā pasaulē īpaši notiek darbu šeit atkal vienkārši laikam bērnu
tālāk sporta sevi pilnīgi jūsu jūras esmu paldies latvija tiešām eiro zemes
vajag citiem neviens dzīvot ūdens vējš cilvēks raksta pilsētas tiks auto iela
reizi vienmēr spēles dzīvo viņas nekas kultūras hokeja dienu gadījumā sava
vietas šodien visus tādu gadiem izbaudīt reizes video tai paši diskusija justs
mājās gads nekad citi jābūt tautas neliels krievija jā veido nevarēju lielākā
sev zemē kuriem liels pagasta dienas spēlē valodā iet tv tāds katrs izmanto
divas mani ukrainas tādēļ valodas sāk aptuveni gandrīz uzskata kategorijā
galvenais dzīves esam bijis liela cilvēkiem daudzi naudu pirmo kamēr noteikti
visa grupas naudas komanda vēlāk as komandas apmēram citas zem vienā bērniem
ielu daļā mūzikas redzamas mājas pašu centrs nebūtu centra laiks izmantot
mairis dvēseli nevajag šim nozīmē nemaz angļu tāda valstu kādas kara ielas kopš
valsti jaunību varēja nedaudz liegts pati bērni krievijai sauc saka pirmā kuram
lapu šie pirmais turklāt iedzīvotāju neļauj savus nebūs mazāk līdzi izskatās
pēdējā ģimenes cilvēka labs prieks kādā labu esat gaisa rīgā aiz patīk saviem
dara daļu paliek jaunu baltijas iespējas divi pāris izlase vairākas liekas domā
grupa rezultātā latviju super skaits citām visā pilsēta iespēju sarakstā

Šo vārdu izplatība ar dilstošu kāpinātāju eksponenciāli samazinās no 40‰ līdz 0,3‰ un ir tipisks "resnās astes sadalījums". Tas, nozīmē, ka:

  1. tūkstošiem vārdu pēc pirmajiem dažiem desmitiem ir apmēram vienādi reti izplatīti, un "biežāk sastopamie" gūst tikai nelielu pārsvaru pār citiem,
  2. izvēloties citu teksta avotu, nelielu pārsvaru iegūst pavisam cits, attiecīgam avotam raksturīgs vārdu krājums.

Ņemiet vērā, ka Y ass grafikā ir ar logaritmisku mērogu (klikšķiniet uz attēla, lai to apskatītu lielāku):

Att02.png

Ciparu izplatība

No teksta parauga atlasot vienciparu skaitļus, to sadalījums atbilst Benforda likumam1 ir biežāk sastopams par 2, kas savukārt ir izplatītāks par 3 u.t.t. Benforda likums neko nesaka par 0, bet manis iegūtajā saturā nulle ir vismazāk izplatīts cipars.

CiparsSkaits
40747
36839
27807
23228
21465
16362
13682
12197
11088
7220

Sekojošā attēlā ciparu sadalījums ir parādīts grafikā (klikšķiniet uz attēla, lai to apskatītu lielāku):

Att03.png

(Benforda likumu mēdz izmantot auditori, pārbaudot, vai iesniegtie grāmatvedības dati nav sagrozīti, jo patiesiem datiem Benforda likums ir spēkā, bet sagrozītiem visi cipari parasti ir vienlīdz izplatīti.)

Dažas interesantas sakarības

Šeit dažādi vārdi ir sagrupēti pēc tematiem un sakārtoti pēc to skaita apkopotajā saturā.

Laika apstākļi

  1. lietus 780, sniegs 373, negaiss 87, saulains 72, mākoņains 40;
  2. silts 243, karsts 140, auksts 94, vēss 91;
  3. silti 105, siltāks 96, auksti 37, aukstāks 15;
  4. ārā 2421, iekšā 1180.
  5. tumšs 154, gaišs 64 (protams, runa var iet par daudz ko citu, bet tomēr...)

Laika ritums

  1. diena 2668, nakts 898, vakars 367, rīts 60;
  2. dienā 2126, vakarā 928, naktī 746, rītā 383;
  3. tagad 11967, vēlāk 3419, agrāk 1970;
  4. ir 297076, bija 44876, būs 16959;
  5. iepriekš 2561, turpmāk 1414;
  6. tagad 11967, nekad 4275, nākotnē 587, pagātnē 303;
  7. ātri 2171, ātrāk 1092, lēni 279, lēnāk 84;
  8. rudens 317, pavasaris 251, vasara 198, ziema 143;
  9. Nedēļas dienas:

    sestdiena  85
    piektdiena  69
    svētdiena  51
    pirmdiena  48
    ceturtdiena 35
    otrdiena  30
    trešdiena  25

Dzīvi un cilvēkus raksturojoši vārdi

Interesanti, ka dažu vārdu sadalījums apstiprina, bet citu — apgāž izplatītus mītus par mums.

  1. ir 297076, nav 61922;
  2. labi 12317, labāk 5819, labs 2960, slikti 1846, slikts 522, sliktāk 274;
  3. patīk 2890, nepatīk 1638, riebjas 274;
  4. balts 448, melns 406, pelēks 120.
  5. sauss 131, mitrs 100, slapjš 24;
  6. jauns 1158, vecs 337, vecāks 121, jaunāks 26 (protams, "vecāks" var lietot arī, norādot uz tēti vai mammu);
  7. lētāk 233, dārgs 228, lēti 179, dārgi 161, dārgāk 122, lēts 118;
  8. priecīgs 221, jautrs 48, drūms 44, bēdīgs 13; 
  9. mājās 4291, darbs 2050, darbā 1039, atpūtā 74, atpūta 72;
  10. Līgo 136, Lieldienas 82, Ziemassvētki 66, kapusvētki 2;
  11. atcerēties 552, mācīties 523, mācīt 284, aizmirst 277;
  12. kāzas 183, bēres 24, dzimšana 21, miršana 4;
  13. izbraukt 242, aizbraukt 154, iebraukt 44, atbraukt 44;
  14. draugs 607, pretinieks 392, ienaidnieks 205, sabiedrotais 52;
  15. cīnīties 1387, karā 641, karš 562, miers 387, mierā 217, padoties 69;
  16. dzīvot 4895, dzīve 1297, nāve 248, nomira 236, mirt 221, piedzima 151, dzimt 13.

Valsts un reliģija

  1. prezidents 1664, ministrs 846, deputāts 534, premjerministrs 145, spīkers 5;
  2. pozīcija 124, frakcija 63, opozīcija 63, koalīcija 43;
  3. Valstij (vienvārdīgie) piederošie uzņēmumi:
    Lattelecom 458, LDz 144, LMT 103, AirBaltic 128, LVM 119, Latvenergo 108;
  4. valsts 18485, baznīca 856, reliģisks 63, valstisks 196, garīgs 23, laicīgs 2;
  5. musulmanis 80, ateists 67, katolis 14, pareizticīgais 2, luterānis 2, budists 7, hinduists 1.

Ģeogrāfija

  1. Latvijas 25307, pasaules 9893, ASV 5915, Rīgas 8928, Eiropas 7856, Krievijas 7036.
  2. Pilsētas: Rīga 1622, Ventspils 1226, Daugavpils 827, Liepāja 305, Salaspils 234;
  3. kalns 437, līcis 321 (var būt arī divdabis), ieleja 130, rags 134 (var būt arī dzīvnieka daļa), paugurs 70, ieplaka 38;
  4. jūra 687, ezers 1295, upe 719, okeāns 286, strauts 73, peļķe 3.

Dzimumu raksturojoši vārdi

  1. Izplatītākie vīriešu vārdi:
    Jānis 2219, Māris 830, Andrejs 728;
  2. Izplatītākie sieviešu vārdi:
    Anna 379, Marija 715, Kristīne 592.
  3. sieviete 1531, sieviešu 1280, vīriešu 898, vīrietis 886; 
  4. priekšnieks 353, direktors 354, direktore 173, priekšniece 13, padotais 9, padotā 2; 
  5. ārsts 534, skolotājs 239, skolotāja 212, ārste 167;
  6. dēls 1071, meita 598, brālis 455, māsa 252;
  7. vīrs 1233, sieva 780;
  8. māte 1506, tēvs 1227, mamma 822, tētis 533.

Nosaukumi

  1. Tehnoloģiju uzņēmumi:
    Facebook 724, Twitter 738, Google 686, Apple 390, Microsoft 225, IBM 108, Tele2 71, Samsung 52, Nokia 63, HP 41, Dell 15;
  2. Operētājsistēmas:
    Windows 518, Linux 172, Android 124, iOS 54;
  3. Auto firmas:
    Audi 1497, BMW 451, VW+VolksWagen 388, Toyota 221, Ford 190, Renault 177, Nissan 149, Volvo 141, Honda 98, Fiat 67, Hyundai 61, VAZ 27 (Hyundai gan varētu likt arī pie tehnoloģiju uzņēmumiem.)
  4. Degvielas uzpildes stacijas:
    Statoil 25, Neste 19, Lukoil 11;
  5. Dižveikali:
    Rimi 490, Maxima 255, Elvi 53;

Angļu valoda

Ir gandrīz neiespējami skatīt tīmekļa lapas latviešu valodā, nesastopot angļu valodu, tāpēc bez latviešu vārdiem savācu arī ļoti daudz vārdu angļu valodā.

Izplatītākie vārdi angļu valodā:
the 34169, a 23439, and 17557, of 14228, in 9714, is 6653, with 4455, news 4257, from 4147, at 4003,

Krievu valoda

Lai arī saturu vācu no Delfu latviešu lapas, to norādot domēna nosaukumā, tomēr savācu salīdzinoši daudz teksta krievu valodā.

Izplatītākie vārdi krievu valodā:
и 13682, в 8284, как 3283, что 3127, это 1601, я 1555, мне 1426, за 1410, для 1322, у 1159

Tags Valoda Tīmeklis Latvija
Created by Valdis Vītoliņš on 2016-05-13 10:19
Last modified by Valdis Vītoliņš on 2021-04-13 14:27
 
Xwiki Powered
Creative Commons Attribution 3.0 Unported License