LABORATION 4: Textmanipulering Introduktion till lingvistik och datalingvistik XD1110

Relevanta dokument
Översikt. Texthantering med bl.a. kommandona cat, less och grep Omdirigering och piping Gnuplot. Linux 2 2 / 12

Textbearbetning i skalet och man-sidor

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Xemacs, första hjälpen!

Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING

Unix design. Unix är ett operativsystem från mellan 1969 och 1972, beroende på hur man räknar. Unix utvecklas fortfarande.

awk, sed och grep awk döpt efter Aho Weinberger Kernighan (1977) sed en stream editor grep sed g/re/p bygger i viss mån på ed line editor

kommando -fl argument

Laboration: Whitebox- och blackboxtesting

Labb 2: Syntax och ordklasstaggning. Att arbeta med grammatiskt analyserade data

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Kapitel 12. Mer om program Att rapportera buggar och problem make

Programmering i C++ Kompilering från kommandoraden

Uttryck, satser och strömhantering

awk, sed och grep ed kommandon grep Standard unix editor tidig 70-tal program < 8Kbyte awk döpt efter Aho Weinberger Kernighan (1977)

Program. Kapitel make Program Interpreterande och kompilerande program

Inledande programmering med C# (1DV402) Introduktion till programmering

Linuxadministration I 1DV417 - Laboration 1 Installation, användare och allmänt Linuxhandhavande

Gränssnitt för FakeGranska. Lars Mattsson

Emacs. Eric Elfving Institutionen för datavetenskap (IDA) 22 augusti 2016

Perl. ~ Redovisning. Alla filer som behövs för att lösa uppgifterna finns dels på ~martin/pubperl/ på mumin, samt på

Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING

Introduktion till programmering

open_ports.sh Vet du vad din dator gör på nätet? tisdag den 19 oktober 2010

Omkoppling av in- och utmatning. In- och utmatning i Unix. Kommando exempel, ls, pipe forts. Kommando exempel, ls, pipe

Lab 7, 48 steg till ett bättre liv i Unix-labbet

UNIX Introduktion UNIX. Datorerfarenhet. Vad menar man med operativsystem

1 Vad är Versionshantering? 2 Git. 2.1 GitHub

Uppgift 1 (grundläggande konstruktioner)

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

UNIX. Laborations-PM Anders Egneus, Henrik Lindgren, 2004, Raphael Corsoski, Erik Eliasson, Christian von Schultz, 2008.

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

Föreläsning 2. Operativsystem och programmering

Lathund för UNIX och Emacs

Manual för att skicka mejl via medlemsregistret på webben

Emacs. Eric Elfving Institutionen för Datavetenskap (IDA)

Automatisera uppgifter med Visual Basic-makron

Programbeskrivning. Chaos på Web. Version

Mathematica. Utdata är Mathematicas svar på dina kommandon. Här ser vi svaret på kommandot från. , x

Lathund för Linuxkommandon

KPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Migrera till Word 2010

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

Uppgift 1 ( Betyg 3 uppgift )

TDDI16: Datastrukturer och algoritmer

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Att hämta organisationers publikationsposter ur DiVA

TENTA: TDDD11 & TDDC68. Tillåtna hjälpmedel. Starta Emacs, terminal och tentakommunikationsfönster. Skicka in frågor och uppgifter

Uppgift 1a (Aktiekurser utan poster)

TDP005 Projekt: Objektorienterat system

Ordlistor, filhantering och ut på webben. Linda Mannila

Datorsystem och programmering

Datorintro för elektro på Solaris

DRAFT. CVS kurs laboration 1 Checka in, ut och uppdatera. Marcus Rejås. 17 november 2002

Uppgift 1 ( Betyg 3 uppgift )

UNIX. 2D1339 Programkonstruktion Hösten 2001 Datorintroduktion Laboration 1. Mål. Vad laborationen går ut på. Redovisning

Datorteknik TSIU02 Lab 2 Morsesändare v0.7

prog: prog.c gcc -g -Wall prog.c /usr/local/bib/c/58an/modules/modul.o -o prog

Inlämningsuppgift: Pronomenidentifierare

Kapitel 3. Mer om skalet. 3.1 Kommandorör ( )

Kapitel 4 Arkivmenyn Innehåll

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Terminal vad det är vad man kan göra med den

Uppgift 1 (Oläsliga krypterade meddelanden)

SeaClean städbeställning via hyttelefonerna

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

ALLMÄNT 2. Introduktion 2. Åtgärder vid driftsättning 2. Förklaring av termer och begrepp 3. Kommandosyntax 3 HANDHAVANDE 4. Kommandon 4.

KPP053, HT2015 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

TDP Regler

Grundläggande textanalys, VT2013

