Labb 1 - Textbearbetning med reguljära uttryck

Slides:



Advertisements
Liknande presentationer
Talföljder formler och summor
Advertisements

Varför måste jag ha ett långt och jobbigt lösenord? Jo… det är såhär…
Andragradsfunktioner & Andragradsekvationer
Pronomen.
Kap 1 - Algebra och linjära modeller
HTML - grunder. Program •Html kan skrivas i anteckningar, eller vilket annat textbehandlingsprogram som helst. Mitt tips: Notepad ++ Notepad ++ •Grafiska.
hej och välkomna EKVATIONER Ta reda på det okända talet.
XHTML.
Formellt, skarpt och snyggt
1 Logikprogrammering ons 11/9 David Hjelm. 2 Repetition Listor är sammansatta termer. De består av en ordnad mängd element. Elementen i en lista kan vara.
Sökning och sortering Linda Mannila
OPERATIVSYSTEM OCH PRAKTISK LINUX Föreläsning 6 – Vecka INNEHÅLL  Hantering av användarkonton och användargrupper  Användning av Sudo för delgering.
Programmeringsteknik Föreläsning 6 Skolan för Datavetenskap och kommunikation.
Repetition inför provet
Satsdelar.
Beskriver vilken funktion orden har i en sats.
Dcg-notation 21.2 G 2.3 M (BBS 8). dagens föreläsning extra argument i dcg-notation prolog-anrop i dcg-notation avslutande kommentarer om dcg.
Programmeringteknik Webbdelen. HTML H yper T ext M arkup L anguage Märker upp sidans innehåll så att webbläsaren kan avgöra hur innehållet ska visas.
Programmeringsteknik Föreläsning 4 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 1 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik för K och Media
Växjö 21 april -04Språk & logik: Kontextfria grammatiker1 DAB760: Språk och logik 21/4: Kontextfria 10-12grammatiker Leif Grönqvist
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
INFORMATIONSHANTERING Tips & råd av Anna Maria & Joakim
Växjö 15 april -04Språk & logik: Reguljära uttryck1 DAB760: Språk och logik 15/4: Finita automater och 13-15reguljära uttryck Leif Grönqvist
MaB: Andragradsekvationer
Programmering B PHP Lektion 2
Föreläsning 5.  Idag  Kap 7 i Dawson  Filer  Felhantering med try…except.
Programmering B PHP Lektion 3
1 Funktioner Nr 3 Funktionstyper, högre ordningens funktioner och polymorfism.
Word Read Plus 08 talsyntes
Programmeringsteknik
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Formell logik Kapitel 1 och 2
Stig Dagerman Född 1923 i Älvkarleby (Uppsala län) Dog 1954 (tog sitt liv) Svensk författare och journalist Han var en av de mest framträdande författarna.
Litterära och retoriska begrepp
Föreläsning 3 Programmeringsteknik och Matlab DD1312
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
Funktioner, styrstrukturer, manipulering av matriser
Grundläggande programmering
De eller dem, det är frågan?
DD1311 P ROGRAMMERINGSTEKNIK MED PBL Föreläsning 9 Skolan för Datavetenskap och kommunikation.
Stor och liten bokstav.
Frågor. Vad är en Fråga? -En fråga är ett urval av information från ett eller flera fält i en eller flera tabeller. - Du använder frågor för att selektera.
SEMIOTIK.
Namnrum, räckvidd och rekursion Linda Mannila
F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och.
1 Programmera med strängar nr 9 Tal till sträng Sträng till tal Grep Sträng till lista av ord.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Skrivregler & grammatik
F. Drewes, Inst. f. datavetenskap1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax Flertydighet i kontextfri.
Stockholms universitetsbiblioteks kurser En introduktion till EndNote X2 Stockholms universitetsbibliotek
Länkade listor Binära träd
2D1311 Programmeringsteknik med PBL Föreläsning 1 Skolan för Datavetenskap och kommunikation.
Föreläsning 2 2D1312 Introduktion till Python Kap 1 och 2 i kursboken.
Pontus Johansson 1 grammatiker 21.1 G 1 (BBS 7)
1 Matlab, föreläsning 1 Oktober MATLAB Perspektiv på materialdesign Lina Kjellqvist Rum: K324 Telefon:
Formellt, skarpt och snyggt
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax.
Växjö 14 april -04Språk & logik: Finita automater1 DAB760: Språk och logik 14/4:Finita automater Leif Grönqvist Växjö Universitet.
Regler för citatteknik
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
Språkriktighet. Stor och liten bokstav Stor: vid namn. Sammansättning av namn + helt ord: Stockholmscaféer (jämför med stockholmare) Liten bokstav: svensk.
Lars Madej  Talmönster och talföljder  Funktioner.
Python.
Formell logik Kapitel 1 och 2
Föreläsning 3 Programmeringsteknik
Språkriktighet.
Presentationens avskrift:

Labb 1 - Textbearbetning med reguljära uttryck Dela upp en text i meningar Hitta alla namn i en text Hitta adjektiv i superlativ Lektion reguljära uttryck re modulen i Python

Formella språk Naturliga språk engelska, svenska, … Formella språk Programmeringsspråk Användas för att modellera naturliga språk Modellera uttryckstyper

Definitioner Ett alfabet är en mängd av symboler En sträng är en sekvens av symboler 0011, 101, 1, 111 Ett (formellt) språk är en mängd strängar som bildas med ett givet alfabet L = {001, 01, 1, 111}

Chomskyhierarkin Reguljära språk Kontextfria språk Kontextkänsliga språk Obegränsade språk

Formella språk Sheeptalk Bä! Bää! Bäää! Bääää! … Alfabet = {Bä!}

Formella språk Ett (formellt) språk är en mängd strängar som bildas med ett givet alfabet Definition av Sheeptalk Uppräkning {Bä!, Bää!, Bäää!, Bääää!, …} Reguljära uttryck Bää*! * - noll eller flera av föregående symbol Automater

Ändliga automater Ändliga automater består av En mängd tillstånd Minst ett starttillstånd Minst ett sluttillstånd Tillståndsövergångar associerade med symboler (eller strängar) ur ett alfabet

Reguljära språk Ett reguljärt språk kan definieras med hjälp av ett reguljärt uttryck en automat

Vad är en text? En textfil består av tecken t.ex.: Bill och Bull\nåt kanelbullar\t i parken. \n – radbrytning \t – tabtecken På skärmen (eller i en texteditor) visas texten så här: Bill och Bull åt kanelbullar i parken.

Reguljära uttryck Reguljära uttryck är ett sätt att definiera sökmönster. stöds av de flesta programmeringspråk även Sök/Ersätt i Word Textfil: Bill coh Bull jagade Pelle coh Maja. Sökmönster: ’och’ ’Bill’ ’B.ll’ . matchar ett tecken vilket som helst

Reguljära uttryck Reguljära uttryck - ett kraftfullare sätt att definiera en söksträng. ’Karlsson’ - Karlsson ’[KC]arlsson’ - Karlsson, Carlsson ’[KC]arl(s|ss|z|zs)on’ - Karlsson, Carlsson, Karlson, Carlson, Carlzon… [KC] – exakt ett tecken ur teckenmängden K och C (s|ss|z|sz) – en sträng, antingen ’s’, ’ss’, ’z’ eller ’sz’

Teckenmängder [abcdef] – teckenmängd Exakt ett tecken ur teckenmängden abcdef [^abcdef] – komplement Exakt ett tecken som inte tillhör mängden abcdef [a-z] – intervall Exakt ett tecken från intervallet a-z [a-zåäö] – Exakt ett tecken ur mängden tecken i svenska alfabetet Obs! ÅÄÖ kan inte ingå i intervallet och måste skrivas separat

Kvantifierare Anger antal av föregående deluttryck. ? 0 eller 1 * 0 eller flera + 1 eller flera Carina? Carina, Carin [0-9]+ Ex. 1, 12, 67, 34589, 544 … ba* Ex. b, ba, baa, baaa … (ba)* Ex. ’’, ba, baba, bababa …

Kvantifierare forts. ? 0 eller 1 * 0 eller flera + 1 eller flera {2} 2 {2,5} 2 till 5 {2,} Minst 2 ggr {,3} Högst 3 ggr

Kvantifierare: Exempel Ett ord, vilket som helst [a-zåäö]+ Ett namn [A-ZÅÄÖ][a-zåäö]+ Telefonnummer, 14 03 04 [0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9]{2} [0-9]{2} [0-9]{2} ([0-9]{2} ){3} ( ) – specialtecken, gruppering

Förankringstecken Definierar var i strängen mönstret ska finnas: ^ strängens början $ strängens slut \b ordgräns – mellan ord och icke-ord Ordtecken: A-ZÅÄÖa-zåäö0-9 Icke-ordtecken: mellanslag , . ? : ; - ! etc Ex. ^B - ’Bra Björn!’ hej$ - ’Hej hej hej’ ’\ba’ – ’En glad anka’

Förankringstecken Förankringstecken matchar inget eget tecken. Ex.: \b - ordgräns ’Det står 2-3, sa mannen.’ |Det| |står| |2|-|3|, |sa| |mannen|.

Varför behövs en ordgräns? Jämför ’^De’ De första åren... Det är… Denne… ’^De\b’ De betraktade mig … De första åren blev svåra. ’Karlsson’ Han ringde till Eva Karlsson. Använd Karlssons klister. ’\bKarlsson\b’ Larson och Karlsson var där.

Referenser En grupp av 2 likadana siffror t.ex. 22, 55, 77 ’([0-9])\1’ Tolkas: en siffra + det som matchades i första parentesen ( ) - används både till gruppering och till att skapa en möjlig referent \1, \2, \3 - refererar till tidigare matchningar

