Geir Berge 47. En datastruktur for ordbøker for naturlige språk. 1. Innledning -

Like dokumenter
Ge i r Berge 47. En d a t a s t r u k t u r f o r o rd b ø k e r f o r n a t u r lig e sp råk. 1. In n le d n in g

Dagens temaer. Kort repetisjon. Mer om cache (1) Mer om cache (2) Read hit. Read miss. Write hit. Hurtig minne. Cache

Innhold. Virtuelt minne. Paging i mer detalj. Felles rammeverk for hukommelseshierarki Hukommelseshierarki-2 1

Forskningsmetoder i menneske-maskin interaksjon

Innhold uke 9. Objektorientert programmering i Python. Om ukens pensum. Referanser og objekter Tema: Mer komplekse strukturer

Hashing. INF Algoritmer og datastrukturer HASHING. Hashtabeller

Obligatorisk oppgave 1 INF1020 h2005

A study of different matching heuristics. Hovedfagspresentasjon Jan Kasper Martinsen

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved

4/5 store parallelle maskiner /4 felles hukommelse in 147, våren 1999 parallelle datamaskiner 1. når tema pensum.

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Tildeling av minne til prosesser

O v e rfø rin g fra s to rt a n le g g til m in d re a n le g g

Litt om Javas class-filer og byte-kode

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

Hukommelseshierarki. 16/3 cache /3 virtuell hukommelse in 147, våren 1999 hukommelseshierarki 1

Klasser. Webprogrammering høsten Objekter. Eksempelklasser og -objekter. 2 of :56. 1 of :56

Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode)

Oppsummering av digitalteknikkdelen

Fakultet for informasjonsteknologi, Oppgave 1 Flervalgsspørsmål ( multiple choice ) 15 %

Kontroll av bremser på tyngre kjøretøy ved teknisk utekontroll

Anatomien til en kompilator - I

6.2 Signifikanstester

ORG110 1 Organisasjonsteori for IT-studenter

Lars Vidar Magnusson

INF1010 notat: Binærsøking og quicksort

Frankering og computer-nettverk

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Objektorientert programmering i Python. Resten av semesteret. Innhold uke 9 Mer komplekse strukturer. Referanser og objekter, inkl Mentimeter spørsmål

Flerveis søketrær og B-trær

Snake Expert Scratch PDF

Kan micro:biten vår brukes som en terning? Ja, det er faktisk ganske enkelt!

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013

IN1020. Sekvensiell Logikk

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

Anordning og fremgangsmåte for fjerning av barrer fra støpeformer og støpeinstallasjoner med en slik anordning

Måletekniske leverandørkrav til rettstrekk og flowconditioner oppstrøms en ultralydsmåler gass

Start et nytt Scratch-prosjekt. Slett kattefiguren, for eksempel ved å høyreklikke på den og velge slett.

Liste som abstrakt konsept/datatype

RBITAL HØYHASTIGHETS RUNDBALLEPAKKER. DET PROFESJONELLE VALG

Hvor i All Verden? Del 1. Introduksjon. Steg 1: Styr et helikopter. Skrevet av: Geir Arne Hjelle

Brukerhåndbok clinicalevidence.bmj.com

UNIVERSITETET I OSLO

ECON2200: Oppgaver til for plenumsregninger

Oppgave 1 JK-flip-flop (Total vekt 20%)

Innhold. Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer. Prinsipper for synkronisering av felles hukommelse

Forelesning 27. MAT1030 Diskret Matematikk. Bevistrær. Bevistrær. Forelesning 27: Trær. Roger Antonsen. 6. mai 2009 (Sist oppdatert: :28)

INF / Kap. 5, Del 2 Stein Krogdahl, Ifi, UiO

Last ned Gresk-norsk ordbok til Det nye testamente - Jarl Henning Ulrichsen. Last ned

Dagens temaer. Fra kapittel 4 i Computer Organisation and Architecture. Kort om hurtigminne (RAM) Organisering av CPU: von Neuman-modellen

Løsningsforslag for TDT4186 Operativsystemer

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Definisjon: Et sortert tre

providing your business overview Slik lykkes du med vedlikeholdsledelse En guide til alle som arbeider med vedlikehold

SmartUs beskrivelse og instruksjon.

Fakultet for informasjonsteknologi, Løsning på kontinuasjon i TDT4186 Operativsystemer August 2005,

INF2270. Minnehierarki

PGZ - Hangman Ekspert Python Lærerveiledning