Introduktion till programmering, hösten 2011

ON-LINE UNIX-MANUAL FÖR FISC- KORPUSEN

Läsning, skrivning, tangentbord, skärm. F6: Filhantering (kap. 8) Tabell på skärmen. save

BRIDGE MASTER 2000 SCANDINAVIA av Fred Gitelman

Kapitel 1 Komma igång... 3

Bruksanvisning Bläckfisken USB

Föreläsning 3. Programmering, C och programmeringsmiljö

TDDC77 Objektorienterad Programmering

E-POST3 Ett lättanvänt e-postprogram med stöd för talsyntes

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

Tekniker för storskalig parsning

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Uppdatera Mobilus Professional till version * Filen MpUpdate.exe får inte köras när du startar denna uppdatering.

Laboration med Internet och HTML

Men först: Några funktioner ur preluden. Introduktion till programmering. Uppgiften. Variationer av uppgiften. Föreläsning 4

Subversion. Laboration. Höstterminen 2008 r81. Ronny Kuylenstierna

IDA kursmaterial Informationsblad make. make

Icarus - Enkelt Skript. Manual revision 1.2, Keylogic AB.

Använda Python Laboration 1 GruDat, DD1344

Introduktion till programmering

kl Tentaupplägg

Kom igång med. Windows 8. DATAUTB MORIN AB

Versionshantering med Git. Henrik Henriksson 17 april 2018

Uppgift 1 ( Betyg 3 uppgift )

Lingvistiskt uppmärkt text

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

Word-guide Introduktion

Transkript:

GÖTEBORGS UNIVERSITET Utbildningsprogrammet i datalingvistik Robert Andersson 14 november 2006 LABORATION 4: Textmanipulering Introduktion till lingvistik och datalingvistik XD1110 Inledning Samlingar av text, korpora, används inom många lingvistiska områden och som datalingvist förväntas du hantera ett antal verktyg för att göra automatisk analys av textmassor. Syftet med denna labb är att introducera dig till ett antal unix-verktyg för textmanipulering. Dessa verktyg kan användas för enklare analyser av texter, för mer avancerade textmanipulationer bör du kanske med åren lära dig använda programspråk som perl, awk eller sed. Dessa är imperativa så du kan med fördel vänta tills du har läst kursen imperativ programmering. Lathunden från datorintroduktionen som du själv satte ihop kommer väl till hands för denna laboration. Innan du börjar med uppgifterna i laborationen bör du öppna en terminal och logga in på hal.cling.gu.se via ssh för att komma åt vissa filer hemma hos användaren ra. Givetvis fungerar de flesta av kommandona i unix-liknande terminaler på andra maskiner och operativsystem t ex cygwin under windows eller terminalverktyget i MacOS X, men då kommer du inte åt filerna du behöver. Uppgift 1 De vanliga kommandona för att presentera text är echo, cat, more och less. Men kanske ännu viktigare är det att känna till man-kommandot som visar manualsidan för ett kommando. Till exempel visar man echo manualsidan för echo-kommandot. Fråga: Med hjälp av manualsidan för cat, använd cat för visa innehållet i filen ~ra/publik/ lab4/aa03.cge2 1 där varje rad föregås av ett dess radnummer. Utifrån din körning vilket är det sista egennamnet och på vilken/vilka rader står det på? För att kunna studera filen sida för sida kan du använda dig av så kallade pager-program som more eller less. Prova more-kommandot på filen ovan more ~ra/publik/lab4/aa03.cge2 Tryck på mellanslag några gånger och studera filen, du avslutar more genom att trycka på q- tangenten. Du kan använda wild cards för att matcha en eller flera tecken i filnamn. Vi har följande wild cards * matchar en sekvens av noll eller flera tecken? matchar exakt ett tecken [CSET] matchar något tecken i CSET 1 Samtliga filer är kortare utdrag hämtade ur Stockholm-Umeå Corpus, suc, version 2.0. Dock något manipulerade av mig för att göra laborationen mer givande... 1

