R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

Yksinkertaista tekstinlouhintaa

Olen tainnut useammankin kerran kirjoittaa R:n tarjoamista mahdollisuuksista harrastaa ruudunkaavintaa (screen scraping). R:ssä on myös varsin hyvät ominaisuudet esimerkiksi tekstinlouhintaa ajatellen, esimerkiksi paketit tm ja qdap. Ruudunkaavinnalla hankitun tekstuaalisen aineiston analyysissä tekstinlouhintatyökalut ovat varsin keskeisiä. Harmillisesti toiminnallisuus keskittyy etupäässä englanninkielisen tekstin käsittelyyn, ja suomenkielistä tekstiä varten soveltuvia analyysiä tukevia aineistoja, esimerkiksi sanalistoja, ei ole kovin hyvin tarjolla. Tässä kirjoituksessa on kuitenkin eräistä esimerkkejä suomenkilistä tekstiä ajatellen: Haetaan ensin materiaalia Suomi24-keskustelupalstalta (huomioi foorumin käyttöehdot!), ja analysoidaan sitä sitten yksinkertaisella analyysifunktiolla. Koko putki toimii täysin automaattisesti, jos niin halutaan. Funktioiden koodi löytyy tämän kirjoituksen lopusta. Funktioiden koodi on tarpeen kopioida ja liittää R:ään ennen esimerkkien kokeilua.

Koko putki toimii jokseenkin seuraavasti:

1. Haetaan ensin asiasanalla kommentteja Suomi24:stä funktiolla suomi24().
2. Prosessoidaan haetusta aineisto tarvittavat kentät funktiolla suomi24process().
3. Muokataan prosessoitu tieto taulukkomuotoon funktiolla suomi24lue()
4. Oikoluetaan ja korjataan kirjoitusvirheet aineistosta funktiolla oikolue().
5. Tehdään taulukolle yksinkertainen analyysi funktiolla analyze.corpus().

Esimerkiksi asiasanalla vauva voitaisiin tehdä analyysi seuraavasti:

# Ladataan funktiot
source("http://koti.mbnet.fi/tuimala/tiedostot/some.R")
# Funktio palauttaa polun haetun datan kansioon (tempdir)
# Hakee asiasanalla vauva korkeintaa 10 keskusteluketjua
path<-suomi24("vauva", 10)
# Jos funktio kaatuu, voi polun määritellä käsinkin:
path<-"C:\\Users\\käyttäjä\\Desktop\\vauva"
# Aineiston prosessointi 
suomi24process(path)
# Aineisto taulukkoon
suomi24lue(path)
 
setwd("C:/Users/käyttäjä/Desktop")
# Analyysissä tarvittavat sanalistat
# Lataa osoitteesta http://koti.mbnet.fi/tuimala/tiedostot
load("finnish-stopwords.RData")
load("finnish-dictionary.RData")
# Oikolukeminen (ei pakollinen)
dat$text<-oikolue(dat$text)
# Analyysi
# Funktio osaa myös esimerkiksi tehdä stemmingin suomalaisille sanoille
# ks. args(analyze.corpus)
ac<-analyze.corpus(dat)

Tuloksena pitäisi olla kolme kuvaa (ks. alla) sekä objekti ac, joka on lista. Kussakin listan alkiossa on sen nimen indikoima analyysituloste.

Kuva, joka esittää eri keskusteluketjujen väliset suhteet:

Yleisimmät kommenteissa mainittujen kahden sanan väliset liitot sanapilvenä:

Yleisimmät kommenteissa esiintyneet sanat sanapilvenä:

Yleisimmät kahden sanan liitokset näyttävät olevan esimerkiksi ”pienen vauvan” ja ”odotan vauvaa”. Yleisimmät sanat, kun funktio on ensin poistanut päätesanat, ovat muun muassa ”lapset”, ”mies”, ja ”lue”. Yllä esitetty tiedon keräys ja analysointi perusmuodossaan toimivat hyvin automaattisesti, joskin jos kerää suuren määrän keskusteluketjuja, voi aineiston kerääminen kestää pitkään (tunteja). Itse esikäsittely ja analyysi vie aineiston keräämiseen verrattuna paljon vähemmän aikaa (minuutteja).


Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *