Nada

Laboration 4:
Informationssökning

Laboration Onsdag 3 okt 8-10

Martin Hassel

Uppgift i korthet

Uppgiften är att använda en serie program och modifiera dem något litet för att utvärdera effekten av olika informationssökningsalgoritmer på en testkorpus skapad för ändamålet.

Förberedelse

Läs materialet till föreläsningen om informationssökning.

Arbetsgång

  1. Ordna en korpus. Ett gott tips är att göra detta i en arbetsmapp eftersom denna labb genererar en väldig massa filer. Skaffa fram ungefär hundra filer om något ämnesområde. Lämpligt är att använda Internet som sökkälla om ni inte har någonting bättre tillhands. Ni kan använda programmet netscoop som hämtar hem i stycken filer som Google bedömer relevant för sökfrågan ni matar in som argument.
    netscoop [-N i] "term1+term2+ ... +termN"
    
    Detta program är dock beroende av lynx så först måste man göra:
    module add lynx
    
    Om väljaren -N i inte ges hämtas 100 dokument. netscoop utnyttjar programmet wwwfetch.

    Så här långt kan vara bra att förbereda innan man kommer till labben då det kan ta sin rundliga tid att ta ned dessa dokument från Internet (beroende på svarstider, belastning, etc.).
    Det finns även en liten korpus att kopiera från /afs/nada.kth.se/info/sprakt01/bin/korpus/ (steamer+steamship+marine).

    Varje hämtat dokument ska bearbetas såsom beskrivs nedan. För att göra om samma sak för många filer kan man använda cshells kommando foreach. Exempel: för att räkna antalet ord och rader i varje fil vars filnamn börjar t.ex. på namn.991202. skriver man

    foreach x (namn.991202.*)
      wc $x
    end
    

    Välj ut ett par filer som du för varje steg skall undersöka och se vilka förändringar som skett. Detta för att du skall få en idé om hur ett index för informationssökning konstrueras.

  2. Bearbeta korpusen till textform. Ta bort HTML-taggar.
    wwwprepr.perl < fil.html > fil.txt
    
    eller
    lynx -dump fil.html
    
  3. Gör filen till en ordlista.
    prepr.perl < fil.txt > fil.tok
    
  4. Skapa en termfrekvenslista av termlistan
    wordtable.perl [-s stopplistfil] < fil.tok > fil.tf
    
    wordtable.perl använder unixverktygen uniq och sort. Skapa en egen stopplista med ett ord per rad (använd ordfrekvenser för att få idéer till lämpliga ord i stopplista) och spara det stopplistfiltrerade materialet i fil.tfs.

    För varje dokument behöver du bara spara en textversion, .tf-filen och .tfs-filen.

  5. Bestäm sedan termers särskiljningsförmåga för just din samling av textfiler.
    idf.perl [-s stoplist] file1 file2 ... > idflista
    
  6. search.perl [-i idflista] sökfrågefil
    search-with-stoplist.perl [-i idflista] sökfrågefil
    

    tar tf-filer respektive tfs-filer i den aktuella katalogen som passar sökmönstret och den eventuella idf-listan och levererar en rankad lista av dokument som svar på sökfrågorna från sökfrågefil, där sökfrågorna förutsätts finnas rad för rad. Ställ tre olika frågor som bestå av olika många sökord avskiljda av mellanslag. Kör dessa sökningar både med och utan idf-fil och se om det blir någon skillnad i rankning.

Evaluering

För att kunna evaluera era sökningar är det lämpligt om ni identifierar något dokument ni vill hitta med en viss sökning, och försöker bygga om sökmotorn så att det dokumentet klättrar upp i rankingen, samtidigt som något dokument ni identifierar som irrelevant för sökningen ifråga ramlar nedåt i listan. Andra evalueringsmetriker är också tillåtna, om ni redovisar dem ordentligt.

Redovisning

Som redovisning lämnas in

Extrauppgift

Redovisa extrauppgifterna med en analys av förändringen i sökresultatet samt egen skriven kod.
OBSERVERA! För att göra ändringar i några källkoder så måste du kopiera den aktuella filen till din arbetskatalog!

^ Upp till kursplanen.


Labbkonstruktion: Jussi Karlgren
Diverse anpassningar: Martin Hassel
Sidansvarig: Martin Hassel <xmartin@nada.kth.se>
Senast ändrad 29 oktober 2000
Tekniskt stöd: <webmaster@nada.kth.se>