INF INF1820. Arne Skjærholt. Terza lezione INF1820. Arne Skjærholt. Terza lezione

Like dokumenter
INF1820: Introduksjon til språk-og kommunikasjonsteknologi

INF1820: Introduksjon til språk-og kommunikasjonsteknologi

IN1140: Introduksjon til språkteknologi. Forelesning #4

INF1820: Introduksjon til språk-og kommunikasjonsteknologi

INF2820 Datalingvistikk V2017 Forelesning 1.2 Jan Tore Lønning

Følger Sipsers bok tett både i stoff og oppgaver.

INF1820: Introduksjon til språk-og kommunikasjonsteknologi

INF1820: Introduksjon til språk-og kommunikasjonsteknologi

INF2820 Datalingvistikk V2017 Forelesning 2, 23.1 Jan Tore Lønning

INF2820 Datalingvistikk V2015. Jan Tore Lønning

INF2820 Datalingvistikk V2016. Jan Tore Lønning

INF2820 Datalingvistikk V2016. Jan Tore Lønning

INF2820 Datalingvistikk V2015. Jan Tore Lønning

IN2080. Oppgave 1. Oppgave 2. Eksamen. Vår Den nondeterministiske endelige automaten A er gitt ved (Q, Σ, δ, q 0, F ) der

INF2820 Datalingvistikk V2012. Jan Tore Lønning & Stephan Oepen

INF2820 Datalingvistikk V2014. Jan Tore Lønning

INF2820 Datalingvistikk V2011. Jan Tore Lønning & Stephan Oepen

INF1820 INF Arne Skjærholt INF1820. Arne Skjærholt

INF2080 Logikk og beregninger

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V2014. Jan Tore Lønning

INF1820: Introduksjon til språk-og kommunikasjonsteknologi

INF1820: Oppsummering

Hva er syntaks? En overskrift i en norsk avis: Dagens tema Grundig repetisjon og utdyping:

Dagens tema Grundig repetisjon og utdyping: Syntaks kontra semantikk

INF2820 Datalingvistikk V2018 Forelesning 3, 29. jan. Jan Tore Lønning

Inf1000 (Uke 10) HashMap og ArrayList

Viktige begrep i kapittel 1.

Dagens tema: Regulære språk og uttrykk

Turingmaskiner en kortfattet introduksjon. Christian F Heide

Turingmaskiner en kortfattet introduksjon. Christian F Heide

INF2820 Datalingvistikk V2017 Forelesning 3, 30.1 Jan Tore Lønning

TMA4140 Diskret Matematikk Høst 2016

INF2820 Datalingvistikk V2011. Jan Tore Lønning & Stephan Oepen

INF2820 V2017 Oppgavesett 6 Gruppe 7.3

Syntax/semantics - I INF 3110/ /29/2005 1

1/31/2011 SAMMENHENGER FSA OG REGULÆRE UTTRYKK. Regulære språk. Fra FSA til RE. Fra regulært uttrykk til NFA REGULÆRE UTTRYKK I DATALINGVISTIKK DEL 2

Mer om mengder: Tillegg til Kapittel 1. 1 Regneregler for Booleske operasjoner

Repetisjon. 1 binærtall. INF3110 Programmeringsspråk. Sist så vi ulike notasjoner for syntaks: Jernbanediagrammer. BNF-grammatikker.

INF2820 Datalingvistikk V2011. Jan Tore Lønning & Stephan Oepen

INF1800 Forelesning 2

INF3110 Programmeringsspråk

Skanning del I INF /01/15 1

INF2220: Time 8 og 9 - Kompleksitet, beregnbarhet og kombinatorisk søk

INF 2820 V2016: Obligatorisk innleverinsoppgave 1

INF2820 Datalingvistikk V gang, Jan Tore Lønning

3/8/2011. I dag. Dynamic Programming. Example. Example FORMELLE EGENSKAPER VED SPRÅK (KAP. 16) Jan Tore Lønning & Stephan Oepen

Mengdelære INF1800 LOGIKK OG BEREGNBARHET FORELESNING 2: MENGDELÆRE. Læreboken. Mengder. Definisjon (Mengde) Roger Antonsen

INF2820 Datalingvistikk V2011. Jan Tore Lønning & Stephan Oepen

INF1800 LOGIKK OG BEREGNBARHET

Skanning del I. Kapittel 2 INF 3110/ INF

UNIVERSITETET I OSLO

Typisk: Kan det være både nøkkelord og navn, så skal det ansees som nøkkelord

Typisk: Kan det være både nøkkelord og navn, så skal det ansees som nøkkelord

Aksiom 3.1 (Likhet av mengder). La A og B være mengder. Da er A og B like hvis og bare hvis de har akkurat de samme elementene.

Avgjørbarhet / Uavgjørbarhet

