729G09 Språkvetenskaplig databehandling

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

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

729G09 Språkvetenskaplig databehandling

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

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

DAB760: Språk och logik

Datorlingvistisk grammatik

729G09 Språkvetenskaplig databehandling

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

Föreläsning 7: Syntaxanalys

Föreläsning 5: Modellering av frasstruktur. 729G09 Språkvetenskaplig databehandling Lars Ahrenberg

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

Partiell parsning Parsning som sökning

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

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

Introduktion till programmering och Python Grundkurs i programmering med Python

Konstruktion av datorspråk

ENKEL Programmering 3

Klassdeklaration. Metoddeklaration. Parameteröverföring

Matematik för språkteknologer

Definition. Mängden av reguljära uttryck på alfabetet Σ definieras av. om α och β är reguljära uttryck så är (α β) ett reguljärt uttryck

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

Mer om språk och Ruby

Parameteröverföring. Exempel. Exempel. Metodkropp

Alfabeten, strängar och språk. String

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

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

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

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Reguljära uttryck Grammatiker Rekursiv nedåkning Allmänna kontextfria grammatiker. Syntaxanalys. Douglas Wikström KTH Stockholm

F3 Datarepresentation teckenkodning och datakompression EDAA05 Datorer i system! Roger Henriksson!

F3 Datarepresentation teckenkodning och datakompression

F2 Datarepresentation talbaser, dataformat och teckenkodning

Mer om språk och Ruby

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Introduktion till programmering SMD180. Föreläsning 7: Strängar

Modellering med kontextfri grammatik Kontextfri grammatik - definition En enkel kontextfri grammatik Klasser av formella språk

Föreläsning 18 Filer och avbildningar

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

F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

Föreläsning 2. Operativsystem och programmering

Dagens föreläsning Programmering i Lisp Fö 5

i=1 c i = B och c i = a i eller c i = b i för 1 i n. Beskriv och analysera en algoritm som löser detta problem med hjälp av dynamisk programmering.

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

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

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

TDDD78, TDDE30, 729A Tecken och strängar med och utan Java

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

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

Grundläggande textanalys, VT2012

b) S Ø aa, A Ø aa» bb, B Ø aa» bc, C Ø ac» bc» 2. Låt L vara språket över 8a< som nedanstående NFA accepterar.

Kontextfria grammatiker

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Lite mer psykologi. L2: Automater, Sökstrategier. Top-down. Kimballs sju principer

Programmering II (ID1019) :00-11:00

Föreläsning 7: Syntaxanalys

TDP Uppgift 1

Kungl. Tekniska högskolan NADA Grundformer med Stava

Syntaktisk parsning (Jurafsky & Martin kapitel 13)

Tecken och strängar i Java

10. Mängder och språk

Internationalized Domain Names (Internationaliserade domännamn)

Textbearbetning i skalet och man-sidor

Lösningsförslag till exempeltenta 2

Logisk semantik I. 1 Lite om satslogik. 1.1 Konjunktioner i grammatisk bemärkelse. 1.2 Sant och falskt. 1.3 Satssymboler. 1.

Språket Python - Del 1 Grundkurs i programmering med Python

Objektorienterad modellering och diskreta strukturer. 13. Problem. Sven Gestegård Robertz. Datavetenskap, LTH

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Informationssökning. Joakim Nivre. Introduktion till språkteknologi. Informationssökning. Inledning. Strukturerade data. Ostrukturerade data

Hur man programmerar. Exempel på problemlösning i Python

Tentamen i Grundläggande Programvaruutveckling, TDA548

Anvisningar för ifyllning av Excelark för databaser (xml-filer)

Föreläsning 13 Testning och strängar

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

Frasstrukturgrammatik

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python)

Grundläggande datalogi - Övning 9

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Programmering. Den första datorn hette ENIAC.

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

Tentamen i Grundläggande Programvaruutveckling, TDA548

Dependensregler - Lathund

Vokalprogrammet Sara Wiberg Hanna Hägerland

Verksamhetshandledning Kortnotationer

BASH. Bourne-Again SHell. Eric Elfving Institutionen för datavetenskap (IDA)

Mattias Wiggberg Collaboration

Flera SIP-operatörer eller IP-PBXer. Lisa Hallingström Paul Donald

Programmering i C++ Kompilering från kommandoraden

Programmeringsteknik med C och Matlab

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

Assemblerprogrammering del 1

Uppgift 1 ( Betyg 3 uppgift )

FL 6: Definite Clause Grammars (kap. 7)

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

Övning 5 - Tillämpad datalogi 2013

Integration mot Cellsynts SMS gateway via HTTP-gränssnitt (teknisk dokumentation) Cellsynt

Transkript:

729G09 Språkvetenskaplig databehandling Föreläsning 2, 729G09, VT15 Reguljära uttryck Lars Ahrenberg 150409

