[viesti Survo-keskustelupalstalla (2001-2013)]
Kirjoittaja: | Petri Palmu |
---|---|
Sähköposti: | petri.palmu'at'helsinki.fi |
Päiväys: | 10.7.2005 16:32 |
Terve! Tiedustelisin näkemyksiä ns. text mining työkalujen soveltamisesta tai rakentamisesta Survolla. Esimerkkitapaus: Luokitellaan sairaiskäyntejä potilaan sairauskertomusten perusteella. Erityisesti etsitään vaikkapa allergiaan tai astmaan liittyviä indikaatioita, eli onko kyseinen sairaskäynti liittynyt jollain tavalla allergiaan tai astmaan. "Raakadata" on lääkärin vapaassa muodossa kirjoitettamaa kertomusta potilaan tilasta. Tästä olisi tavoitteena vaikkapa luoda indikaattorimuuttujien aineisto ko. sairauteen liittyvien avainsanojen perusteella: yskä, päänsärky, kuume, kurkkukipu, nuha, hengenahdistus,... Testailin R:n agrep-funktion avulla hyvin yksinkertaista kuviteellista tilannetta, jossa sairaskäyntejä on 4 kpl. Sairaskertomuksessa esiintyisi tyypillisiä oirekuvauksia, sekä kiinnostuksen kohteena olevasta että myös mahdollisesti aivan muista taudeista tai vammoista. *SAVEP CUR+1,e,tm.r *# muodostetaan esimerkkiaineisto a *a <- data.frame("kaynti"=1:4, *"oire"=c("Nuha, yskä, kurkkukipu", "ei yskää, nuhainen, väsymystä", * "kuumetta 38.5, pääsärkyä", "sormimurtuma")) *a *# Oireista omat vektori *oire <- as.character(a[,2]) *# *# Analysoidaan agrep-funktiolla viiden eri allergiaan tai *# astmaan mahdollisesti liittyvän avainsanan esiintymistä *# kussakin käyntitapahtumissa 1-4 *c1 <- agrep("yskä",oire, value=FALSE) *c2 <- agrep("päänsärky",oire,value=FALSE) *c3 <- agrep("kuume",oire,value=FALSE) *c4 <- agrep("kurkkukipu",oire, value=FALSE) *c5 <- agrep("nuha", oire, value=FALSE) *c5 *# *# Tehdään vastaavat dummyt alkuperäiseen aineistoon matchaamalla *# ifelse funktiolla *a$yska <- ifelse(is.na(match(1:length(oire),c1)),0,1) *a$paasark <- ifelse(is.na(match(1:length(oire),c2)),0,1) *a$kuume <- ifelse(is.na(match(1:length(oire),c3)),0,1) *a$kurkkukp <- ifelse(is.na(match(1:length(oire),c4)),0,1) *a$nuha <- ifelse(is.na(match(1:length(oire),c5)),0,1) *a e * yllä olevan R-skriptin ajo /SR tm.r Alkuperäinen raaka-data: kaynti oire 1 1 Nuha, yskä, kurkkukipu 2 2 ei yskää, nuhainen, väsymystä 3 3 kuumetta 38.5, pääsärkyä 4 4 sormimurtuma Sana "nuha" esintyy aineistossa havaintoriveillä 1 ja 2 [1] 1 2 Lopullinen data: kaynti oire yska paasark kuume kurkkukp nuha 1 1 Nuha, yskä, kurkkukipu 1 0 0 1 1 2 2 ei yskää, nuhainen, väsymystä 1 0 0 0 1 3 3 kuumetta 38.5, pääsärkyä 0 1 1 0 0 4 4 sormimurtuma 0 0 0 0 0 Lopullisessa datassa on uusina sarakkeina indikaattorimuuttujat avainsanojen esiintymisessä ao. tapahtumissa. Huomataan, että "algoritmi" ei ymmärtänyt käynnissä nro 2 sanan "ei yskää" merkitystä oikein. Sen sijaan väärinkirjoitettu "päänsärky" tuli huomoiduksi oikein (ks. /R-HELP agrep). Vaikuttaa siltä, että homma vaatisi tuekseen mm. sanastoja ja kielen ymmärtämistä ja tiettyjä (vaativia) teknisiä ratkaisuja. Mutta kiinnostavaa olisi kuulla näkemyksiä siitä, missä määrin Survo voisi toimia apuna edellä kuvatun tyyppisissä tilanteissa. Yhtä hyvin teksti voisi olla alkuperäisessä tekstitiedostossa tai toimituskentässä. t. Petri
Vastaukset: |
---|
Survo-keskustelupalstan (2001-2013) viestit arkistoitiin aika ajoin sukrolla, joka automaattisesti rakensi viesteistä (yli 1600 kpl) HTML-muotoisen sivukokonaisuuden. Vuoden 2013 alusta Survo-keskustelua on jatkettu entistäkin aktiivisemmin osoitteessa forum.survo.fi. Tervetuloa mukaan!