TDDD02 Föreläsning 2 HT-2013. Reguljära uttryck och reguljära språk Lars Ahrenberg

Relevanta dokument
729G09 Språkvetenskaplig databehandling

Automater. Matematik för språkteknologer. Mattias Nilsson

DAB760: Språk och logik

729G09 Språkvetenskaplig databehandling

Labb 1 - Textbearbetning med reguljära uttryck. Formella språk. Definitioner. Chomskyhierarkin. Formella språk. Formella språk

Idag: Reguljära språk Beskrivs av Reguljära uttryck DFA Grammatik

Textbearbetning i skalet och man-sidor

Programmering för språkteknologer II. OH-serie: Ändliga automater. reguljära uttryck i Java. Deterministiska ändliga automater

Föreläsning 7: Syntaxanalys

Uppgift 1 (Oläsliga krypterade meddelanden)

Innehåll. Föreläsning 11. Organisation av Trie. Trie Ytterligare en variant av träd. Vi har tidigare sett: Informell specifikation

DD1361 Programmeringsparadigm. Formella Språk & Syntaxanalys. Per Austrin

Tentamen Marco Kuhlmann

Skrivstöd. Joakim Nivre. Introduktion till språkteknologi. Skrivstöd. Inledning. Orsaker till stavfel. Detektering av icke-ord

Anvisningar för ifyllning av Excelark för databaser (sekventiella textfiler)

Programmeringsteknik med C och Matlab

Föreläsning 2 5/6/08. Reguljära uttryck 1. Reguljära uttryck. Konkatenering och Kleene star. Några operationer på språk

Tentaupplägg denna gång

RödGrön-spelet Av: Jonas Hall. Högstadiet. Tid: minuter beroende på variant Material: TI-82/83/84 samt tärningar

Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= "Nils"; // längd = 5 bytes

För att använda sifferkrypto använder man en rektangel om 5 gånger 6 bokstäver.

Textsträngar från/till skärm eller fil

Semantik och pragmatik

Fil: /home/lah/undervisning/sprakteknologi/ohbilder/oh1_kv.odp. Tjänster

CSN-rapportering, gymnasiet

Krypteringsprogrammet Kryptogamen

Språkpsykologi/psykolingvistik

Tentaupplägg denna gång

Introduktion till PHP

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Färgklövern. Färgklövern är gjord 1998 i samarbete mellan Datateket i Linköping och Hargdata AB i Linköping.

Automatateori (2) Idag: Sammanhangsfria språk. Dessa kan uttryckas med Grammatik PDA

Problem: BOW Bowling. Regler för Bowling. swedish. BOI 2015, dag 1. Tillgängligt minne: 256 MB

kl Tentaupplägg

Software Translator 6.1 Manual

Föreläsning 3.1: Datastrukturer, en översikt

Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Enhetlig utformning av lägenhetsnummer

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

Enklast att skriva variabelnamn utan ; innehåll och variabelnamn skrivs ut

Uppgifter till praktiska tentan, del A. (7 / 27)

awk, sed och grep awk döpt efter Aho Weinberger Kernighan (1977) sed en stream editor grep sed g/re/p bygger i viss mån på ed line editor

Föreläsningens upplägg. Språket, individen och samhället HT Döva och språk. Internationell manifestation för teckenspråket (29 september 2007)

Får jag be om ordet!

STRÄNGAR DATATYPEN. Om du vill baka in variabler eller escape-tecken måste du använda dubbla citattecken. strängar

TDP Regler

Objektorienterad programmering D2

Projektarbete 2: Interaktiv prototyp

Dragningssystemet. Filbeskrivning för osigillerad resultatfil från premieobligationsdragning. Version 1.2

Digital Display VDS / Bus2

Repetition av filer Grundkurs i programmering med Python

Introduktion till programmering och Python Grundkurs i programmering med Python

Programmeringsuppgifter 1

Anvisningar för ifyllning av Excelark för databaser (sekventiella textfiler)

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Manual. Användargränssnitt

Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Sed och Awk. Linuxadministration II 1DV421. Monday, August 8, 11

Övningar i JavaScript del 2

MÅL OCH BETYGSKRITERIER I SVENSKA

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Kurslitteratur Taltranskription: Introduktion

Introduktion till programmering. Standardfunktioner. Vad används datorer till? Standardfunktioner. Föreläsning 2. Prelude. $ ghci...

LÄSLANDET - BOKSTÄVER OCH ORD

MÄLARDALENS HÖGSKOLA. CD5560 Formella språk, automater och beräkningsteori. Användarmanual. för simulatorn JFLAP

Föreläsning 11. Giriga algoritmer

Sätt att skriva ut binärträd

awk, sed och grep ed kommandon grep Standard unix editor tidig 70-tal program < 8Kbyte awk döpt efter Aho Weinberger Kernighan (1977)

Konstruktion av datorspråk

RV03 Ändring av betygsskala

MONTERING ANVISNINGAR

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Lexikon: ordbildning och lexikalisering

Cykelhållare, takmonterad

Repetitionsuppgifter i Matematik inför Basår. Matematiska institutionen Linköpings universitet 2014

ANDRA BASER ÄN TIO EXTRAMATERIAL TILL. Matematikens grunder. för lärare. Anders Månsson

Land/region och språk. Mike McBride Krishna Tateneni Översättare: Stefan Asserhäll

Grammatik för språkteknologer

Flera kvantifierare Bevis Direkt bevis Motsägelse bevis Kontrapositivt bevis Fall bevis Induktionsprincipen. x y (x > 0) (y > 0) xy > 0 Domän D = R

Instruktioner för dig som ska söka till Mattekollo 2016

INDUKTION OCH DEDUKTION

Innehållsförteckning. Exempel. Åtkomst & användarhandledning

Taltaggning. Rapport av Daniel Hasselrot , 13 oktober 2003

TATA42: Föreläsning 10 Serier ( generaliserade summor )

När man krypterar med en kod översätter man hela ord eller uttryck

Kapitel 15: Data/Matrix Editor

Steg 4. Lika arbeten. 10 Diskrimineringslagen

Javisst! Uttrycken kan bli komplicerade, och för att få lite överblick över det hela så gör vi det så enkelt som möjligt för oss.

Programmering Grundkurs (6H2950) Grundläggande Programmering (6A2001)

Laborationer i kursmomentet Datoranvändning E1. Laboration nr 5: Mer om FrameMaker

Rolladministration i PaletteArena 5.3

Hantera informationspaket i system för bevarande

Hösten IKT-kompetens för bibliotekspersonal. ArtikelSök. Avancerad guide

Rumshantering i Resebyra -modulen

1. Skriv = eller i den tomma rutan, så att det stämmer. Motivera ditt val av tecken.

Övning 5 - Tillämpad datalogi 2013

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Grafisk visualisering av en spårbarhetslösning

Neuropedagogik Björn Adler, Hanna Adler och Studentlitteratur Bilaga 1:1 Arbete med schema för bokstäver Kognitiv träning i läsning

D/A- och A/D-omvandlarmodul MOD687-31

Transkript:

TDDD02 Föreläsning 2 HT-2013 Reguljära uttryck och reguljära språk Lars Ahrenberg

Översikt Reguljära uttryck sökproblem i texter definitioner och exempel UNIX-funktionen grep Reguljära transformationer textmodifieringar UNIX-funktionen sed Ändliga automater Lagring av lexikon och index

Enkla sökproblem i texter Hitta någon eller alla förekomster av ett givet ord Hitta alla böjningsformer av ett ord Hitta ord som har fler än tio bokstäver Hitta ordsekvenser som följer ett visst mönster, t.ex.... den hmp-a hmp-n Sekvens där varje ord börjar på stor bokstav

Reguljära uttryck Reguljära uttryck är ett sätt att definiera villkor på strängar. Den mängd av strängar som uppfyller villkoren från ett reguljärt uttryck kallas ett formellt språk eller dess denotation. Man säger också att uttrycket 'denoterar' mängden (eller språket).

Två besläktade användningar I matematiken (formell språkteori) definieras reguljära uttryck generellt. I programmeringsspråk definieras och implementeras reguljära uttryck på olika sätt och strängar = teckensträngar rikare syntax

Grundläggande begrepp En sträng är en sekvens av symboler en symbol kan i princip vara vad som helst MÄRK! den tomma strängen (ε) De tillåtna symbolerna för ett språk kallas alfabet (eller lexikon) Reguljära språk utgör en enkel klass av språk, som bl.a. definieras med reguljära uttryck

Reguljära språk Ändliga mängder är reguljära, Mängder som kan skapas med operationerna konkatenering, union (även kallat disjunktion), upprepad konkatenering är också reguljära, Dessa operationer är grundläggande i reguljära uttryck

Reguljära språk Operationer och deras beteckning Konkatenering (ingen särskild, uttrycken skrivs efter varandra) Disjunktion ' ' Upprepning (Kleenes stjärna) *

Exempel Vilka mängder definieras av ba* (1 2 3 4 5 6 7 8 9)(0 1 2 3 4 5 6 7 8 9)

Fler exempel Skriv med reguljära uttryck {bc, bca, bcaa, bcaaa, bcaaaa, } {ab, db, acb, dcb, accb, dccb, }

Regularitet i naturliga språk Morfologi t.ex. böjning med hjälp av suffix (katt bil stol...)(ar(na)? en)? Syntax t.ex. frasmönster utifrån ordklasser ART ADJ SUBST (en grön bil, ett stort hus, den vita stenen,...)

Reguljära uttryck i programspråk UNIX grep (flaggor) regexp filnamn returnerar textrader som matchar regexp sed 's/regexp/ändring/' < filnamn byter ut strängar som matchar regexp mot ändring Python modulen re

Textfiler En textfil är i princip en sträng av tecken hämtade från ett alfabet och kodade enligt en viss teckenkodning (ASCII eller ISO-8859-1, UTF-8, ) Några särskilda tecken: newline (\n) tab (\t) å, ä, ö m.fl. s.k. diakritiska tecken är ofta kodade på olika sätt i olika teckenkodningar

Teckenmängder i reguljära uttryck Mängd, eller disjunktion [aeioy]: matchar någon av de angivna vokalerna [a-z]: matchar godtycklig bokstav ur det engelska alfabetet. (- anger ordning i teckenkodningen) [0-9]: matchar godtycklig siffra Negation (^) [^a]: matchar allt utom a (och \newline)

Teckenmängder i reguljära uttryck Symboler för specifika mängder \w bokstavssymbol (engelska alfabetet) \d siffra, dvs samma som [0-9] \s, separatortecken inkl. blanktecken, \t och \n. matchar alla tecken (utom \newline)

Upprepningar Symboler för upprepningar * 0 eller flera upprepningar, + 1 eller flera upprepningar? 0 eller 1 upprepningar {n,m} minst n, max m upprepningar {n, } minst n upprepningar Räckvidden för en upprepning kan markeras med parenteser. Jämför ab+ och (ab)+

Disjunktionsoperator ( ) Om disjunktionen gäller strängar med fler än två symboler, eller godtyckliga reguljära uttryck kan ' ' användas. [stor liten] matchar endera av de två strängarna 'stor', 'liten' Jämför a+b+ [a+ b+]

Quote (\) Bokstäver och siffror matchar sig själva, liksom en del andra tecken, men tecken som står för operationer (?, *, +,, ) kan inte göra det. Då används quote ba? matchar b och ba ba\? matchar ba?

Villkor på matchning Uttryck matchar i regel girigt, dvs mot så långa strängar som möjligt, men kan annars varieras på olika sätt, t.ex. en eller max antal gånger per textrad, med eller utan överlappning Följande symboler ( ankare ) kan användas för att styra matchningen ^regex regex$ matchar bara i början på rad matchar bara i slutet på rad \bregex\b matchar mot ordsträngar

UNIX-funktionen grep grep ( global regular expression print ) Skriver ut rader som matchar ett givet reguljärt uttryck i en given textfil, dvs ett radfilter Exempel: > grep ' inte ' infil.txt Generellt: > grep <flaggor> '<regexp>' <filnamn>