Plan för föreläsningen Användning av reguljära uttryck Formella språk Reguljära språk Reguljära uttryck Operatorer och mängder Matchning Exempel 2

Vad skiljer mängden A från B? A B 3

Vad skiljer mängden A från B? A B hästar kärlek moln dator kulor... bor hoppa lyder stannar ser... 4

Vad skiljer mängden A från B? A B hästar moln kulor fester plommon... stolen hoppet boken vattnet leendet... 5

Vad skiljer mängden A från B? A film filmen filmer filmerna... B bulle bullen bullar bullarna... 6

Hitta meningar med bulle 7

Sökproblem i textfiler Hitta alla meningar som innehåller ordet bulle, Hitta alla ord som uppfyller ett givet villkor, t.ex. består av exakt fem bokstäver, slutar på vokal, har samma stam eller ändelse(r) Hitta ordsekvenser som följer ett visst mönster, t.ex. 'den X-a X-en' 8

Textnormalisering Göra om alla stora bokstäver till små Separera skiljetecken från de ord de är kopplade till Skriva alla meningar på en egen rad etc. 9

Ett mönster för bulle (substantiv) bulle, Bulle, bulles, bullen, Bullen, bullens, bullar, bullars, bullarna,... Typ av variation med eller utan ändelse, med olika bokstäver i samma position, t.ex. e:a, b:b Kan vi fånga alla varianter med ett gemensamt mönster? 10

Reguljära uttryck Formell språkteori Reguljära uttryck är ett sätt (bland flera) att definiera s.k. reguljära språk, dvs strängmängder med en viss (begränsad) komplexitet. Programmering Många programmeringsspråk erbjuder funktioner eller moduler som explicit hanterar reguljära uttryck 11

Grundläggande begrepp sträng: en sekvens av symboler alfabet (eller lexikon): de tillåtna symbolerna konkatenering: sätta ihop två strängar, t.ex abba = abba tomma strängen: konkateneringens 'nolla' abe = eab = ab 12

Reguljära uttryck Reguljära uttryck använder tre grundläggande operationer: Operation Symboler konkatenering disjunktion iteration/upprepning * och + 13

Reguljära uttryck Exempel ab* definierar {a, ab, abb, abbb,...} ba+ definierar {ba, baa, baaa,baaaa,... } (a b) definierar {a, b} 14

Fler exempel Definiera följande mängder L1 = {acb, aacb, acbb, aacbb, aaacb,...} L2 = {by, byn, byar, byarna} Lista de kortaste strängarna som definieras av uttrycken (a b)* a(bb)*c 15

Formella språk Formellt språk = en mängd av strängar Formella språk kan definieras på olika sätt, bl.a. med mängdoperationer omskrivningsregler tillståndsautomater 16

Tre sätt att beskriva reguljära språk Uppräkning L: {b, ab, aab, aaab, } Reguljära uttryck a * b Omskrivningsregler S b S a S 17

Reguljära omskrivningar Omskrivningsregler använder två slags symboler terminala ( alfabetet ) icke-terminala ( omskrivningsbara ) Reguljära omskrivningsregler har formaten A a A a B A B 18

Mera komplexa språk Kontextfria språk ( Lab 3) Reguljära språk är kontextfria, men det finns kontextfria språk som inte är reguljära Omskrivningsregler för kontextfria språk kan ha godtyckligt antal symboler på högersidan. Exempel: S NP VP Kontextkänsliga språk Reglerna kan villkoras. Exempel: att S att NP NEG VP 19

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 MEN: t.ex.böjning i predikatsfyllnad blir svårare Min hund är så vacker 20

Reguljära uttryck i programspråk LINUX / 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 21

Symboler i implementeringar I implementeringar består alfabetet vanligen av de tecken som teckenkodningen omfattar, t.ex. ASCIItabellen med 128 tecken. Teckenkodningen beror ofta av lokala inställningar. 22

Reguljära uttryck i programspråk Mer eller mindre flexibel syntax för teckenmängder villkor på upprepningar villkor på matchning minnesparametrar... 23

Textfiler En textfil är en sekvens av bytes. Varje byte kodar för en bokstav eller annat tecken enligt en viss teckentabell, (ISO-8859-1 (ASCII), UTF-8, ) Några särskilda tecken: newline (\n) tab (\t) å, ä, ö m.fl. s.k. diakritiska tecken kan vara kodade på olika sätt i olika teckenkodningar 24

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) 25

Teckenmängder i reguljära uttryck Vanliga 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) 26

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 markeras med parenteser. Jämför ab+ och (ab)+ 27

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+) 28

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? 29

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 matchar bara i början på rad regex$ matchar bara i slutet på rad \bregex\b matchar mot ordsträngar 30

Regex golf (regex.alf.nu) 31