Informationsansvarig: Lars Ahrenberg, fornamn.efternamn@liu.se
Sidan uppdaterades senast: 2011-02-23
LiU » IDA » Grundutbildning » Kurs »
729G09 »
vt11 »
Lab1 »
Lab 1
I denna laboration kommer ni få göra enklare bearbetningar av text. En textbearbetning kan vara något så enkelt som att välja ut alla rader i en text som innehåller ett givet ord, eller att dela upp en text så att varje ord kommer på en egen rad.
Att bearbeta stora textmassor är ofta ett bra sätt att lära sig mer om språket. Det är först när man tar text från verkliga sammanhang, som man ser hur språket faktiskt används, och man måste ta stora textmassor för att kunna se några upprepade mönster.
Efter Laboration 1 ska du:
Vi kommer att använda Python-modulen re för att bearbeta text med reguljära uttryck. re-modulen innehåller många användbara funktioner men vi koncentrerar oss här på tre funktioner:
|
regex = re.compile(r'reguljärt uttryck', re.L) |
Skapar ett mönster från ett reguljärt uttryck. |
|
regex.findall(text) och regex.findinter(text) |
Returnernar en lista på alla matchningar av mönstret regexp i strängen text. |
|
regex.sub(r'ersättningsuttryck', text) |
Returnerar en textsträng där alla förekomster av mönstret regexp i strängen texten
har bytts ut mot innehållet i ersättningsuttrycket. |
Mer information om reguljära uttryck i Python hittar ni här:
Laborationen förutsätter också att du förstår hur reguljära uttryck fungerar. Du kan läsa mer om reguljära uttryck här:
Gå noggrant igenom alla exemplen, så att du förstår principerna för hur reguljära uttryck är uppbyggda och vad de matchar. Det finns också en lathund för reguljära uttryck som kan vara användbar:
Testa!
När du väl sitter vid datorn så är det bara att testa
som gäller. För att verkligen förstå vad ditt reguljära uttryck gör kan
det vara användbart att skriva en egen kortare text att köra på, antingen
i redemo.py eller i en textfil som indata till ditt eget pythonscript. Med
en kortare text är det lättare att identifiera och avhjälpa eventuella fel.
Studera utdata!
Glöm inte att studera det resultat du
får ut! Om du t.ex. ska dela upp en text i meningar kan det vara värt att
ta en extra titt på utdata för att vara säker på att det verkligen bara är
en mening på varje rad. Det kan vara svårt att tänka ut alla möjliga
undantagsfall i förväg, därför måste man noga studera det material
man har!
Uppgifterna ska lösas med reguljära uttryck i Python. Till er hjälp har ni två enkla program i Python som ni kan bygga vidare på. Programmet script_find.py letar efter en sträng i en text och skriver ut alla matchningar på skärmen. Programmet script_sub.py letar upp alla förekomster av ett sökuttryck och ersätter dessa med något annat.
Använd valfri textredigerare för att ändra i programmen t.ex. Gedit eller Emacs. För att köra programmet kan ni öppna ett terminalfönster, förflytta er till er arbetskatalog och skriv:
python script_find.py
Om du vill kan du ladda ner programmet redemo.py till din arbetskatalog. Med redemo.py kan du testa dina reguljära uttryck interaktivt för att se vad de matchar.
Lösningarna ska vara tillräckligt generella för att kunna köras på en annan text än labbtexten med jämförbart resultat. Lösningarna måste också vara lingvistiskt korrekta. Denna del examineras och era lösningar ska lämnas in enligt beskrivningen längst ner på sidan.
Till uppgifterna används texten webbtext.txt som är en obehandlad text.
Redovisning ska ske både elektroniskt och på papper. Den skriftliga redovisningen måste vara underskriven av alla medlemmar i labbgruppen. Skicka in era lösningar via e-post till Sara Stymne i text- eller pdf-format. Det ska tydligt framgå vilken uppgift varje lösning hör till. Ange om ni använder annan indata än labbtexten, exempelvis resultatet från en tidigare uppgift.
Alla uppgifter ska lösas. För betyget G krävs minst 8 godkända lösningar. För betyget VG krävs att alla 13 uppgifter är godkända.
Uppgift om deadline finns på sidan Inlämningsdatum.