NORGE. Patentstyret (12) SØKNAD (19) NO (21) (13) A1. (51) Int Cl. G01N 1/22 ( )

INF3140 Modeller for parallellitet INF3140/4140: Programanalyse

Generiske mekanismer i statisk typede programmeringsspråk

Repetisjon digital-teknikk. teknikk,, INF2270

MAT1030 Diskret Matematikk

Lokalitet: LM Sandstadsundet 0- prøve Tilstand 1

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: Geir Arne Hjelle

(12) Oversettelse av europeisk patentskrift

MAT1030 Diskret matematikk

HDYO har mer informasjon om HS tilgjengelig for unge, foreldre og profesjonelle på vår webside:

Inspeksjon Brukermanual

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

1/26/2012 LITT PYTHON. INF2820 Datalingvistikk V2012. Hvorfor Pyhton. Python syntaks. Python er objektorientert. Python datatyper.

K v in n e r p å tv e rs

Skille mellom teksttyper ved hjelp av ordlengder

Norgestur. Introduksjon. Steg 1: Et norgeskart. Sjekkliste. Scratch. Skrevet av: Geir Arne Hjelle

Fasit og løsningsforslag STK 1110

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

TeamScape Rapport Sample Profile 1 Skrevet ut: Prosjekt: Sample TeamScape Project Organisasjon: Facet5

Logisk Programmering. Relasjoner vz. funksjoner. Funksjon: inn og ut, en verdi. Relasjon: ingen retning, null eller flere verdier

Innhold. Oversikt over hukommelseshierakiet. Ulike typer minne. Innledning til cache. Konstruksjon av cache Hukommelseshierarki-1 1

Søking i strenger. Prefiks-søking Naiv algoritme Knuth-Morris-Pratt-algoritmen Suffiks-søking Boyer-Moore-algoritmen Hash-basert Karp-Rabin-algoritmen

INF1020 Algoritmer og datastrukturer GRAFER

Datastrukturer for rask søking

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

Velkommen! I dag. Viktige beskjeder. Studieadministrasjonen. IN Høst Siri Moe Jensen Geir Kjetil Sandve Henrik Hillestad

Generelt om permanent lagring og filsystemer

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

Digital stemme hjelp. MikroVerkstedet as

Sprettball Erfaren ComputerCraft PDF

Reelle tall på datamaskin

Plan. Oppgaver og repetisjon Eksempler med fikspunkt og induksjon: 1. sortering 2. divisjon 3. Heis? IN 315: Foilsett 9: Unity: Arkitekturer

INF1020 Algoritmer og datastrukturer

Korteste vei i en vektet graf uten negative kanter

Tildeling av minne til prosesser

KONTINUASJONSEKSAMEN

Hiab 211W Kapasitet på 21 tm

AlgDat 10. Forelesning 2. Gunnar Misund

(12) PATENT (19) NO (11) (13) B1 NORGE. (51) Int Cl. Patentstyret

Turingmaskiner.

(12) Oversettelse av europeisk patentskrift

Transkript:

Geir Berge 47 En datastruktur for ordbøker for naturlige språk 1. Innledning - Det arbeidet som skal refereres her hadde som mål å konstruere en tjenlig datastruktur for konstruksjon av ordbøker for naturlig språk på små datamaskiner. Arbeidet ble gjort for noen år tilbake av George M. Gillow og undertegnede, og vi anvendte en PDP 11/20. I dag kan derfor våre resultater ha interesse i forbindelse med mikromaskinanvendelser på samme område. 1.1 Designkrav Systemet skal hurtig og enkelt kunne laste en ordbok. Hurtig skal her forsås slik at tid for lasting, t^^, i størst mulig grad burde være en linjær funksjon av grunnlagstekstens størrelse, dvs. antall tokens, ^token' Ingen preprosossering av grunnlagsteksten skal være nødvendig (f.oks. sortering). Egenskaper ved naturlige språk skal i størst mulig grad formulere resterende krav. (Dette er gjort i tabellen på neste side). En datastruktur for ordbøker for naturlige språ k Geir Berge, pages 47-64