Dessa används då du vill köra ett program på flera filer vars namn matchar ditt uttryck. Exempelvis så kan du med cat ~ra/publik/lab4/*.cge2 sammanfoga alla filer i biblioteket ~ra/publik/lab4/ som slutar med filändelsen.cge2. Hade du inte vetat ifall cge2 var i versaler eller gemener hade du kunnat gardera dig genom att skriva strängen.[cc][gg][ee]2 istället. När du läste manualsidan för cat såg du att detta kommando sammanfogar dess infiler till en utfil. Om inga infiler anges som argument tar cat indata från standard input, oftast tangentbordet om ingen omdirigering skett. Resultatet skickas till standard output, oftast skärmen om ingen omdirigering skett. De flesta av de kommandon du kommer använda dig av för textmanipulering tar indata via standard input och skickar ut resultat via standard output, så kallade filter. 2 Omdirigering av standard input och output sker med hjälp av < standard input kommer från en fil, > standard output går till en fil, finns den redan skrivs den över, >> standard output läggs till till en fil, finns den inte skapas den och pipe, resultatet från vänsterledet skickas som indata till högerledet. Här är några exempel som du i tur och ordning kan utföra för att prova på omdirigeringar och pipes: echo text som omdirigeras till en fil > filnamn.txt echo mer text till filen >> filnamn.txt cat < filnamn.txt > filnamn2.txt cat filnamn*.txt tr " " "\n" more I det sista exemplet ovan ser du hur du sammanfogar filnamn.txt och filnamn2.txt för att sedan skicka resultatet av den sammanfogningen vidare som indata till tr-kommandot som översätter alla mellanslag till nyrader \n som i sin tur skickar sitt resultat vidare till kommandot more. Till många av unix-kommandona kan du ofta ange en eller flera flaggor som används för att justera resultaten från ett kommando utan att förlora allt för mycket funktionalitet. Flaggorna följer kommandot som argument och kan i sin tur eventuellt ta egna argument. Ett exempel är flaggan -c för tr-kommandot som istället översätter komplementet. Från sista exemplet ovan hade du fått kommandot cat filnamn*.txt tr -c " " "\n" more där tr-delen istället fått betydelsen översätt alla tecken som som inte är mellanslag till nyrader. Ett annat är flaggan -k för sort-kommandot som istället sorterar på en angiven kolumn separerad av något blanktecken där flaggan kräver ytterligare argument. Du kan tex hitta din största fil genom kommandot ls -alr ~ sort -n -k 5,5 där ls -alr ~-delen listar alla ditt hemkontos, ~, filer rekursivt. Resultatet från ls skickas sedan vidare in i sort-kommandot där flaggan -n säger åt sort att sortera numeriskt och flaggan -k med det egna argumentet 5,5 säger åt sort att det är femte kolumnen som den ska sortera på. 2 Kommandon ger även utdata på standard error samt ett värde för hur exekveringen gick, 0 för ok och ett annat värde om ett fel inträffade. Du kommer inte gå in på dessa under detta labbtillfälle. 2

Fråga: Du måste använda dig av en flagga till cat för att få cat att visa radnummer. Använd igen cat för att visa det sammanfogade innehållet i filerna ~ra/publik/lab4/aa03.cge2 och ~ra/publik/lab4/kn11.cge2 så att varje rad föregås av ett radnummer, du bör få över 6000 rader. Vilket egennamn hittar du på rad 6167? Uppgift 2 Efter uppgift etts översikt över enklare unix-kommandon och hur de kan sammanlänkas ska du nu börja jobba med litet mer intressantare filter-kommandon. Med kommandot grep kan vi hämta bara de rader som matchar en sträng ur en fil. Till exempel kan du prova att grepa efter president i filen ~ra/publik/lab4/aa03.cge2. grep president ~ra/publik/lab4/aa03.cge2 Du bör få resultatet <title level=a>två samspelta presidenter</title> <w n=?>presidenter<ana><ps>nn<m>utr PLU IND NOM<b>president</w> <w n=?>presidenterna<ana><ps>nn<m>utr PLU DEF NOM<b>president</w> <w n=?>presidenten<ana><ps>nn<m>utr SIN DEF NOM<b>president</w> <w n=?>presidenterna<ana><ps>nn<m>utr PLU DEF NOM<b>president</w> <w n=?>presidentförslag<ana><ps>nn<m>neu SIN IND NOM<b>presidentförslag</w> <w n=?>presidentens<ana><ps>nn<m>utr SIN DEF GEN<b>president</w> Studera raderna i resultatet, du ser att den inte bara hämtar rader som bara innehåller strängen president utan det räcker att strängen finns med som delsträng. Dessutom anar du nog att det verkar finnas en struktur... Du ser att på första raden så omges texten Två samspelta presidenter av två SGML-taggar, <title level=a> och </title>. Dessa taggar markerar att texten i det här fallet är en titel, en titel varifrån texten är hämtat. Den raden är för oss idag ganska ointressant och vi vill igentligen inte ha med den så vi modifierar vår sökning. grep president ~ra/publik/lab4/aa03.cge2 grep "<w n=?>" De nio raderna vi nu har börjar samtliga med <w n=?> och slutar med </w> vilket säger att mellan dessa taggar finns ett ord och dess analys. Tittar vi närmare ser vi att varje rad verkar ha formatet <w n=?>ord <ana><ps>ordklass <m>morfosyntaktisk INFO <b>grundform </w> Där ORD är ett ord; ORDKLASS är en kod för vilken ordklass ordet tillhör; MORFOSYNTAKTISK INFO är ytterligare koder för information som t ex innehåller information om ordets genus, numerus, bestämdhet och kasus mm mm; slutligen GRUNDFORM som är någon grundform som ordet har. Studera filen ~ra/publik/lab4/tagset.txt för att ta reda på vad de olika koderna för ORDKLASS och MORFOSYNTAKTISK INFO betyder. Ur manualen för suc-2.0 får du även följande information <w> is the SGML-tag used for words in suc, <ana> stands for analysis, <ps> for partof-speech, <m> for morphosyntactic information and <b> for base form. Redovisa: Utifrån vad du vet ovan för hur suc är strukturerad Visa hur du kan konstruera en one-liner 3 som ur alla filer med filextensionen.cge2 under biblioteket ~ra/publik/lab4/, listar alla substantiv i neutrum, plural, bestämd form, nominativ. 3 En one-liner är en eller flera, kaskadkopplade, kommandon som ryms på en rad. Oftast sker detta m h a pipes, t ex com1 com2 com3 com4 > resfil.txt 3

Uppgift 3 Om du studerar resultatet från den one-liner du konstruerade i förra uppgiften så hittar du identiska rader. Med kommandot uniq kan du snabbt ta bort dubbletter av närliggande rader. Återanvänd din one-liner i föregående uppgift men lägg till så att du med uniq sorterar bort identiska rader... Tyvärr ligger inte alla identiska närliggande utan det krävs sortering, med sort, tillsammans med uniq. Redovisa: Med hjälp av uppgift 2, visa hur du kan lägga till fler led i denna one-liner så du konstruerar en ny som även sorterar bort samtliga dubbletter. Uppgift 4 Ibland vill du som datalingvist kunna undersöka hur många förekomster det finns av vissa graford i en korpus, en så kallad frekvensordlista, ett exempel 12 så[ab] 12 upp[pl] 13 om[sn] 14 de[pn] 14 vi[pn] 16 jan[pm] 16 mellan[pp] 16 när[ha] 16 under[pp] 17 gorbatjov[pm] Lägg märke till att alla tecken i orden har blivit översatta till gemener, varför tror du detta har gjorts? Från varje fil med filändelsen.cge2 i biblioteket ~ra/publik/lab4/ ska du skapa en sådan här frekvensordlista. Du kommer vara nödvändig att använda dig av kommandon som cat, tr, sort, uniq och givetvis man... vissa kommandon till och med mer än en gång. Manualsidorna är dina vänner studera manualsidan för uniq-kommandot för att hitta en flagga så att uniq även skriver ut antalet förekomster för varje rad. Till din hjälp har du även programmet suc2toktag som finns i biblioteket ~ra/publik/lab4/ som indata tar en suc-korpusfil och filtrerar den till utdata där varje mening i korpusfilen hamnar på en rad. Varje ord i en mening följs av en suc-kod för vilken ordklass den tillhör. En början är cat ~ra/publik/lab4/*.cge2 ~ra/publik/lab4/suc2toktag Redovisa: Studera resultatet från kommando-sekvensen ovan och visa hur du kan fortsätta konstruktionen med att översätta alla versala tecken till gemena, få exakt ett ord med dess suc-kod på var sin rad, ta bort onödiga blanktecken, 4 sortera bort dubbletter och skriva antalet förekomster för varje ord. 4 Blanktecken är t ex mellanslag, nyrader och tabbar. 4

Fråga: svara på Med hjälp av din genererade frekvenslista och eventuellt fler sekvenser i din one-liner, vilket ord som har flest förekomster, vilken ordklass har det ord som har flest förekomster och inte är en interpunktion, hur många olika typer av ord har du i korpusen och hur många hapaxord 5 finns i korpusen? Inlämning Det du minimalt ska lämna in är svar på samtliga frågor i uppgifterna. Dessutom ska du redovisa de one-liners du konstruerat i uppgift 2-4 med förklaringar till varje del i sekvensen, t ex kan kommando-sekvensen cat * wc förklaras cat * sammanfogar samtliga filer i det nuvarande arbetbiblioteket och skickar resultatet vidare till kommandot wc som räknar antalet rader, ord och tecken. Ytterligare ett exempel kommer här på hur en redovisning av en kommando-sekvens kan se ut cat *.txt tr " " "\n" sort cat tr denna del sammanfogar samtliga txt-filer i det nuvarande arbetsbiblioteket denna del översätter varje mellanslag till nyrad så att vi får varje ord på en egen rad sort denna del sorterar de inkommande orden. 5 Hapaxord är ord i korpusen som har förekomsten 1. 5