UNIVERSITETET I OSLO

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

ITSLP1100 Introduksjon til kognitive vitenskaper. Erik Velldal 15/01/2008

UNIVERSITETET I OSLO

INF2820 Datalingvistikk V2015. Forelesning 4, 9.2 Jan Tore Lønning

(a) R n defineres som mengden av kolonnevektorer. a 1 a 2. a n. (b) R n defineres som mengden av radvektorer

INF2820 Datalingvistikk V2015. Jan Tore Lønning

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet. INF1080 Logiske metoder for informatikk

Kapittel 5: Mengdelære

Repetisjonsforelesning - INF1080

INF Algoritmer: Design og effektivitet

INF2820 Datalingvistikk V2012. Jan Tore Lønning

Linux-programmer som bruker regulæruttrykk: grep, sed, awk

Hjemmeeksamen 1 i INF3110/4110

Plenumsregning 10. Diverse ukeoppgaver. Roger Antonsen april Vi øver oss litt på løse rekurrenslikninger.

Scanning - I Kap. 2. Hva scanneren gjør

To mengder S og T er like, S = T, hvis de inneholder de samme elementene. Notasjon. Mengden med elementene a, b, c og d skrives ofte {a, b, c, d}.

3/5/2012. Chart alternativ datastruktur. Fundamentalregelen. Chart-parsing. Bottom-up FORMELL SPRÅKTEORI. Jan Tore Lønning

INF2820 Datalingvistikk V forelesning, 30.1 Jan Tore Lønning

INF1820: Ordklassetagging

INF2820 Datalingvistikk V2012. Jan Tore Lønning

MAT1030 Diskret matematikk

UNIVERSITETET I OSLO

Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2)

KONTINUASJONSEKSAMEN I TMA4140 LØSNINGSFORSLAG

Litt om kompilering og interpretering. Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2) Syntaks og semantikk

INF2820 Datalingvistikk V2016. Forelesning 4, 10.2 Jan Tore Lønning

Tema. Informasjonsarkitektur Brukervennlighet/Usability Kommunikasjon som treffer målrettet kommunikasjon

UNIVERSITETET I OSLO

Løsningsforslag til obligatorisk oppgave 3 INF1800 Logikk og beregnbarhet, høsten 2009

Dagens plan. INF3170 Logikk. Mengder. Definisjon. Notasjon. Forelesning 0: Mengdelære, Induksjon. Martin Giese. 23. januar 2008.

INF2820 V2017 Oppgavesett 5 Gruppe 21.2

INF2820 Datalingvistikk V Gang Jan Tore Lønning

Forelesning 9. Mengdelære. Dag Normann februar Mengder. Mengder. Mengder. Mengder OVER TIL KAPITTEL 5

Oppgave 1. La G1 være grammatikken med hovedsymbol S og følgende regler:

En repetisjon hrj høst 2009

MA3301 Beregnbarhets- og kompleksitetsteori Høsten

INF1820: Introduksjon til spra k-og kommunikasjonsteknologi

INF2820 Datalingvistikk V Gang Jan Tore Lønning

Vekeplan 4. Trinn. Måndag Tysdag Onsdag Torsdag Fredag AB CD AB CD AB CD AB CD AB CD. Norsk Matte Symjing Ute Norsk Matte M&H Norsk

Rekker (eng: series, summations)

Et lite oppdrag i bakgrunnen

Transkript:

Arne Skjærholt Terza lezione Arne Skjærholt Terza lezione

Regulære uttrykk Regex Regulære uttrykk (regular expressions) er et godt eksempel på det som kalles finite-state methods (hvorfor det heter det kommer vi til om litt). Dette er en klasse metoder som har veldig gode effektivitetsegenskaper. Å behandle en streng kan gjøres i lineær tid (O(n)) og krever konstant minne (O(1)). Regex Foruten å være praktiske i datalingvistikk er regexer generelt nyttige i datasammenheng, og brukes mye i forskjellige verktøy, særlig i UNIX-systemer.

Regulære uttrykk Literal vs. meta-character Engelsk terminologi, for det er stort sett engelsk i dokumentasjon. På norsk: bokstavelig og meta-tegn. Bokstavelige tegn angir bokstaven selv, mens meta-tegn modifiserer betydningen til andre tegn. Den varianten regulære uttrykk vi skal se på kalles Perl-kompatible regexer, men det finnes flere andre varianter (selv om dette er den beste av dem). Literal vs. meta-character

Regulære uttrykk /foo/ De fleste bokstaver står bare for seg selv. /foo/

Regulære uttrykk /baaa*!/ /*/ er en kvantor, og angir at bokstaven foran kan forekomme 0 eller flere ganger. Den kalles gjerne for Kleene star. /baaa*!/

Regulære uttrykk /baa+!/ Kleene plus er en annen kvantor, som angir 1 eller flere ganger. /x+/ er det samme som /xx*/. /baa+!/

