Tiedonhaku? Tiedonhakumenetelmät Tiedonhaku Boolen haku Indeksit Tiedonhaku (information retrieval, IR) Tietotarpeen tyydyttävän pääasiallisesti jäsentämättömän (tyypillisesti tekstimuotoisen) materiaalin hakemista laajasta (yleensä tietokoneille tallennetusta) aineistosta. Esimerkkejä Webbihaut Sähköpostihaut Omat aineistot työasemalla Ohjeistot, käsikirjat Kirjastot Arkistot Lait ja säädökset, 1 2 Tiedonhaku? Tiedonhaku Tietotarve Dokumentit Aineisto Kysely Osumatesti Kuvailut Kyselyn tarkennus Hakutulos Tietotarpeet (information needs): Tietoa aiheesta, tietty dokumentti, jokin fakta, Dokumentit rakenteeltaan Rakenteisia, puolirakenteisia, vapaamuotoisia Hakutavat Kyselyt, selaus, suodatus, hierarkkinen haku, Käyttäjät Hakuammattilaiset,, jokamies Rajautuneisuus Henkilökohtaiset tiedot, yrityksen tiedot, aihepiirikohtaiset tiedot, yleinen webbihaku 3 4 Hakumallit Hakumallit: Boolen haku Haun perusmalli: dokumentti sisältää termin (sanan) Esim: Hae dokumentit, joissa esiintyy sana Caesar Grep ratkaisuna: haetaan säännöllisen lausekkeen avulla Esim: grep -slw Caesar aineisto/* Toimii hyvin, jos aineisto on kohtuullisen pieni Ehdon monimutkaistuminen tekee hakukyselyn hankalaksi Aineiston koon kasvu tekee hausta hitaan Dokumentit nähdään sanojen joukkona Kyselyt esitetään termeistä muodostuvana Boolen lausekkeena Operaattorit AND, OR ja NOT Kukin termi ilmaisee totuusarvon tilanteelle sana sisältyy dokumenttiin Tarkastellaan Shakespearen näytelmiä, Kysely Caesar AND Brutus AND NOT Calpurnia hakee dokumentteja, joihin sisältyvät sanat Caesar ja Brutus mutta ei sana Calpurnia grep:n kaltainen lineaarinen läpikäynti hankaloituu (kuinka NOT?) Lineaarisen läpikäynnin tilalle indeksit Dokumentti joko sisältää termin tai sitten ei 5 6 H.Laine 1
Boolen haku Esiintymämatriisi Esiintymämatriisi: missä dokumentissa termi esiintyy Antony and Cleopatra Julius Caesar The Tempest Hamlet Othello Macbeth 1 1 0 0 0 1 Antony Brutus 1 1 0 1 0 0 Caesar 1 1 0 1 1 1 Calpurnia 0 1 0 0 0 0 Cleopatra 1 0 0 0 0 0 mercy 1 0 1 1 1 1 worser 1 0 1 1 1 0 1 jos näytelmä sisältää termin, muuten 0 Voidaan ajatella, että jokaiseen termiin liittyy bittivektori, joka kuvaa termin esiintymistä Caesar: 110111 Brutus: 110100 NOT Calpurnia: 101111 AND: 100100 Tarvitaan lisäksi järjestetty lista dokumenteista, jotta voidaan selvittää, mikä dokumentti vastaa bittipositiota: Tulos: Anthony and Cleopatra, Hamlet 7 8 Käsitteitä Haun tehokkuus Aineisto (collection /corpus) Kiinteä joukko dokumentteja Ennakoimattomat tietotarpeet (ad hoc retrieval) Haetaan dokumentit, jotka ovat relevanttejasuhteessa käyttäjän satunnaiseen tietotarpeeseen ja auttavat käyttäjää suoriutumaan tehtävästään Dokumentti on relevantti, jos se käyttäjän mielestä sisältää arvokasta asiaa suhteessa tietotarpeeseen. Tietotarvetta ei useinkaan pysty ilmaisemaan määrittelemällä täsmällisesti mitä sanoja dokumentin tulee sisältää Tiedonhaun tehoa (effectiveness) voidaan arvioida kahdella tunnusluvulla: Tarkuudella (precision): Kuinka suuri osa saaduista tuloksista on relevantteja Saannilla (recall): Kuinka suuren osan aineiston relevanteista dokumenteista vastaus kattaa. 9 10 Tarkkuus ja saanti Tarkkuus ja kattavuus häly osumat tavoittamattomat Pieni tarkkuus => enemmän työtä relevanttien löytämiseksi aineisto Pieni kattavuus => pieni tiedon määrä suhteessa saatavissa olevaan epärelevantit tarkkuus= osumat /(osumat+häly) relevantit saanti= osumat/(osumat+tavoittamattomat) hakutulos 11 12 H.Laine 2
Isot aineistot Käänteisindeksi (inverted index) Toimiiko esiintymämatriisi? Esimerkki: 1 miljoona dokumenttia, dokumentti noin 1000 sanaa (2-3 sivua), sana noin 6 tavua noin 6GB aineisto 500 000 erillistä termiä Esiintymämatriisi 0.5M*1M bittiä =62.5GB (ISO) 1-bittejä kuitenkin enintään 1000M; 1/500 = 0.2% hyvin harva matriisi Parempi indeksi: kirjataan vain 1-bittien positiot Jokaiseen termiin liittyen laaditaan järjestetty lista niiden dokumenttien tunnuksista, joissa termi esiintyy Oletetaan, että dokumentin tunnus on järjestysnumero Brutus Caesar 1 2 4 5 6 16 57 132 Calpurnia 1 2 4 11 31 45 173 174 54 101 esiintymä(tieto) 13 Sanasto (dictionary) Esiintymät (postings) 14 Käänteisindeksi (inverted index) Käänteisindeksin tekeminen Termien esiintymälistat ovat kovin erikokoisia, joten tarvitaan vaihtuvapituisia listoja Levyllä yhtenäinen peräkkäisten esiintymien sekvenssi on kätevin rakenne Keskusmuistissa voi käyttää linkitettyjä listoja tai vaihtuvapituisia taulukoita (muokkaustarve vaikuttaa) dokumentit Saneistaminen (tokenization) yhtenäistäminen Lingisticpreprocessing Indeksin teko Index writing Friends, Romans, countrymen. Friends Romans Countrymen friend roman countryman friend 2 4 roman 1 2 15 countryman 13 16 16 Esiprosessointi Saneistaminen ja esiprosessointi Saneistaminen (tokenization) Pilkotaan lähtötieto saneiksi (token) [sanamuodon esiintymä] Miten käsitellään erilaiset erottimet ja muut erikoismerkit? Normalisointi (normalization) Yhtenäistetään esitystapa (esim U.S.A. => USA) Typistäminen, stemmaus (stemming) Karsitaan esimerkiksi taivutusmuodoista johtuvia päätteitä tai sanan johdannaisia, jäljelle jää vain runko Hukkasanojen käsittely (stop words) Voidaan poistaa hakua edistämättöminä Esim. engl. a, the, to, in, if,.. Muodostetaan (termi, dokumenttitunnus) -pareja I did enact Julius Caesar I was killed i the Capitol; Brutus killed me. Dokumentti 1 So let it be with Caesar. The noble Brutus hath told you Caesar was ambitious Dokumentti 2 17 18 H.Laine 3
Sane, esiintymä -parien järjestäminen Koonti Järjestetään parit ensisijaisesti termin toissijaisesti dokumenttitunnuksen mukaisesti Saman dokumentin saneista kootaan termitieto, johon liitetään järjestetty esiintymälista dokumenttitunnuksista Termiin liitetään esiintymien lukumäärä 19 20 Indeksien pystytys ja käyttö Indeksit kyselynkäsittelyssä Entä, jos aineisto on suuri? Miten indeksoidaan suuri aineisto? Miten isoksi indeksit muodostuvat? Voiko indeksejä tiivistää? Miten indeksejä hyödynnetään parhaan tuloksen saavuttamiseksi? Tarkastellaan kyselyä: Brutus AND Calpurnia Hae termin Brutus esiintymälista Hae termin Calpurnia esiintymälista Hae listoista yhteiset tunnukset (listojen leikkaus) lomittamalla ne Brutus Calpurnia 1 2 4 11 31 45 173 174 54 101 21 22 Listojen leikkaus Lomitusjärjestys Suoritettavissa lineaarisessa ajassa suhteessa listojen pituuteen O(n+m) Listojen pitää olla järjestettyjä Edullisin lomitusjärjestys? Tarkastellaan n:n AND yhdistetyn termin kyselyä Esim: Brutus AND Caesar AND Calpurnia Haetaan kuhunkin termiin liittyvät esiintymälistat ja lomitetaan ne. Edullisinta on aloittaa lyhimmistä listoista => välitulos enintään lyhimmän listan pituinen => listan pituus saadaan selville termiin liittyvästä esiintymälaskurista 23 24 H.Laine 4
Lomitusjärjestys Boolen kyselyt Yleisemmin kyselyn (termi1 OR termi2) AND (termi3 OR termi4) AND Lomitusjärjestys voidaan määrätä seuraavasti: Haetaan kaikkien termien esiintymäfrekvenssit Arvioidaan OR-yhdistettyjen listojen kooksi yhdistettävien listojen kokojen summa (konservatiivinen arvio) Käsitellään OR-ryhmät arvioidun koon mukaisesti pienimmästä suurimpaan Välitulosten kirjoitus voidaan usein välttää pitämällä leikkaustulos muistissa ja yhdistämällä seuraavan termin lista välitulokseen Kyselyt ovat täsmällisiä Vastaus on täsmällinen suhteessa kyselyyn, mutta onko se hyvä suhteessa todelliseen tietotarpeeseen AND yhdistelmillä hyvä tarkkuus mutta pieni saanti OR yhdistelmillä hyvä saanti mutta huono tarkkuus 25 26 H.Laine 5