library(tidyverse) ngramid=read_csv("http://www.tlu.ee/~jaagup/andmed/keel/korpus/ngram3.txt") sagedused=ngramid %>% group_by(ngram3) %>% summarize(kogus=n()) %>% arrange(-kogus) tail(sagedused) sagedused %>% filter(kogus>10000) nrow(ngramid) sagedused$suhtelised=sagedused$kogus/nrow(ngramid) sagedused dokmeta=read_csv("http://www.tlu.ee/~jaagup/andmed/keel/korpus/dokmeta.txt") dokmeta str(dokmeta) soomesagedused=dokmeta %>% filter(emakeel=="soome") %>% inner_join(ngramid, by="kood") %>% group_by(ngram3) %>% summarize(soomekogus=n()) %>% arrange(-soomekogus) soomesagedused$soomesuhtelised=soomesagedused$soomekogus/sum(soomesagedused$soomekogus) soomesagedused #Lisage soome kolmikute suhtelsed sagedused #Arvutage samad andmed ka vene emakeelega autorite tekstide kohta venesagedused=dokmeta %>% filter(emakeel=="vene") %>% inner_join(ngramid, by="kood") %>% group_by(ngram3) %>% summarize(kogus=n()) %>% arrange(-kogus) %>% mutate(suhteline=kogus/sum(kogus)) venesagedused koos=soomesagedused %>% inner_join(venesagedused) koos$keeltesuhe=koos$soomesuhtelised/koos$suhteline koos=koos %>% filter(soomekogus>100 & kogus>100) %>% arrange(keeltesuhe) head(koos) tail(koos) koos #Leidke kolmikute loetelu, kus keeltesuhe on alla 0.75 (soome keeles on vähem, vene keeles rohkem) venekolmikud=filter(koos, keeltesuhe<0.75)$ngram3 venekolmikud #Leidke kolmikute loetelu, kus keeltesuhe on üle 1.5 (soome keeles on rohkem) #Arvutage iga teksti juurde, mitu vene keelele iseloomikku kolmikut selles on tekstikood=dokmeta$kood[1] tekstikolmikud=filter(ngramid, kood==tekstikood) %>% filter(ngram3 %in% venekolmikud) tekstikolmikud nrow(tekstikolmikud) tekstiandmed=dokmeta %>% inner_join(ngramid) %>% group_by(kood, emakeel) %>% summarise(venekogus=sum(ngram3 %in% venekolmikud), soomekogus=sum(ngram3 %in% filter(koos, keeltesuhe>1.5)$ngram3)) tekstiandmed tekstiandmed$emakeel=ifelse(tekstiandmed$emakeel %in% c("vene", "soome"), tekstiandmed$emakeel, "muu") #Arvutage iga teksti juurde, mitu soome keelele iseloomikku kolmikut selles on #Kuvage kõik tekstid XY joonisele nende kahe tunnuse järgi tekstiandmed %>% ggplot(aes(venekogus, soomekogus, col=emakeel))+geom_count() #eristage teksti autori emakeel värvi järgi venetekstid=tekstiandmed %>% filter(venekogus>200 & soomekogus<75) View(venetekstid %>% inner_join(dokmeta)) View(dokmeta[!tekstiandmed$kood %in% venetekstid, ]) #Tehke samad arvutused uuesti läbi #Püüdke leida A ja B keeletaset eristavad kolmikud #Kuvage tekstid nende kolmikute sageduse järgi joonisele