Presentation laddar. Vänta.

Presentation laddar. Vänta.

Labb 1 - Textbearbetning med reguljära uttryck •Textbearbetning:  Dela upp en text i meningar  Hitta alla namn i en text  Hitta adjektiv i superlativ.

Liknande presentationer


En presentation över ämnet: "Labb 1 - Textbearbetning med reguljära uttryck •Textbearbetning:  Dela upp en text i meningar  Hitta alla namn i en text  Hitta adjektiv i superlativ."— Presentationens avskrift:

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

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

3 Definitioner  Ett alfabet är en mängd av symboler •A = {0,1}  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}

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

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

6 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

7 Ä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

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

9 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 kanelbullari parken.

10 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

11 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’

12 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

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

14 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

15 Kvantifierare: Exempel •Ett ord, vilket som helst [a-zåäö]+ •Ett namn [A-ZÅÄÖ][a-zåäö]+ •Telefonnummer,  [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

16 Förankringstecken Definierar var i strängen mönstret ska finnas: ^strängens början $strängens slut \bordgrä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’

17 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|.

18 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’ Han ringde till Eva Karlsson. Larson och Karlsson var där.

19 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

20 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

21 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: En massa text här

22 Girighet forts. Girigt: ’ ’ Matchar så lång sträng som möjligt. Matchar: En massa text här Icke-girigt: ’ ’ Matchar så kort sträng som möjligt Matchar: En massa text här

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

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

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

26 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

27 Gruppera mönster Gruppera uttryck med () >>> regex = re.L) >>> m = >>> m.group(0) >>> m.group(1) 'marho' >>> m.group(2) 'ida.liu.se’

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

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

30 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‘ \1 ', text) text : De reste till Spanien nytext: De reste till Spanien 1975

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

32 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

33 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


Ladda ner ppt "Labb 1 - Textbearbetning med reguljära uttryck •Textbearbetning:  Dela upp en text i meningar  Hitta alla namn i en text  Hitta adjektiv i superlativ."

Liknande presentationer


Google-annonser