Varianter av grep Olika implementeringar av grep skiljer sig åt i fråga om vilka flaggor och vilka varianter av reguljära uttryck de tillåter. Exempel: egrep ( extended ) ggrep (GNU grep på Solaris) ggrep -E (extended GNU grep på Solaris)

Mönster och matchningar med grep /bo/ /[Bb]o/ /\bbo/ /^[Bb]o/ /bor$/ /bo\.$/... Bosse bor i Mjölby. Bosse bor i Mjölby. Bosse bor i Mjölby. Bosse bor i Mjölby. Bosse bor i Mjölby. (ingen match) Bosse är mjölbybo.

Varianter av textmodifieringar Ta bort all uppmärkning, t.ex. HTML-taggar Ändra layout, skriva alla meningar på egen rad, skriva alla ord på egen rad Tokenisering och normaliseringar byta ut stora bokstäver mot små, skilja på skiljetecken och ord, Markera intressanta ord och fraser egennamn, substantiv, sifferuttryck,...

Exempel: HTML-fil <p><strong>en enkelbiljett till Berlin, gratis lägenhet i ett år och en cykel.<br /> Det är vad det stora flygbolaget lockar alla svenska Berlinälskare med.<br /> Men det finns en hake: Du måste byta namn till Klaus-Heidi.<br /> Jag skickade in ansökan om att byta namn direkt, säger Klaus- Heidi Nilsson.</strong></p>

Exempel: HTML-fil <p><strong>en enkelbiljett till Berlin, gratis lägenhet i ett år och en cykel.<br /> Det är vad det stora flygbolaget lockar alla svenska Berlinälskare med.<br /> Men det finns en hake: Du måste byta namn till Klaus-Heidi.<br /> Jag skickade in ansökan om att byta namn direkt, säger Klaus- Heidi Nilsson.</strong></p>

Efter filtrering av formatering En enkelbiljett till Berlin, gratis lägenhet i ett år och en cykel. Det är vad det stora flygbolaget lockar alla svenska Berlinälskare med. Men det finns en hake: Du måste byta namn till Klaus-Heidi. Jag skickade in ansökan om att byta namn direkt, säger Klaus-Heidi Nilsson.

Skiljeteckenseparering En enkelbiljett till Berlin, gratis lägenhet i ett år och en cykel. Det är vad det stora flygbolaget lockar alla svenska Berlinälskare med. Men det finns en hake: Du måste byta namn till Klaus-Heidi. Jag skickade in ansökan om att byta namn direkt, säger Klaus-Heidi Nilsson.

Skiljeteckenseparering En enkelbiljett till Berlin, gratis lägenhet i ett år och en cykel. Det är vad det stora flygbolaget lockar alla svenska Berlinälskare med. Men det finns en hake : Du måste byta namn till Klaus-Heidi. Jag skickade in ansökan om att byta namn direkt, säger Klaus-Heidi Nilsson.

Skiftlägesneutralisering ( lowercasing ) En enkelbiljett till Berlin, gratis lägenhet i ett år och en cykel. Det är vad det stora flygbolaget lockar alla svenska Berlinälskare med. Men det finns en hake : Du måste byta namn till Klaus-Heidi. Jag skickade in ansökan om att byta namn direkt, säger Klaus-Heidi Nilsson.

Efter skiftlägesneutralisering en enkelbiljett till berlin, gratis lägenhet i ett år och en cykel. det är vad det stora flygbolaget lockar alla svenska berlinälskare med. men det finns en hake : du måste byta namn till klaus-heidi. jag skickade in ansökan om att byta namn direkt, säger klaus-heidi nilsson.

Ändra layout (t.ex. en mening per rad) en enkelbiljett till berlin, gratis lägenhet i ett år och en cykel. det är vad det stora flygbolaget lockar alla svenska berlinälskare med. men det finns en hake : du måste byta namn till klaus-heidi. jag skickade in ansökan om att byta namn direkt, säger klaus-heidi nilsson.

Ny layout en enkelbiljett till berlin, gratis lägenhet i ett år och en cykel. det är vad det stora flygbolaget lockar alla svenska berlinälskare med. men det finns en hake : du måste byta namn till klausheidi. jag skickade in ansökan om att byta namn direkt, säger klaus-heidi nilsson.

