Jednoduchá analýza dát: Aké slová najčastejšie používajú politici v Národnej rade?

V tomto článku sa odkloním od predchádzajúcej témy a zameriam sa na oblasť, ktorej sa postupne snažím po profesnej stránke venovať, a síce spracovávanie dát. Na paškál som si vzal vystúpenia našich politikov v Národnej rade, k čomu ma inšpirovala bakalárska práca spolužiačky z vysokej školy, ktorá podobnú úlohu riešila u bratov Čechov.

Článok vysvetľuje postup, akým som získal finálne čísla, nemá za úlohu politikov hodnotiť.

Získanie surových dát

Takže, čo som si to vlastne vymyslel za úlohu? Chcem zistiť, aké slová najčastejšie používajú jednotliví politici počas vystúpení v Národnej rade. Ako prvý najjednoduchší výstup si predstavujem stĺpcový graf pre každého rečníka, ktorý by zobrazoval ním najviac vyslovované slová spolu s počtom použití.

Prvou vecou, ktorú potrebujeme, sú nejaké surové dáta na spracovanie. Na http://tv.nrsr.sk sa našťastie v relatívne slušnej podobe nachádzajú prepisy všetkých vystúpení. Čo teda s tým? Webové stránky sú napísané v jazyku HTML. Ak v Google Chrome kliknete pravým tlačidlom myši na ľubovoľné miesto na stránke a zvolíte možnosť zobraziť zdrojový kód, tak uvidíte s čím sa váš prehliadač musí popasovať, aby vám nakreslil to, čo vnímate ako webovú stránku. HTML kód však nemusí slúžiť len ako omaľovánka pre Chrome. Dáva textu na stránke aj určitú štruktúru, vďaka čomu je možné z neho vytiahnuť informácie, ktoré nás zaujímajú. To samozrejme môžeme urobiť a po chvíľke čakania budeme mať k dispozícii tabuľku obsahujúcu meno rečníka, dátum, čas a text všetkých vystúpení počas aktuálneho volebného obdobia. K tomu ešte pripojíme nejaký unikátny identifikátor, niečo ako rodné číslo pre každé vystúpenie a máme celkom solídny základ.

Číslo vyst. Dátum a čas Rečník Text
200 9. 5. 2017 13:05 Veronika Remišová Ďakujem. Ja tiež budem mať …

Rozdelenie na slová

Máme teda texty vystúpení a ich autorov. Čo s nimi ďalej? Keďže chceme spočítať slová, asi by nebolo úplne na škodu si texty na ne rozdeliť. V programovacom jazyku Python nič zložité, treba si ale dať pozor na pár vecí: nechceme interpunkčné znamienka a asi by bolo dobré, aby sme mali všetky slová malými písmenami, nech máme istotu, že “Myslím” a “myslím” nám nebude počítač rátať oddelene. Opäť, obe záležitosti celkom jednoduché. Výsledkom tohto kroku bude tabuľka obsahujúca meno rečníka, slovo, ktoré povedal, a identifikátor vystúpenia, ku ktorému dané slovo patrí. Zatiaľ si značíme každý výskyt daného slova, takže nám nevadí, ak budeme mať v dvoch riadkoch tabuľky kľudne aj úplne totožné hodnoty.

Rečník Slovo Číslo vystúpenia
Oto Žarnay školy 2500
Oto Žarnay ste 3921

Počítanie slov

Tak a teraz sa bude počítať. Vytvoríme si novú tabuľku, ktorá bude mať takúto štruktúru:

Rečník Slovo Počet výskytov

Na začiatku bude táto tabuľka prázdna. Postupne budeme prechádzať všetký slová získané z vystúpení a pre každé z nich vykonáme nasledujúcu akciu: ak je daná dvojica rečník + slovo už v tabuľke, tak zvýš počet výskytov o jeden, inak pridaj do tabuľky nový riadok s počtom výskytov 1.

Povedzme, že prvé slovo, ktoré budeme spracovávať, bude “ďakujem” od Bélu Bugára. Tabuľka je prázna, to znamená, že v nej dvojica “Béla Bugár – ďakujem” ešte nie je. Pridáme teda nový riadok:

Rečník Slovo Počet výskytov
Béla Bugár ďakujem 1

Ďalším slovom bude “napríklad” vyslovené Veronikou Remišovou. Opäť, túto dvojicu ešte v tabuľke nemáme, takže musíme pridať úplne nový záznam:

Rečník Slovo Počet výskytov
Béla Bugár ďakujem 1
Veronika Remišová napríklad 1

Tretím slovom bude znova “ďakujem” od Bélu Bugára. To však už v našej tabuľke máme. Nepridávame teda nič nové, miesto toho zvýšime počet výskytov o 1.

Rečník Slovo Počet výskytov
Béla Bugár ďakujem 2
Veronika Remišová napríklad 1

Generovanie grafov

Posledná časť spracovania je z programátorského hľadiska veľmi jednoduchá: Z predchádzajúcej tabuľky si vyberieme slová patriace určitému politikovi, zoradíme si ich podľa počtu výskytov, vezmeme napríklad 15 najpoužívanejších a nakreslíme graf. Má to iba jednu kozmetickú chybičku: medzi najpoužívanejšie slová budú patriť rôzne spojky a predložky, tie nás však až tak veľmi nezaújimajú.

Chce to teda nejaký zoznam slov, ktoré by sme radi ignorovali. Našťastie pre nás niečo také už existuje. Tým niečím sú stop slová, napoužívanejšie slová určitého jazyka, v našom prípade slovenčiny. Často sa používajú pri analýzte textov v prirodzenom jazyku. Okrem toho, aby sme mali grafy so zaujímavejšími číslami, môžu zohrávať dôležitú úlohu pri hľadaní dôležítého textu na webových stránkach. Ak by sme chceli vytvoriť nástroj, ktorý by nám z webovej stránky vytiahol text aktuality alebo článku, môžeme merať, ako často sa v jednotlivých častiach stránky používajú stop slová. Časté použitie indikuje súvislý text, ktorý by nás mohol zaujímať, zatiaľ čo v menu až tak veľa stop slov nebude (samozrejme, presnosť nie je 100-percentná).

Záver

Výsledné grafy si môžete stiahnuť tu. Zdrojové kódy sú samozrejme k dispozícii na GitHube. Keď budem mať viac času, snáť sa mi z grafov podarí vytvoriť nejakú sympatickú webovú hračku. Je tu však kopa ďalších vecí, ktoré by sa dali vylepšiť:

  • výskyt slov zisťovať pre celé politické strany, nie len jednotlivých politikov,
  • zlepšiť zoznam stop slov napríklad tým, že zistíme najpoužívanejšie slová nie v slovenskom jazyku ale v parlamente,
  • zoskupovanie slov. V tomto momente slová myslím, myslenie, myslel počítame oddelene. Bolo by zaujímavé všetky slová brať ako jedno jediné,
  • zo získaných dát by sa dal natrénovať jednoduchý klasifikátor, ktorý by bol schopný zistiť autora určitého vystúpenia.

Nápadov je veľa, času málo. Určite sa ale k tomuto projektu ešte v budúcnosti vrátim.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *