Tällä sivulla voit tarkastella liikenneministeriön tulevaisuuskatsauksen sisältöä ja kansalaisten antamien kommenttien suhdetta siihen.
Alla olevilla työkaluilla voit hakea tekstin jakeita eli erillisiä tekstikappaleita ja niihin liittyviä avainsanoja tai muita jakeita. Relaatiot tarkoittavat kuvailua siitä, millä tavalla kaksi jaetta liittyy toisiinsa.
Tägikone on toteutettu FinICT-projetissa ja sitä voi kuka tahansa hyödyntää omien tekstiaineistojensa rikastamisessa. Muista FinICT-pilottihankkeista, jotka hyödyntävät semanttista rikastusta, voit lukea lisää täältä.
Tägikoneen idea on pitää yllä jaetietokantaa ja määritellään jakeille avainsanoja ja relaatoita joiden tarkoitus on rikastaa sivustolla käydystä keskustelusta analyysikelpoista yleisemmän tason tietoa.
#Jakeet määritellään koodilla joka lukee wikisivuilta tekstiä kappaleittain (myös taulukot ja bullet pointit). Jakeisiin lisätään myös kommentointityökalulla tehdyt kommentit, joita ei vielä ole siirretty wikitekstiin, sekä tämän sivun koodilla lisätyt jakeet. Kullakin jakeella on oma tunniste (JaeID) joka on sivukohtainen. Etsimällä jaehakukoneesta oman kommenttisi ja kopioimalla JaeID:n muihin sivun hakukoneisiin voit tarkastella kommenttiisi liitettyjä tägitietoja.
#Avainsanat ovat jaekohtaisia ja ne lisätään yleensä käsityönä. Avainsanoituksen tekee joko kommentoija itse tai moderaattori.
#Relaatiot voidaan määritellä kahden jakeen välille (myös käsityötä). Relaatiot lisää joko kommentoija itse tai moderaattori.
#Versiot - wikisivuja päivitetään mahdollisesti jatkuvasti, minkä johdosta versiointi on tarpeellista. Hakukoneissa esiintyvä Versio-kentän arvo 'nykyinen' hakee koko hankkeen uusimman version. Koska jakeet ovat versiokohtaisia niin avainsanat ja relaatiot ovat myös versiokohtaisia. Avainsanojen ja relaatioiden automaattista periytymistä on kehitetty, mutta koodi on vielä kesken .
Yhdistelmähakukoneet
Jaekohtainen avainsanalistaus
Hakee jakeita ja näyttää kaikki niihin liittyvät avainsanat
# Eri sisältymistyypit pitää määritellä niin että ne voidaan käsitellä erillään muista relaatioista
sis_opt <- c(
'ehdotus huomioitu ja liittyvää painotusta muutettu',
'ehdotus huomioitu ja uusi kohta lisätty',
'ehdotus ei ole antanut aihetta muutoksiin',
'ehdotus ei ole antanut aihetta muutoksiin vaan sisältyy olennaisesti jo kirjattuun'
)
#liit_opt <- c(
# 'tukee tai on linjassa',
# 'vastustaa tai on ristiriidassa',
# 'on neutraali suhteessa',
# 'on uusi linjaus tai painotus'
#)
library(OpasnetUtils)
library(plyr)
objects.latest("Op_fi4325", "apufunktiot")
# Erottelu pilkuilla ja välilyöntien poisto
if (!is.null(sivu)) sivu <- gsub("^\\s*|\\s*$", "", strsplit(sivu, ",")[[1]])
if (tolower(jaeid == "hae kaikki")) {
jaeid <- NULL
} else {
jaeid <- gsub("^\\s*|\\s*$", "", strsplit(jaeid, ",")[[1]])
}
version <- gsub("^\\s*|\\s*$", "", strsplit(version, ",")[[1]])
a <- tolower(version) == "nykyinen"
if (any(a)) {
version <- version[!a]
version <- c(version, get_current_version(ident))
}
version <- as.numeric(version)
# Add previous and next versions to check for inclusion from previous and into next
original_version <- version
if (!(1 %in% version)) {
prev <- TRUE
version <- c(min(version, na.rm = TRUE) - 1, version)
}
version <- c(version, max(version, na.rm = TRUE) + 1)
filter <- list()
filter$Sivu1 <- sivu
filter$Versio <- version
filter$JaeID1 <- jaeid
rel1 <- try_dl_rm(
paste(ident, "Relaatiot", sep = "."),
filter = filter,
rm_id = paste(ident, "Relaationpoistot", sep = "."),
rm_ind = "RelaatioID"
)
if (is.null(jaeid)) {
rel2 <- data.frame()
} else {
filter$JaeID1 <- NULL
filter$Sivu1 <- NULL
filter$JaeID2 <- jaeid
filter$Sivu2 <- sivu
rel2 <- try_dl_rm(
paste(ident, "Relaatiot", sep = "."),
filter = filter,
rm_id = paste(ident, "Relaationpoistot", sep = "."),
rm_ind = "RelaatioID"
)
}
rel <- rbind(rel1, rel2)
if (!any(original_version %in% rel$Versio)) stop("Annetuilla versiolla ei löytynyt relaatioita.")
if (!is.null(liitsis)) rel <- rel[rel$Result %in% liitsis, ]
if (nrow(rel) == 0) {
cat("Jakeelle ei löytynyt kysyttyjä relaatioita tietokannassa.\n")
} else {
jakeet <- jaehakukone(
ident,
sivu = unique(c(
as.character(rel$Sivu1),
as.character(rel$Sivu2)
)),
versio = version,
jae = unique(c(
as.character(rel$JaeID1),
as.character(rel$JaeID2)
))
)
if (nrow(jakeet) == 0) stop("Relaatioissa listattuja jakeita ei löytynyt!")
# Relaatiot
if (nrow(rel[!(rel$Relaatio %in% sis_opt),]) > 0) {
jakeet <- jakeet[c("Versio", "Sivu", "JaeID", "Result")]
colnames(jakeet)[colnames(jakeet) == "JaeID"] <- "JaeID1"
colnames(jakeet)[colnames(jakeet) == "Sivu"] <- "Sivu1"
colnames(jakeet)[colnames(jakeet) == "Result"] <- "Jae1"
rel <- rel[c("RelaatioID", "Versio", "Sivu1", "JaeID1", "Result", "Sivu2", "JaeID2")]
colnames(rel)[colnames(rel) == "Result"] <- "Relaatio"
out <- join(
rel[(!(rel$Relaatio %in% sis_opt)) & rel$Versio %in% original_version,],
jakeet,
match = "first" # versio - sivu - jaeid -> yksi yhteen
)
colnames(jakeet)[colnames(jakeet) == "JaeID1"] <- "JaeID2"
colnames(jakeet)[colnames(jakeet) == "Sivu1"] <- "Sivu2"
colnames(jakeet)[colnames(jakeet) == "Jae1"] <- "Jae2"
out <- join(out, jakeet, match = "first")
if(details) {
oprint(
out[c("Versio", "RelaatioID", "Sivu1", "JaeID1", "Jae1", "Relaatio", "Sivu2", "JaeID2", "Jae2")],
include.rownames = FALSE,
caption = "Relaatiot",
caption.placement = "top",
show_all = TRUE
)
} else {
temp <- out[c("Versio", "RelaatioID", "Sivu1", "JaeID1", "Jae1", "Relaatio", "Sivu2", "JaeID2", "Jae2")]
temp <- data.frame(
Jae1 = paste(temp$Jae1, " (", temp$Sivu1, ")", sep = ""),
Relaatio = temp$Relaatio,
Jae2 = paste(temp$Jae2, " (", temp$Sivu2, ")", sep = "")
)
oprint(temp,
include.rownames = FALSE,
caption = "Relaatiot",
caption.placement = "top",
show_all = TRUE
)
}
} else {
cat("Ei relaatioita!\n")
}
# Sisällytykset
if (nrow(rel[(rel$Relaatio %in% sis_opt),]) > 0) {
colnames(jakeet)[colnames(jakeet) %in% c("JaeID","JaeID2")] <- "JaeID1"
colnames(jakeet)[colnames(jakeet) %in% c("Sivu", "Sivu2")] <- "Sivu1"
colnames(jakeet)[colnames(jakeet) %in% c("Result", "Jae2")] <- "Jae1"
colnames(rel)[colnames(rel) == "Relaatio"] <- "Sisällytys"
out <- join(
rel[rel$Sisällytys %in% sis_opt & rel$Versio %in% version[-length(version)],],
jakeet,
match = "first" # versio - sivu - jaeid -> yksi yhteen
)
colnames(jakeet)[colnames(jakeet) == "JaeID1"] <- "JaeID2"
colnames(jakeet)[colnames(jakeet) == "Sivu1"] <- "Sivu2"
colnames(jakeet)[colnames(jakeet) == "Jae1"] <- "Jae2"
jakeet$Versio <- as.numeric(as.character(jakeet$Versio)) - 1
out <- join(out, jakeet, match = "first")
oprint(
out[c("Versio", "RelaatioID", "Sivu1", "JaeID1", "Jae1", "Sisällytys", "Sivu2", "JaeID2", "Jae2")],
include.rownames = FALSE,
caption = "Sisällytys (uudempaan versioon)",
caption.placement = "top",
show_all = TRUE
)
} else {
cat("Ei sisällytyksiä!\n")
}
}
Avainsana- ja relaatiotietojen analyysi
Hae jakeita annetuilla kriteereillä ja vertaile avainsanojen ja relaatioiden lukumääriä. Halutessasi voit myös listata jaeosumat. Vapaakenttiin voi syöttää useita arvoja erottelemalla ne pilkuilla.
Käytetyt avainsanat:
Näytä yksityiskohdat
3D-tulostus Aikataulut Ajoneuvokanta Alueellisuus
alustus Ammattiryhmät Arvo Asutus
Aurinko Automatisaatio Avoimuus Big Data
Biopolttoaine Dataliikenne Digitalisoituminen Eettisyys
eIDAS Elintaso Energia Epäselvä luokka
Eriarvoisuus Erityisryhmät Esineiden internet Globaalius
Globaaluis Henkilökortti Henkilötiedot Huutokauppa
Hybridi Hybridi-TV Hyvinvointi Hyvinvointiyhteiskunta
Häiriöt Ilmasto Infrastruktuuri Innovatiivisus
Innovatiivisuus Internet Investoinnit Joukkoliikenne
Joustavuus Julkinen valta Kaivosteollisuus Kansainvälisyys
Kasvihuonekaasut Kaupallisuus Kaupungit Kehitys
Kestävyys Kevyen liikenteen väylät Kevytliikenne Kiinteistöt
Kilpailu Kilpailukyky Konesalit Konkreettisuus
Kotimaisuus Koulutus Kunnat Kustannustehokkuus
Kuuluvuus Kävely Laajakaista Lainsäädäntö
Laiton tarjonta Langattomuus Lappi Lentoliikenne
Liikenne Liikenneverkostot Liikkumistili Linja-autot
Logistiikka Luonnonsuojelu Lämmitys Maakaasu
Maatalous Mainonta Markkinat Massavalvonta
Meriliikenne Metadata Mobiiliverkko Mopot
Nopeus Ohjaus Ohjelmistot Ohjelmistotoimittaja
Oikeusturva Omavaraisuus Operaattori Osaaminen
Ostovoima Palaute Palvelut Palvelutaso
Peruskunto Pilvipalvelut Polttoaine Posti
Puelueettomuus Pysäköinti Pyöräily Päivitys
Pääkaupunkiseutu Päästöt Päätöksenteko Päätös
Raha Rahoitus Rahtliikenne Rajapinnat
Rakennemuutos Rakentaminen Raskas liikenne Rautatiet
Riippuvuus Rikokset Robotisaatio Ruuhkamaksu
Ruuhkautuminen Saatavuus Sateliittipaikannus Sovellukset
Strategia Suunnittelu Sähkö Sähköauto
Sääntely Säästöt Talous Talouskasvu
Tarpeet Tasa-arvo Tasapuolisuus Tasavertaisuus
Tavaraliikenne Tehokkuus Tekijänoikeus Tekniikkaneutraalius
Tekninen tuki Teknologia Teknologianeutraalius Teollisuus
Terveydenhuolto Terveys testi Tiedon avoimuus
Tiedon hallinnointi Tiedon hallinta Tiedon hyödyntäminen Tieliikenne
Tietoliikenne Tietoturva Toimilupa Toiminta
Toimintavarmuus Toimivuus Tuki Turvallisuus
Turvaverkko Tutkimus Tuuli TV
Työllisyys Työn tekemiseen liittyvä Ulkomaat Uudistus
Vaihtoehtoiset polttoaineet Vaikuttaminen Vaikutus Vakuutus
Valinnanvapaus Valtio Varmenne Varmuus
Vastuu Verkostoituminen Verotus Vesiliikenne
Vesiliikenne, Tasavertaisuus Viestintäverkot Viranomaiset Yhteensopivuus
Yhteiskunta Yhteiskuntamurros Yhteistyö Yhteysnopeus
Yksityisautoilu Yksityisyydensuoja YLE Yleispalvelu
Yleisradio Ympäristö Yritykset Öljy
library(OpasnetUtils)
library(plyr)
objects.latest("Op_fi4325", "apufunktiot")
# Erottelu pilkuilla ja välilyöntien poisto
if (!is.null(sivu)) sivu <- gsub("^\\s*|\\s*$", "", strsplit(sivu, ",")[[1]])
if (tolower(jaeid == "hae kaikki")) {
jaeid <- NULL
} else {
jaeid <- gsub("^\\s*|\\s*$", "", strsplit(jaeid, ",")[[1]])
}
version <- gsub("^\\s*|\\s*$", "", strsplit(version, ",")[[1]])
a <- tolower(version) == "nykyinen"
if (any(a)) {
version <- version[!a]
version <- c(version, get_current_version(ident))
}
version <- as.numeric(version)
filter <- list()
filter$Sivu <- sivu
filter$Versio <- version
filter$JaeID <- jaeid
out <- try_dl_rm(
paste(ident, "Avainsanat", sep = "."),
filter = filter,
rm_id = paste(ident, "Avainsananpoistot", sep = "."),
rm_ind = "AvainsanaID"
)
if (nrow(out) > 0) {
oprint(out, include.rownames = FALSE)
} else {
cat("Avainsanoja ei löytynyt!\n")
}
Avainsanoitus
Lisää annetut avainsanat tietokantaan. Avainanoja voidaan lisätä ruksaamalla annetusta listasta (vain yleisimmät) ja syöttämällä vapaakenttään pilkulla eroteltuna.
Lisää uuden relaation tietokantaan. Samantyyppisiä relaatioita voi kerralla lisätä useita, kun erottelee JaeID:t pilkuilla: relaatiot voi tehdä kaikki yhteen, yksi kaikkiin tai yksi yhteen.
Lisää uuden sisällytyksen tietokantaan. Sisällytys tapahtuu aina seuraavaan versioon. Samantyyppisiä sisällytyksiä voi kerralla lisätä useita, kun erottelee JaeID:t pilkuilla: sisällytykset voi tehdä kaikki yhteen, yksi kaikkiin tai yksi yhteen.
library(OpasnetUtils)
relid <- strsplit(relid, ",", fixed = TRUE)[[1]]
relid <- gsub(" ", "", relid)
if (tolower(version) == "nykyinen") {
objects.latest("Op_fi4325", "apufunktiot")
version <- get_current_version(ident)
} else {
version <- as.numeric(version)
}
dat <- data.frame(
Versio = version,
Aika = date(),
Käyttäjä = wiki_username,
Syy = syy,
Result = relid
)
opbase.upload(
dat,
ident = ident,
name = pagename,
subset = "Relaationpoistot",
act_type = "append",
language = "fin",
who = wiki_username
)
cat("Relaatio poistettiin onnistuneesti.\n")
Sulautus (automaattinen sisällytys)
Etsii edellisestä versiosta jakeita joiden sisältö löytyy uudessa versiossa jonkin jakeen sisällöstä. Koodi on keskeneräinen johtuen R:n peruskirjaston sisäisestä bugista joka estää samanaikaisen approksimaalisen että osittaisen osuman haun pitkistä teksteistä.Näytä tulokset
Alla olevassa taulukossa on listattuna hankkeeseen kuuluvat sivut versiokohtaisesti. Tätä taulukkoa käytetään lähes kaikissa tämän sivun hakukoneissa määrittämään nykyinen versio (jokaista sivua kohden on lisättävä uusi rivi aina kun uusi versio luodaan, sikäli kun sivu on vielä mukana hankkeessa) sekä haettaessa kommentteja sivukohtaisista tietokannoista. Periaatteessa taulukkoa myös käytettäisiin määrittelemään sivujen versiokohtaiset revisiot (päivitysajankohtaiset sivut) wiki-jakeiden konelukemista varten, mutta koska tässä hankkeessa suurin osa työstä tehtiin ennen viimeistä versiota niin tätä toiminnallisuutta ei voida käyttää koska JaeID:t menisivät sekaisin.