Regulære uttrykk /woodchucks?/ Null eller en. /woodchucks?/

Regulære uttrykk /(ab)+/ Av og til vil vi at større grupper enn en og en bokstav skal repetere. Da må vi bruke parenteser til å lage en gruppe som så skal repetere. /(ab)+/

Regulære uttrykk /a b/ /[abc]/ /[ˆaeiouyæøå]/ /[a-z]/ Enten eller. Hvis det bare er forskjellige tegn kan vi bruke /[...]/, og /[ˆ...]/ matcher enhver bokstan unntatt de inni. /a b/ /[abc]/ /[ˆaeiouyæøå]/ /[a-z]/

Regulære uttrykk /a.c/ Hvilken som helst bokstav. /a.c/

Regulære uttrykk /ˆLorem/ /amet\.$/ Matche bare på begynnelsen av strengen eller slutten av strengen. /ˆLorem/ /amet\.$/

Regulære uttrykk /\d/ = /[0-9]/ /\w/ = /[0-9a-zA-Z ]/ /\s/ = /[ \t\n]/ Noen innebygde tegnklasser. /\d/ = /[0-9]/ /\w/ = /[0-9a-zA-Z ]/ /\s/ = /[ \t\n]/

Regulære uttrykk /\D/ = /[ˆ0-9]/ /\W/ = /[ˆ0-9a-zA-Z ]/ /\S/ = /[ˆ\t\n]/ Stor forbokstav matcher alt unntatt de innebygde klassene. /\D/ = /[ˆ0-9]/ /\W/ = /[ˆ0-9a-zA-Z ]/ /\S/ = /[ˆ\t\n]/

Regulære uttrykk ELIZA (Weizenbaum 1966): User: Men are all alike ELIZA: in what way? User: They re always bugging us about something ELIZA: can you think of an example? User: Well, my boyfriend made me come here ELIZA: your boyfriend made you come here. User: He says I m depressed much of the time ELIZA: i m sorry to hear that you are depressed. ELIZA (Weizenbaum 1966): User: Men are all alike ELIZA: in what way? User: They re always bugging us about something ELIZA: can you think of an example? User: Well, my boyfriend made me come here ELIZA: your boyfriend made you come here. User: He says I m depressed much of the time ELIZA: i m sorry to hear that you are depressed.

Regulære uttrykk ELIZA (Weizenbaum 1966): User: Men are all alike ELIZA: in what way? User: They re always bugging us about something ELIZA: can you think of an example? User: Well, my boyfriend made me come here ELIZA: your boyfriend made you come here. User: He says I m depressed much of the time ELIZA: i m sorry to hear that you are depressed. s/.* I am (depressed sad).* / I am sorry to hear that you are \1/ s/.* always.* / Can you think of a specific example / ELIZA (Weizenbaum 1966): User: Men are all alike ELIZA: in what way? User: They re always bugging us about something ELIZA: can you think of an example? User: Well, my boyfriend made me come here ELIZA: your boyfriend made you come here. User: He says I m depressed much of the time ELIZA: i m sorry to hear that you are depressed. s/.* I am (depressed sad).* / I am sorry to hear that you are \1/ s/.* always.* / Can you think of a specific example /

Formelle språk Språk L over alfabet Σ Språk L over alfabet Σ

Formelle språk αβγδεζηθικλμ νξοπρστυφχψω αβγδεζηθικλμ νξοπρστυφχψω

Formelle språk ΑΒΓΔΕΖΗΘΙΚΛΜ ΝΞΟΠΡΣΤΥΦΧΨΩ ΑΒΓΔΕΖΗΘΙΚΛΜ ΝΞΟΠΡΣΤΥΦΧΨΩ

Formelle språk Ubegrensede Kontekstsensitive Kontekstfrie Regulære Ubegrensede Chomskyhierarkiet. Regulære språk kan parses i lineær tid, konteksfrie i polynomisk (O(n 3 )), kontekstsensitive krever eksponensiell tid (PSPACE-complete), og ubegrensede språk krever en full Turing-maskin. Kontekstsensitive Kontekstfrie Regulære

Formelle språk L Σ Det formelle språket L er en delmengde av mengden strenger man kan lage med tegn fra alfabetet Σ L Σ

Formelle språk 1. Det tomme språket er regulært 2. a Σ er singleton-språket {a} regulært 3. Gitt A og B regulære språk er også A B, A B og A regulære Dette konstruerer nøyaktig de regulære språkene. Det vil si alle de regulære språkene, og ingen andre. 1. Det tomme språket er regulært 2. a Σ er singleton-språket {a} regulært 3. Gitt A og B regulære språk er også A B, A B og A regulære

