Tässä mielenkiintoinen ongelma. Ratkoin Seuran tietokilpailuja kokeilumielesä tietokoneen avulla. Yksi kysymys kuului: "Mikä lintu? Tämä mestarilentäjä ei käytännössä käy koskaan maassa." En tiedä mitä olisin kirjoittanut Googleen ja Wikiin, että olisin tuon selvittänyt.
Millä tavalla voisi toimia sellainen systeemi, jolla tuo ratkeaisi? Jos joku vaikka tekisi tietokannan linnuista, tuollaista tarvittaisiin.
Ajattelin jotain seuraavaa koodausta:
"tervapääsky lento -maa"
Eli lintu saisi negatiivisen arvon "maasta", joka olisi yleinen termi. Sitten seuraavilla haulla löytyisi oikea lintu:
"-maa" tai " lento"
Onko parempia ideoita?
Millä tavalla voisi toimia sellainen systeemi, jolla tuo ratkeaisi? Jos joku vaikka tekisi tietokannan linnuista, tuollaista tarvittaisiin.
Ajattelin jotain seuraavaa koodausta:
"tervapääsky lento -maa"
Eli lintu saisi negatiivisen arvon "maasta", joka olisi yleinen termi. Sitten seuraavilla haulla löytyisi oikea lintu:
"-maa" tai " lento"
Onko parempia ideoita?
Vastaukset 17
Vanhimmat
jos kerta olet jo tervapääskyyn päätynyt, niin miksi enää pistää jotain sekoittavia hakuehtoja siihen perään?
"lento" ja "maa" nyt ei muutenkaan välttämättä edes esiinny tuollaisenaan samalla sivulla.
"lintu" "ei laskeudu koskaan"
tuotti minusta ihan ok tulokset
Ei nyt ollut kyseessä Googlen käyttö, vaan sellaisen ohjelman tai järjestelmän tekeminen, jossa ei tarvitsisi kikkailla noilla hakusanoilla.
"Tervapääskyn" tai "Apus apus" nimet tietäen löytää helposti tuon linnun erikoisen ominaisuuden nykyisillä hakutekniikoilla mutta ominaisuudesta ei lintua saa niin helpolla. Kielellisesti asian voi sanoa 10 000 eri tavalla, niin kuin tuo "ei lauskeudu koskaan".
Haluaisin vaikka että linnun ominaisuuskin saisi jonkun ID:n vaikka 4090923404979.
vaikka tietokanta sisältäisi vain lintuja. Pitäis kaikki mahdolliset ominaisuudet listata ja vielä pistää joka linnulle ja - niihin.
Hakukäyttöliittymä pitäisi olla sitten semmonen, että pistettäisiin vain rukseja ominaisuuksien kohdalle, joita ois näytöllä vaikka tuhat.
Isotöinen mutta ei nyt niin hankala.
Ei joka linnulle välttämättä tarvitsisi pistää maa tai -maa, vaan niille joilla on erityispiirteitä sen suhteen.
Haussa voitaisiin valita ominaisuuksia sanoja ja vaikka kuvia klikkaamalla. Vettä esittävä kuva veisi vesi määritellyille linnuille.
Tuolla ajattelin jo yksinkertaisen luonnollisen kielen soveltamista:
http://keskustelu.suomi24.fi/show.fcgi?category=2000000000000020&conference=681&posting=22000000009392303
Tietojenkäsittelytieteessä / kieliteknologiassa tuo tekniikka tunnetaan annotointina. Google opettaa tässäkin (hae vaikka entity annotation). Hirveä homma tuottaa kaikista maailman asioista rakenteista tietoa josta tietokone osaisi järkevästi etsiä Semmoisiakin hulluja maailmassa on jotka sitä jatkuvasti tekevät.
"Hirveä homma tuottaa kaikista maailman asioista rakenteista tietoa josta tietokone osaisi järkevästi etsiä"
Ennemmin sitä tietoa voisi kutsua "rakenteelliseksi mittausdataksi".
"Semmoisiakin hulluja maailmassa on jotka sitä jatkuvasti tekevät."
Juu, "Museo Suomi" on pahanlaatuinen esimerkki... Enkä silti oikein löydä sieltä oikein mitään.
Jos vähän yleisempi kuin vain lintuja käsittelevä vastaaaja kiinnostaa, niin pistä Googleen hakuun "question answering" filetype:pdf ja ala lukea. Järjestelmä joka osaa vastata luonnollisella kielellä annettuihin kysymyksiin on aika yleinenkin tutkimuksen kohde.
Muutama englanninkielinen versio;
http://www.brainboost.com/
http://start.csail.mit.edu/
Lintukysymykseen vastaus;
http://www.brainboost.com/search.asp?Q=which bird never lands&Submit=Ask
Ei tälläisiä, juuri näistä pitää päästä eroon...
Edelleen mä luulen että tuo on juuri sitä mitä etsit, vähän erilaisessa muodossa vain. Eli noissa linkeissä hakupalkkiin voi kirjoittaa luonnollisella kielellä kirjoitetun kysymyksen, vaikka sitten "mikä mestarilentäjä ei koskaan laskeudu maahan".
Tuolla toisessa keskustelussa viitattiin luonnollisen kielen ymmärtämisen vaikeuteen. Kysymysvastausjärjestelmissäkin suurin ongelma on kysymyksen ymmärtäminen. Yksi hommaa helpottava keino on etsiä jotain yleisempiä sanoja kysymyksessä esiintyvien kummallisten ilmaisujen tilalle, esim mestarilentäjä -> lentokykyinen -> lintu, jolloin kysymys tulee muotoon "mikä lintu ei laskeudu". Englanniksi tuommoinen järjestelmä on valmiina jo; http://www.cogsci.princeton.edu/cgi-bin/webwn
Tuon rakenteisen tai annotoidun tietokannan rakentaminen ei ole mikään ongelma, se vaatii vain työtä (automaattisia annotointijärjestelmiäkin on olemassa..). Suurin ongelma on tuon Seuran toimittajan kirjoittaman kysymyksen tulkitseminen.
Henkilökohtaisesti haluaisin ainakin järjestelmän josta pystyy suoraan hakemaan tiettyä tietoa, ennemmin kuin järjestelmän jossa "kaikki maailman asiat" ovat jossain puumuodossa ja josta pitää itse etsiä haluttu tieto. Mutta jos intoa riittää ja olet vakuuttunut että oma järjestelmä on parempi, ei muuta kuin ilmoittautumaan kisaan mukaan; http://trec.nist.gov/
"Henkilökohtaisesti haluaisin ainakin järjestelmän josta pystyy suoraan hakemaan tiettyä tietoa, ennemmin kuin järjestelmän jossa "kaikki maailman asiat" ovat jossain puumuodossa ja josta pitää itse etsiä haluttu tieto."
Samoin. Minusta tiedosta on turha mitään puita rakennella. Niiden suhteet muodostuvat vaan käsittämättömiksi kahden polven etäisyydellä.
Pitkästä dokumentista löytää etsi-toiminnolla nopeasti tietoa jos tietää mitä etsii.
Mutta ongelmani koskee yhtälailla dokumenttia kuin web-hakua. Miten vaikka ne "mestarilentäjät" löytyvät dokumentista find-toiminnolla.
Katso kohta "Olihan tuossa jotain..."
Tämä ongelma pitäisi mielestäni jakaa kahteen osaan. Ensimmäinen ongelma on se että miten kirjoitettu kielestä saadaan muodostettua haku, täsmennys, tms. Toinen ongelma olisi se että, minkälainen tietokannan tulisi olla, jotta se antaisi vastauksen mahdollisimman moneen kysymykseen. On kuitenkin ilmeisen selvää että tässä tapauksessa tarvitaan oliopohjaista, tms. tietokantaa eikä perinteinen relaatio, tms. tietokanta oikein sovellu tarkoitukseen.
"Mikä X?" lauseesta on helposti ohjelmallisesti saatavissa ehdot, että haku kohdistuu X:n luokkiin tai sen aliluokkiin sekä sen että kysymys tarvitsee lisä määreitä (koska kysytään joukon X:n yhtä alkiota, tms.). Tässä tapauksessa X on lintu. Toisinaan "mestarilentäjä" sanan voidaan ajatella olevan muotoa "[taso][ominaisuus]", jossa ominaisuus on "lento" ja taso on "mestari". Jos taso voi olla 0-1, niin mestari olisi varmaankin 0.8. Koska kysyttiin yhtä lintua ja ominaisuuden taso on suurempi kuin 0.5, niin tästä saadaan että linnut järjestetään lento ominaisuuden mukaan suuruus järjestyksen (parhaimmasta huonoimpaan) ja valitaan listan ensimmäinen.
Hmm… No ei tämä sittenkään taida kuulostaa kovin järkevältä, sillä mitä järkeä on liittää jokaiseen lintuun lento, yms. tasoja... Eikä tuo haku jonon teko taida olla kovin helppoa, ja paljon niitä variaatioitakin tulisi...
Hmmm... Ehkä parempi tapa olisi rakentaa ohjelma joka käy läpi valmista tekstiä, ja muodostaisi sen pohjalta tietokannan, liittäen aina tiettyjä määreitä tiettyyn olioon (aivan kuten ihminenkin vissiin tekee). Eli tervapääsky olisi silloin:
"tervapääsky" "[mestari]lentäjä" "ei [käytännössä] [käy] koskaan maassa"
Tuossa "[]"-merkit tarkoittaisivat sitä että siihen väliin käy jokin vastaava sana. Tällöin ei turhaan tallennettaisi esim. harakan lentotasoa, ja kysymykseen "Onko harakka mestarilentäjä?" saataisiin kielteinen vastaus. Pitäisi siis olla joku itse oppiva systeemi... Neuroverkot ja sumalogiikka voisivat olla kovia termejä lopullisessa ratkaisussa...
Oikeastaan tuohon ei tarvittaisi järjestelmää, joka ymmärtäisi kysymystä tai vastausta täysin luonnollisen kielen kaltaisena.
Tervapääskypulma kuitenkin edellyttää jonkinlaista KIELTÄ, jotta tuollainen ominaisuus voitaisiin ilmaista. Ihmiskielen heikkous systematiikan kannalta on siinä, että ominaisuus voidaan määritellä niin monilla eri sanoilla ja vivahteilla.
Sen vuoksi ideani oli LUODA Esperantoakin yksinkertaisempi KEINOTEKOINEN kieli tähän tarkoitukseen.
Eli olleellisempaa on ettei yhtä ominaisuutta voitaisi sanoa monella eri tavalla. Kieltä pitäisi siis keinotekoisesti köyhdyttää.
Tietokoneen ei siis tarvitsisi välttämättä laskea mitään logiikoita tai todennäköisyyksiä, mutta ne olisivat kai helpompi toteuttaa yksinkertaisemmalle järjestelmälle. Esim "TOSIPIENI" on kyllä "PIENI" muttei toisinpäin.
Ymmärsinkö sinun viestit/vastaukset oikein: Eli olet tekemässä/suunnittelemassa kieltä. Tarkoituksesi ei olisikaan naputtaa tuota tervapääsky kysymystä koneelle, vaan kääntää itse se (ihmisenä) tälle uudelle kielelle, ja naputtaa se sitten vasta koneelle. Tämän uuden kielen pitäisi sitten olla sellainen, että kone osaa sen perusteelle tehdä haun ja antaa tuloksen, ilman että sen joutuisi tekemään erikoisia päätelmiä, laskelmia, tms. Jollain tapaan siis vähän SQL:n tyylinen kieli, mutta paljon joustavampi, ihmiskieltä lähellä olevampi, yms. Haluat myös niin että voit viedä hiiren halutun dokumentin päälle ja painaa "find" painiketta ja kirjoittaa tämän jälkeen haku komento/kysymys tällä uudella kielelläsi... Tätä lintu esimerkkiä ja suoraa ihmiskieltä käytit vain näyttääksesi mihin sen pitää pystyä. Tulkitsinko/ymmärsinkö vastauksesi nyt ihan väärin?
Hmmmm... Miettii... Miettii...
ÄH, SAMPERI... Olen tulkinnut ensimmäisen viestisi väärin (ko/kö?) :(. Siis ne kaksi koodaus riviä kuvasi siinä tätä kielen koodausta, eikä tietokannan koodausta... (HUPSISTA)
Anteeksi vain erittäin huono ilmaisuni. Ymmärsit nyt juuri oikein.
Tässä kävi huvittavasti, sillä tälläistä kieltä on jo kuvailtu Orwlellin kirjassa.
http://keskustelu.suomi24.fi/show.fcgi?category=2000000000000020&conference=1500000000000154&posting=22000000009419609
Pitäisiköhän kielessä muuten käyttää yksi, kaksi vain kolme sanaisia lauseita.
"hyvälentotaito"
1 sanainen virallinen termi. Tosin näitä tulisi paljon, eikä tällä voisi määrittää montaa asiaa.
"hyvä-lento"
2 sanainen, jossa yhdistetty kaksi erittäin yleistä sanaa. Toisaalta liian monitulkintainen.
"hyvä-kyetä-lento"
3 sanainen, tarkempi
(Sanat olisivat aina aakkosjärjestyksessä, jotta find-toiminnolla löytyisi.)
Lukeekohan tätä keskustelua enää kukaan... vastaan kuitenkin.
Mä en oikein ymmärrä mihin tuota sinun kuvailemaa kieltä tai järjestelmää tarvitsisi. Tuota varten pitäisi kehittää tosiaan oma kieli ja oma tietokantajärjestelmä, joissa kummassakin on valtavasti työtä. Nykyään on jo valmiina järjestelmiä jotka pystyvät "lukemaan" luonnollisella kielellä kirjoitettuja dokumentteja ja löytämään vastauksen annettuun kysymykseen.
Sinun järjestelmää varten ihmisen pitäisi siis opetella tämä uusi kyselykieli... No, jos intoa löytyy niin siitä vain, mutta jos pyörä on jo keksitty niin en välttämättä haluaisin yrittää keksiä neliskanttista pyörää sen tilalle. ;) En kuitenkaan usko että tämä olisi vastaus "tekoälyyn".
Ainahan uudet viestit pitää lukea. ;-) Tottahan tuo on että uuden kyselykielen rakentaminen kuulostaa pyörän uudelleen keksimiseltä. Tulee kuitenkin muistaa se että ilman perustutkimusta, asioiden uudelleen keksimistä ja pohtimista tuskin olisimme tässä missä nyt olemme. Nykyiset ohjelmointikieletkään eivät mielestäni ole niin täydellisiä etteikö niihin jotain uutta voisi lisätä...