Neiskorišteni potencijalni analize teksta u RH

Nedavno sam razgovarao s kolegom s Ekonomskog fakulteta o mogućem utjecaju velikih količina podataka na (makro)ekonomiju. U razgovoru smo se dotakli jednog praktičnog primjera o korištenju javno dostupnih, nestrukturiranih, relativno velikih podataka u makroekonomskim istraživanjima. Riječ je o tekstovima koji se nalaze na webu. Dok se podaci statističkih zavoda uglavnom nalaze u strukturiranoj formi, za analizu tekstova dostupnih na webu potrebno je uložiti određeni napor da bi se podatci preuzeli i uredili za statističku ili neku drugu analizu. Jedna vrsta tih podataka su i tekstovi koji se nalaze na posjećenim hrvatskim web portalima, poput Indexa, 24 sata, jutarnjeg, večernjeg lista i td. Podaci prikupljeni s ovih stranica mogu se koristiti u makroekonomskoj analizi. U konkretnom slučaju o kojem smo raspravljali, radilo s o prikupljanju podataka o učestalosti korištenja riječi “recesija” na javnim portalima, što se može koristiti kao indikator moguće recesije. U ovom postu ću pokušati na jednostavnom primjeru prikazati kako bi se podaci za takvu analizu mogli prikupiti pomoću programskog paketa R.

Proces prikupljanja sadržaja sa web stranica naziva se web crawling, a skripta koja automatski prikuplja podatke naziva se bot. Jednostavno rečeno, bot posjećuje željene web stranice, preuzima željeni sadržaj (cjelokupan ili parcijalan) i prati poveznice koje se nalaze na stranici. Cilj je posjetiti sve željene stranice i preuzeti sve podatke od interesa. To može uključivati kompletan tekst sa neke domene (što nije preporučljivo) ili samo određeni tekst sa nekih poveznica (recimo naslove filmova znanstvene fantastike). Najpoznatiji bot na svijetu je Google. Iako do sada možda niste razmišljali na ovaj način, Google ustvari crawla ogromni broj poveznica i sprema sadržaje pronađene na poveznicama na vlastite servere. Potom omogućuje pretragu teksta koji se nalazi na serveru.

R ima razvijen paket upravo za ovu svrhu, a zove se Rcrawler. Ovaj paket je vrlo jednostavan i mogu ga koristiti čak i apsolutni početnici u programiranju i web crawlingu. Osobno ne koristim predmetni paket jer mi ne daje potpunu kontrolu nad procesom web crawlinga, ali za početnike je najbolji izbor. Prije web scrapinga uvijek je preporučljivo pročitati opće uvjete korištenja koji se nalaze na stranici. Stranice uglavnom ne dopuštaju brzo i masovno preuzimanje podataka. Korisno je crawler napraviti na način da se preuzimaju samo ciljane web stranice i dijelove teksta koji su zaista potrebni. Nije poželjno koristiti veliki broj paralelnih R procesa jer će Vam vrlo vjerojatno pristup biti zabranjen. Također, poželjno je između svakog GET zahtjeva koristiti određen vremenski zastoj.

U nastavku prikazujem jednostavnu analizu podataka teksta na temelju članaka preuzetih sa hrvatskog web portala Večernji.hr. Podaci uključuju razdoblje 1.1.2018. - 28.3.2019. Baza podataka sadrži ukupno 65.822 tekstova iz raznih područja (vijesti, posao, showbizz i td.). Prije analize je bilo potrebno urediti podatke i strukturirati podatke. Prvo sam napravio tokenizaciju svih objavljenih tekstova. Tokenizacija podrazumijeva transformaciju tekstova u tokene (riječi). Primjerice, rečenica: “Čitam blog CroEcon” se pretvara u vektor tokena: (“čitam”, “blog”, “croecon”). Nakon tokenizacije, iz vektora su izbačene “stop riječi”. “Stop riječi” su riječi koje se vrlo često pojavljuju u nekom jeziku. Primjer stop riječi u hrvatskom su “a”, “ali”, “bi” itd. Treba napomenuti da različiti NLP (Natural language processing) paketi sadrže različiti skup stop riječi. Za potrebe ovog posta sam koristio riječi paketa quanteda.

Nakon prilagodbe podataka, možemo napraviti nekoliko jednostavnih analiza. Za početak je korisno pogledati najkorištenije riječi u svim tekstovima. Prikazat ćemo 50 najkorištenijih riječi.

Table 1: Tablica 1
Token Frekvencija
godine 61822
više 56024
zbog 46307
rekao 39575
godina 37604
ima 37531
može 34849
prema 32467
dok 31274
kad 30697
dana 30034
hrvatske 29848
jedan 28411
posto 27551
ljudi 27227
bez 26860
danas 26849
sada 26428
protiv 26319
hrvatskoj 26309
oko 26151
kuna 25961
kaže 25238
hrvatska 24233
tri 23636
pogledajte 23367
mogu 23241
toga 23092
dva 22752
gdje 22555
vrijeme 22124
im 22105
treba 21509
1 21303
kod 20704
milijuna 20579
ove 19957
prvi 19570
kojem 18451
nekoliko 18449
uvijek 17434
dvije 17387
čak 17338
kojoj 16954
2 16936
ovo 16730
dobro 16451
puno 16408
hdz 16232
sad 15924