Formelle språk Lukket under: Union (A B også regulært) Snitt (A B også regulært) Komplement (Ā også regulært) Mengdedifferanse (A B også regulært) Lukket under X vil si at hvis du putter en A og en B som har egenskapen inn i operasjon X, vil resulatet ha samme egenskap som A og B hadde. Den siste egenskapen følger fra to og tre siden A B = A B Lukket under: Union (A B også regulært) Snitt (A B også regulært) Komplement (Ā også regulært) Mengdedifferanse (A B også regulært)

Formelle språk {w der w er... } Et formelt språk er en mengde (husk L Σ ), så vi bruker gjerne mengdenotasjon med litt vanlig tekst i for å definere språkene våre. {w der w er... }

Tilstandsmaskiner Σ,S,s 0,δ,F Formelt definerer vi en endelig tilstandsmaskin som en fem-tuppel, der hvert element angir forskjellige deler av maskinen. Σ,S,s 0,δ,F

Tilstandsmaskiner Σ Σ er alfabetet til språket vi snakker om, akkurat som i definisjonen av et formelt språk. Σ

Tilstandsmaskiner S S er mengden tilstander. S

Tilstandsmaskiner s 0 S s 0 er starttilstanden; der maskinen starter å behandle data. s 0 S

Tilstandsmaskiner δ : S Σ S δ er transisjonsfunksjonen. For hver tilstand maskinen kan være i pluss alle mulige bokstaver som kan være den neste å behandle (S Σ) angir den ( ) hva neste tilstand er (S). δ : S Σ S

Tilstandsmaskiner F S F er sluttilstandene, en delmengde av S. Hvis maskinen ender opp i en av disse tilstandene er strengen i språket. I alle andre tilfeller forkastes strengen. F S

Tilstandsmaskiner Σ,S,s 0,δ,F Formelt definerer vi en endelig tilstandsmaskin som en fem-tuppel, der hvert element angir forskjellige deler av maskinen. Σ,S,s 0,δ,F

Tilstandsmaskiner b a! q 0 q 1 q 2 q 3 a a En naturlig måte å studere FSAer på er en grafisk representasjon. Pila angir starttilstanden, pilene sier hvor du skal gå når du ser en bokstav, og tilstander med to ringer er slutttilstander. En annen måte å representere maskinen på, som er nyttig for datamaskiner som skal kjøre en maskin, er transisjonstabellen. q b 0 q a 1 q! 2 q 3 Femtuppelet som angir maskinen for sauespråket er dermed de fem punktene her.

Tilstandsmaskiner b a! q 0 q 1 q 2 q 3 a a b! q 1 q 0 q 1 q 2 q 2 q 2 q 3 q 3 a En naturlig måte å studere FSAer på er en grafisk representasjon. Pila angir starttilstanden, pilene sier hvor du skal gå når du ser en bokstav, og tilstander med to ringer er slutttilstander. En annen måte å representere maskinen på, som er nyttig for datamaskiner som skal kjøre en maskin, er transisjonstabellen. Femtuppelet som angir maskinen for sauespråket er dermed de fem punktene her. q b 0 q a 1 q! 2 q 3 a b! q 0 q 1 q 1 q 2 q 2 q 2 q 3 q 3

Tilstandsmaskiner Σ = {a,b,!} S = {q 0,q 1,q 2,q 3} s 0 = q 0 b a! q 0 q 1 q 2 q 3 δ(q,σ) fra transisjonstabellen F = {q 3} a a b! q 1 q 0 q 1 q 2 q 2 q 2 q 3 q 3 a En naturlig måte å studere FSAer på er en grafisk representasjon. Pila angir starttilstanden, pilene sier hvor du skal gå når du ser en bokstav, og tilstander med to ringer er slutttilstander. En annen måte å representere maskinen på, som er nyttig for datamaskiner som skal kjøre en maskin, er transisjonstabellen. Femtuppelet som angir maskinen for sauespråket er dermed de fem punktene her. Σ = {a,b,!} S = {q 0,q 1,q 2,q 3 } s 0 = q 0 q b 0 q a 1 q! 2 q 3 δ(q,σ) fra transisjonstabellen F = {q 3 } a b! q 0 q 1 q 1 q 2 q 2 q 2 q 3 q 3

Tilstandsmaskiner Determinisme En maskin er deterministisk hvis man i alle tilstander alltid vil vite hva den neste tilstanden må være, for alle mulige inputbokstaver. Det vil si at maskinen i alle tilstander aldri har to forskjellige kanter med samme bokstav på. I en ikke-deterministisk maskin kan vi også ha ɛ-kanter, som går til en annen tilstand uten å behandle en bokstav. Determinisme I en ikke-deterministisk maskin vil transisjonsfunksjonen være δ : S Σ P (S), siden det er mer enn én mulig tilstand.