Textmodifiering med reguljära uttryck Textmodifieringar av olika slag kan ses som substitutioner: Filtrera = ersätta med tomma strängen, Ändra = ersätta med alternativ sträng, Markera = lägga till någon slags tagg i angiven position Skapa nya rader = lägga till \newline Vanlig syntax: s/<regexp>/<newexp>/;

UNIX-funktionen sed sed ( stream editor ) Utför angivna substitutioner på rader i en fil Exempel: > sed 's/e/a/' infil.txt Generellt: > sed <flaggor> '<substitutioner>' <textfil>

Substitioner med sed Argument till sed är en substitution och en text eller textfil. Exempel: >echo 'Hello world!' sed 's/o/a/' Hella world! >echo 'Hello world!' sed 's/o/a/g' Hella warld! >echo 'Hello world!' sed '[A-z][a-z]*/X/g' X X! g för 'global'

Substitioner med bakåtreferenser sed går utöver regexpar genom att ge möjlighet till bakåtreferenser: \(r\) sparar den specifika sträng som matchar r \1, \2, hämtar sparade värden Exempel: >echo 'Hello world!' sed 's/\([a-zåäö]\)\([,\!\.]\)/\1 \2/g' Hello world!

sed med filargument sed med filanrop Hämtar substitutionerna från en separat fil s/[eioyuåäö]/a/g; s/a+/a/g; subst.sed Exempel: > sed -f subst.sed < infil.txt

Ändliga automater En ändlig automat (Finite-State Automaton) definieras av ett alfabet en uppsättning tillstånd, varav ett eller flera utgör starttillstånd och sluttillstånd en uppsättning tillståndsövergångar som var och en är associerad med en symbol ur alfabetet (ev. nollsymbolen)

Igenkänning och generering En sträng kan kännas igen (eller läsas) av en automat om man, med början i ett starttillstånd, kan nå ett sluttillstånd genom att matcha en symbol i taget mot en tillståndsövergång. Omvänt, kan en automat generera en sträng genom att den traverseras från ett starttillstånd till ett sluttillstånd och skriver ut en symbol för varje tillståndsövergång som görs.

Två sätt att definiera strängmängder Reguljärt uttryck Automat ba+ b a a 1 2 3

Reguljära språk Ett språk som kan definieras av ett reguljärt uttryck kan också definieras av en ändlig automat, och omvänt. Utmärkande för reguljära språk är att de inte tillåter icke-lokala beroenden mellan olika delar av en sträng. ('minnet' är begränsat till det senaste tillståndet.) Exempel: språket a n b m är reguljärt. språket a n b n = {ab,aabb,aaabbb, } är icke-reguljärt.

Determinism En ändlig automat är deterministisk om det för varje par av tillstånd och symbol finns högst en övergång till ett annat tillstånd. Deterministiska automater ger effektiva igenkännare. Motsatsen kallas icke-deterministisk Teorem: Varje icke-deterministisk ändlig automat kan konverteras till en deterministisk automat.

En icke-deterministisk automat a b 4 b a 1 a 2 b 3 a 5 a L = { a, aa, aba, abba, abbba, abbbba,... }

En ordlista eller ett index kan lagras som en deterministisk automat (ett bokstavsträd) c k a a b i l d c

Fullformslexikon back backa... bi bil bilar bilarna bild bilder bilderna...

Problem med fullformslexikon Duplicering av morfem och information (icke-kompakt) Hanterar inte lexikonets dynamik böjning, avledningar, sammansättningar Visar inte ordens morfologiska struktur Morfologisk parsning = dela upp ett ord i sina morfem (ordled) och ev. egenskaper

Lemmatisering och morfologisk klassificering Textord Information, exempel bilen bil N_sing_best bilar bil N_plur_obest bila V_pres bilder bild N_plur_obest billiga billig A_plur_obest billig A_best...

En automat med information i sluttillstånden 0, N_plur_obest Stam ar 1 2 3 en -2, N_plur_obest 5-2: 'remove last 2 characters Stam: bil, stol, hund, Textord matchas mot automaten -2, N_sing_best