Najkorištenija riječ je riječ “godine”, dok je riječ istog korijena, “godina”, na petom mjestu. Može se primijetiti veliki broj često korištenih riječi, poput “više” i “zbog”. Neki NLP paketi ove riječi uključuju u “stop” riječi (npr. poznati python paket spacy). Zanimljivo je da se na vrlo visokom 49. mjestu nalazi ¸“hdz”. Pojam “hdz” je čak učestaliji i od riječi sad. Zanimljivo je primjetiti da se na dosta visokom mjestu nalazi i riječ kuna. Na visokom mjestu su i pojmovi “novci” i “milijuni”, što ukazuje na vrlo veliki broj tekstova na o novcu i ekonomiji.

Prethodnu analizu sam ponovio na tekstovima s najvećim brojem komentara. Dakle, htio sam vidjeti koje riječi koreliraju sa velikim brojem komentara. Za jasnu identifikaciju bi bilo potrebno provesti statistički tekst, ali ova jednostavna analiza može stvoriti predodžbu o korelacijama između riječi i komentara. Dakle, prvo sam izabrao 100 tekstova sa najviše komentara te sam izdovjio najfrekventnije riječi.

Token Frekvencija
hrvatske 325
rekao 273
ljudi 227
prema 222
hrvatska 218
zbog 215
foto 201
oko 190
trgu 186
više 184
hrvatskoj 172
sati 165
bana 134
jelačića 134
između 130
protiv 129
može 128
danas 121
gdje 118
ima 118
godine 117
vučić 115
trga 107
trg 105
pixsell 102
rekla 102
kaže 101
predsjednik 99
dok 95
policija 95
srbije 95
pogledajte 94
reprezentacije 94
republike 94
hdz 93
kad 92
migranata 90
putin 90
vatrenima 88
im 87
kazao 86
policije 85
godina 84
put 83
autobus 82
među 81
posto 81
ulica 81
zagrebu 81
dana 80

Osim uobičajenih riječi, koje se pojavljuju, u svim tekstovima, poput “rekao”, “prema”, “ljudi”, postoje određene riječi koje se ne pojavljuju na listi najčešće korištenih riječi u tablici 1. To se posebno odnosi na riječi “vučić” i “srbije”. Očito je da tekstovi o Srbiji i Srpskom predsjedniku privlače veliki broj komentara. Vrlo visoko se nalazi i pojam “reprezentacije” i “vatreni”, što znači da ljudi vrlo često komentiraju nastupe reprezentacije. Od zanimljivijih riječi se još pojavljuju i pojmovi “migranta” i “putin”. Pogledajmo još prikaz najučestalijih riječi poznatog autora Nine Raspudića, koji ima ukupno 70 tekstova:

Token Frekvencija
hdz 242
više 222
kad 197
može 183
im 162
bez 159
zašto 154
ljudi 148
nitko 146
onda 142
tko 141
prema 138
danas 133
godina 131
ima 130
sada 130
hrvatskoj 126
dok 117
zbog 117
dakle 116
plenković 108
treba 108
kojem 103
oko 103
kojeg 99
dana 97
hrvatske 97
godine 95
jedan 94
protiv 93
vrijeme 89
eu 87
poput 87
hrvatska 86
mogu 85
možda 85
čemu 82
tom 81
čini 80
prvi 79
malo 78
primjerice 76
puno 76
sdp 76
drugi 75
kojoj 75
dio 74
radi 73
toga 72

Iz ove pregledne analize bi se dalo zaključiti da Nino Raspudić najviše piše o HDZ-u i premijeru Plenkoviću. Vjerujem da čitatelji već mogu uvidjeti koristi od analize tekstova, kako za analizu medija, politike, tako i za analizu ekonomije.

S obzirom da je primjena analize teksta na ekonomske fenomene bila motivacijski pokretač ovog posta, dodatno sam analizirao određene ekonomske pojmove. Pogledajmo primjerice koliko često se pojam recesije pojavljivao u tekstovima:

Graf pokazuje relativno ujednačenu frekvenciju pojma “recesija” do veljače 2019. Pojam recesija je naviše puta spomenut 23.2.2019. Međutim, važno je podsjetiti da jedan članak može više puta koristiti isti pojam. Primjerice, 23.02. objavljen je tekst pod naslovom: “Je li Hrvatska pred novom recesijom? Stručnjak otkriva što je slično kao i 2008. godine”. Očito je da samo taj jedan tekst može sadržavati veliki broj pojmova recesija. Sljedeća tablica pokazuje pet datuma sa najvećom frekvencijom pojma “recesija”:

datumShort Frekvencija
2019-02-23 21
2019-02-01 16
2018-09-27 14
2019-01-31 12
2019-02-12 12
2019-02-15 12

Ako bi se iz grafa zaključivalo o riziku pojave nove recesije. čini se da je postojao signal pojave recesije u veljači i ožujku, ali da u posljednjih nekoliko dana ovaj signal oslabio. Ova kretanja su možda povezana i s događanjima u Uljaniku:

Cijela ova analiza pokazuje veliki potencijal primjene tekstualne analize na analizu teksta, medija, politike i ostalih područja. Najveće ograničenje predstavlja prikupljanje podataka s web-a (čime se inače bavimo :)), dok je analiza teksta lakši i zanimljivi dio U budućnosti možemo očekivati sve više tekstualnih analiza u ekonomiju, posebno u području nowcastinga.



Comments powered by Talkyard.

Preplatite se

Preplatite se putem newslettera ili RSS feeda

Vidi također