Specialtecken Specialtecken, t ex: . ? [ ] + * $ måste ”kvotas” med ”\” (backslash) för att tolkas som vanliga tecken. ? Specialtecken: 0 eller 1 av föregående uttryck \? Frågetecken . Specialtecken: Ett tecken, vilket som helst \. En punkt ( ) Specialtecken: Gruppering \(\) Startparentes och slutparentes

Girighet Vissa specialtecken t.ex. * och + är giriga dvs. matchar alltid så mycket som möjligt av en rad. Exempel: Skriv ett reguljärt uttryck som matchar html-taggarna i texten: <TAGG>En massa text här < /TAGG>

Girighet forts. Girigt: ’<.*>’ Matchar så lång sträng som möjligt. Matchar: <TAGG>En massa text här < /TAGG> Icke-girigt: ’<.*?>’ Matchar så kort sträng som möjligt Matchar: <TAGG> En massa text här < /TAGG>

Övningar Skriv ett reguljärt uttryck som matchar: Ordet ’att’ men t.ex. inte ”katt”, ”skatt”, ”batteri” Alla böjningsformer av substantivet ’hund’ Alla årtal i en text En svensk epostadress Ord som består av små bokstäver och slutar på ’b’ Ord som upprepas två gånger efter varandra t.ex. ”och och”, ”Lena Lena”

Reguljära uttryck i Python Modulen re compile() skapa regexp mönster search() hitta ett mönster i en text finditer() hitta alla förekomster av mönstret sub() sök och ersätt 1 Importera re modulen >> import re >> text = ’Bill och Bull’ 2 Skapa ett sökmönster (reguljärt uttryck) >> regex = re.compile(r’[a-zåäö]+’, re.L) 3 Sök efter mönstret i en textsträng >> regex.search(text)

Skapa ett reguljärt uttryck med compile() re.compile(r’reguljärt uttryck’, flaggor) r’…’ ange det reguljära uttrycket som en raw-sträng Flaggor re.L LOCALE tar hänsyn till lokala inställningar re.I IGNORECASE skiljer inte på stora och små bokstäver Exempel regex = re.compile(r’[a-zåäö]+’, re.L)

Sök i en text >> text = ’Bill och Bull’ >> regex = re.compile(r’[a-zåäö]+’, re.L) Hitta första förekomsten av regex: matchobj = regex.search(text) returnerar ett matchobject matchobj.group() returnerar den matchade strängen

Gruppera mönster Gruppera uttryck med () >>> regex = re.compile(r'([a-z.]+)@([a-z.]+)', re.L) >>> m = regex.search('marho@ida.liu.se') >>> m.group(0) 'marho@ida.liu.se' >>> m.group(1) 'marho' >>> m.group(2) 'ida.liu.se’

Sök i en text forts. >> text = ’Bill och Bull’ >> regex = re.compile(r’[a-zåäö]+’, re.L) Hitta alla förekomster av regex i text: matchlist = regex.finditer(text) returnerar lista med matchobject for m in matchlist: print m.group() Hur många träffar i texten?

Sök och ersätt text ”sök och ersätt” > regex.sub(r‘ersättningsssträng', textfil) Ersätt alla matchningar av regex med ny text. Ersättningstexten är en vanlig textsträng (inte ett reguljärt uttryck) >> regex = re.compile(r’coh’, re.L) >> ny_text = regex.sub(r‘och', textfil) Bill och Bull jagade Pelle och Maja.

Sök och ersätt text forts. Ersättningstexten kan innehålla referenser till sökuttrycket. Sök efter årtal och märk upp dem med taggar: \d – en siffra \d{4} – fyra siffror >> regex = re.compile(r’(\d{4})’, re.L) >> nytext = regex.sub(r‘<year>\1</year>', text) text : De reste till Spanien 1975. nytext: De reste till Spanien <year>1975</year>

Exempelskript 1 # script_find.py import re text_file = open("webbtext.txt", "r") webbtext = text_file.read() text_file.close() # HÄR SKRIVER NI ERA REGULJÄRA UTTRYCK! regex = re.compile(r'reguljärt uttryck', re.L) results = regex.finditer(webbtext) for result in results: print result.group(0)

Exempelskript 2 # script_sub.py import re text_file = open("webbtext.txt", "r") webbtext = text_file.read() text_file.close() # HÄR SKRIVER NI ERA REGULJÄRA UTTRYCK! regex = re.compile(r'reguljärt uttryck', re.L) ny_text = regex.sub(r'ersättningsuttryck', webbtext) print ny_text

Labb 1 Inlämningsuppgifter (13 st) För G ska 9 uppgifter lösas korrekt För VG ska alla 13 uppgifter lösas korrekt Lösningarna ska vara lingvistiskt korrekta. Testa sökmönster med redemo.py Läs före labben Introduktion till reguljära uttryck Kap 7. i Programmering i Python