^18 E G, t J S K A P D e s i CrN K R A V S ' t o K v o j r i a s j o n t o r d l t, n j d ^ V a r i o i b ^ J l e, i ^ d c re co rd formai" En liieh d/«/ av jyptri'e S js fc m c i skql ia sptsicji h c H S ^ n i S L k ^ / r e M \ r 4 i S ^ i e k s t e ^ ( H o v t d p o ^ h e n a v t n ^ y - f t e k v ^ e r t s i ^ p e r e. v U J t l c k e s (XV de^ deie4^ (xv h t^ lc^ i^rlth rla ^ et 9 3 ( /^ dice ieu sij^ u i^ r^ ia ^ e d : ^ o t t4n otdb olc v ll / l^ov^dsfxlc y/ op pin XV i i f lxv-l^re,kvemsi i j p e r ) ly p e r vh sv cirt sjeu cn L h s i r ^ k e t ^ r a o t d t > d c e h & a r y c o l l e c t i o n tre ^ e r ikkc v^re i n k l t e d e r t i s ^ l e M c t 48

49 Behovet for oppslag av enkeltord vil være nær proposjonalt med de enkelte typers forokomstfrckvens i tekstbasen, og vi vil gjerne at systemet gir priviligert, hurtig aksess til slike typer. Til slutt skal nevnes at systemet også h ø r gi gode muligheter for listing av større eller mindre deler av ordboken i alfabetisk orden. Vi fant ikke at noen standard filstrukturer med tilhørende aksessmetoder oppfylte våre designkrav, og vi konstruerte derfor systemet som biir beskrevet i det følgende. 2. Løsningsforslag Forslaget er implementert med types og tokens i form av grafiske ord, men det er intet til hinder for at det kan fungere på andre nivå. Videre konstruerte vi et enkelt aksess system, men alle programdeler er utviklet med enkel utvidelse til multiaksess system for øye. 2.1 Paging systemet Hele ordboken tenkes delt i et antall sider (pages). I hurtiglageret avsettes et område med plass til N slike. Hvert delområde med plass til en side kalier vi en nisje (slot). n av de N (n < N) nisjene inneholder residente sider, de resterende N-n sider som kan rulles ut pa ytre lager (platelager) for å bli erstattet av andre. Dette skjer når systemet vil aksessere en side som ikke er i noen av de N nisjene i hurtiglageret. Se fig. 1, For å avgjøre hvilken side som skal rulles ut fra hurtiglageret, er det til hver side knyttet en "historikkvariabel" hvis verdi avspeiler sidens bruksfrekvens. Den av de N-n sidene som har lavest verdi for denne variabelen rulles ut. På denne måten oppnås at de sidene som oftest refereres har minst sannsynlighet for å bli rullet ut. 49

50 Av og til er det ønskelig å "låse" en side temporært fra å bli rullet ut etter regelen over, og dette kan gjøres fra systemprogrammet. Det kan også nevnes at bare dersom en side er forandret fra den ble hentet inn til hurtiglageret biir den virkelig overført til ytre lager ved utrulling, en detalj som øker systemets effektivitet. 50

r>1 P fo rts04» ^ ^ rmi/es, X ut, y e ^ r ^ e r t s i d t b l a n f d t har la\/csf Vordi 'lor- ^isforikk, r, ;. i 51

52 2.2 Generelt om systemet Recordformat for elementene i ordboken fremgår i fig. 2. De enkelte betegnelsene SCT: Neste elements seksjons-tside) nr. DISPL: Adresse innen side for ditto. SHC: Peker til neste logiske element innen denne side, hvis satt: : Frekvens for dette element (type) LGTH: Lengde av datafeltet. Ordboken har altså form av en listestruktur, og denne bygges i sin helhet under lasteprosessen. For hver ny token gjennomsøkes listen for å avgjøre om det er en ny type eller ikke. I førstnevnte tilfelle settes denne inn i listen, ellers økes bare frekvens for angjeldende type med 1. Se fig. 3. Av fig. 3 fremgår det hvordan SHC'ene kan øke hastigheten i søkeprosessen vesentlig) v.h.a. disse går vi aldri mer enn en gang gjennom hver side. 52

53 n f - C o r e! H t r m a i t IscT ID / s r L SHC\ v> L & T H» A T A V F t e k \ / e é i s '^horé Cui Pothier' A^esse. hesée Logiske, ir^ct^tct 7 ^ / 53

54 U u f t e l e m & r t S. L i s i e l o 54

55 2.3 Laste-strategi Sjdene kan under lasteprosessen være i ulike "tilstander": - Nyeste side er den som sist er tatt i bruk. - Backup siden inneholder logisk forgjenger til det elementet vi prøver å plassere. - Nåværende side inneholder logisk etterfølger til samme. Fig. 4 anskueliggjør dette. Strategi for oppfylling av sidene, dvs. for plassering av nye typer var som vist under fig. 4. For å gi en indikasjon på hvordan dette virker, henviser vi til fig. 5. Regiene anvendt for de nye elementene vil her være: Regel 1 for C, II II 2 II I t 3 4 II II D, M, B, Hensikten med lastegrensen (se preferanselisten) som bare anvendes når en side er i tilstand "nyeste", er å øke sjansene for at regel 1 kan anvendes og derved for lange, ubrutte tråder innen en side. Dette medfører mindre inn-ut rulling og mindre overhead forbundet med short-cut pekerne. 55

56 \3/- -- N M Sc^cJcup sijc 2 ft'^, Sidt.(nistande,r te!ikli\^i < ) 'Ptej-e.ta^sch'&ire -^or pfm sserlt^ <\v elem^e*^: 1. B o u ^ u ^ ^ hvis D ia ss Z. /U&!vmjr enete^ ^ h v is p la ss 1 >. A/yesée j hvts lasée^ir J^sc.h tkke ejr h a d d 4^. M / h h u. k h h y h t j c s h e ^ 56

57 1 [ \ e / K ^ n i y. f r o, 5*. I h n s e i ^ / n j a y n y e. e k i m o n i e r '. S ^ * O f S ' ) 57

58 Dette vil imidlertid komme i konflikt med vårt ønske om å plassere flest mulig høyfrekvenstyper i de første sidene (spesielt i de residente), både for å få rask aksess til disse typene, og fordi de første sidene i stor grad bør virke som en indeks for resten av ordboken. For å oppnå det siste bør disse sidene fylles med så mange element som mulig spredd best mulig alfabetisk. Vi valgte derfor å la fyllingsgraden variere som funksjon av sidenummer som antydet i fig. 6. 58

59 h^. é. T^llinjs^raJ som fut^ksjoi^ s i d e n u m m e r 59

60 3. Eksperimenter og resultater Som tekstbase ble Garman & Worse av A. Kielland benyttet. Denne inneholder omtrent 65.000 grafiske ord og gir opphav til en ordbok med ca. 10.500 ord. Vi fant at vår teknikk virkelig ga mange høyfrekvensord i de første sidene, og at teknikken med lastegrense og plassering av typer i henhold til preferanselisten førte til lange uavbrudte tråder i de senere sidene. En del forsøk ble gjort for å finne et "godt" parametersett for systemet. Her skal bare effekten av partiell fylling av nyeste side påpekes. Allerede med fyllingsgrad litt under en fikk vi resultater som vist i fig. 7, og svært lave fyllingsgrader ga ikke ytterligere forbedringer. 60

f)l 7^. 7. A Y fyl/ ifij av ^nycsht sidt, * 61

62 Som vi ser av fig. 8 er vårt krav om en lastetid som er nær proposjonal med antall elementer i tekstbasen godt oppfylt. Fig. 9 viser en del andre data fra lasteprosessen, og vi ser a t : - TID/TOKEN vokser relativt lite og fremfor alt jevnt ettersom ordboken øker i omfang. - PR/TOKEN som er sidereforanscr pr. token forklarer mye av systemet "pene" adferd idet denne bare vokser fra 2,66 ved M., = 2-10'^ til 3.0 ved M., = token token 6,5 10'* dvs. ved 11 %, mens ordboken i samme intervall øker fra ca. 4,1*103 types til ca. lo.s-lo^ types, altså med 156 %. - Hvis vi ser på oppslagstid/token med full ordbok, var denne ca. 0.05 s., noe vi var vel tilfreds med, utstyret vi brukte tatt i betraktning. Brukes ordboken bare for oppslag, reduseres denne tiden vesentlig fordi vi slipper alle "skriveoperasjoner" knyttet til plassering av nye types. Senere tester indikerte et fall på omkring 60 % som bringer oppslagstiden ned på 0,02 s. Alt i alt mener vi disse resultatene er oppmuntrende, og at en slik eller lignende design egner seg godt for konstruksjon og bruk av ordbøker på mindre datamaskiner som ikke tilbyr gode databasesystem eller tilsvarende avansert software. 62

63 63

64 7 7 o / T o K G M f o ^ s -/ P ^ / t o k e m ^^^/rokeh/ lo J t, s f -jf./ s ; s 9? M %/3 /4/ T y r e s / h ^ U T o K S t ^ h ^ L ^ o r e ^ k c k 64