Korpuslinguistik für und mit Computerlinguistik Seminar SS 2003 Sitzung 1: UNIX, Perl Gerold Schneider.

Slides:



Advertisements
Ähnliche Präsentationen
G.Meininghaus, Konstanz1 Suchen im und mit dem PC.
Advertisements

Sortieren I - Bubblesort -
Das LCA – Problem in Suffixbäumen
Suche in Texten (Stringsuche )
Teil II : Benutzerebene eines Rechners
4. Serverbasierte Programmierung: Perl 4.1Grundlagen 4.1.1HTTP-Server und CGI-Schnittstelle 4.1.2Formulare 4.1.3Ein einfaches Perl Programm 4.2Interaktion.
Unix-Shells Shell: Unix-Shell-Varianten:
Funktion defined Die Funktion defined testet, ob eine Variable einen anderen Wert als undef enthält. Ist der Wert undef, so wird falsch zurückgegeben,
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
Sortieren vorsortierter Daten
Algorithmen und Datenstrukturen
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.

Perl-Grundlagen Teile der Präsentation von A. Grupp,
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Eingabeaufforderung (EA) Windows I Nützliche Kommandos (Kommando und /? liefert meist eine Liste von Optionen): cd bzw. chdir: change directory, wechselt.
Sprachkonstruktion I Konstruktion einer neuen Sprache Einladung zu einem Sprachexperiment Sie sind eingeladen, sich an einem Sprachexperiment zu beteiligen.
Die Skriptsprache Perl (6) Wolfgang Friebel DESY Zeuthen.
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
UNIX SHELL Christian Benz SS #!/bin/bash.
UNIX-Dateisystem Vortrag: Ronny Kuhnert am
Planung einfache Dateibehandlung (externe Dateien, Öffnen, Lesen/Schreiben, Schließen). Diskussion des Problems, die Wörter in einem gegebenen Text.
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
- Schnittmengenbildung -
Entitäten Extraktion Wichtige Schritte Petra Maier WS 05/06.
Einleitung Suse Linux (System- und Software-Entwicklung) Allgemein:
Eine Welt jenseits von Fenstern und Mausklicks
Linux GOIT – Der Kurs. Linux GOIT – Der Kurs Geschichte Mainframes (IBM System/360) Workstation Personal Computer Stapelverarbeitung Workstation Mehrbenutzersystem.
Vervollständigung von Text
Dateisysteme Marcel Waldvogel. Marcel Waldvogel, IBM Zurich Research Laboratory, Universität Konstanz, , 2 Dateisysteme Was ist eine Datei?
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Präsentation C Tutorium von Daniel J. Nowak Folie 1 C Tutorium.
Effiziente Algorithmen
Seminar Internet Technologien
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Korpuslinguistik für und mit Computerlinguistik
Betriebssysteme: Unix
Web-Publishing: HTML im Rahmen des PS aus Elektronischer Datenverarbeitung (Rechnerpraktikum)
REBOL. Was ist REBOL frei verfügbar plattformübergreifend highly reflective flexibel kompakt interpretiert.
Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester
BMEVIEEA100 Grundlagen der Programmierung
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Einführungstutorial: Linux Konsole
1 Tagesüberblick 3 Lösung Hausaufgabe/Fragen Zeilenweises Lesen von Dateien Schleifenausbrüche Die Variable $_ Textfunktionen.
1 Tagesüberblick 4 Lösung Hausaufgabe/Fragen Mustervergleiche.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Lösung Hausaufgabe 4-1 #!perl -w $infile = "daten4-1.txt"; $count1 = $count2 = 0; open (IN,$infile) || die "Oeffnen: $infile $!"; while ( ){ $count2 +=
1 Tagesüberblick 5 Lösung Hausaufgabe/Fragen Assoziative Felder Funktionen zu Variablenbehandlung.
1 Lösung Hausaufgabe 5-1 Seite 1 #!perl -w # Datei Oeffnen und Variablen initialisieren $infile = "daten5-3.txt"; $im=$iw=$sm=$sw=0; open (IN,$infile)
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback.
Übung Betriebssystem, Uni Innsbruck 1 Projekt1: Prozesse unter Unix Teil I Grundlagen von Unix.
Sortierverfahren Mit VB 2010 express edition JBS Tr, info Q1.
Die Bourne-Shell (cygwin), UNIX- Tools und treetagger Seminar: Strukturierung und Analyse linguistischer Korpusdaten Leiter: Leiter: Dr. Christian Riepl.
Arbeiten mit WordSmith 4. Inhalt 1. Arbeiten mit der Funktion Wortliste (im getaggten Korpus) 1. Arbeiten mit der Funktion Wortliste (im getaggten Korpus)
Regular Expressions HBU-LINUX-2003 Adduser.sh? My_user_Verw.sh? AufgUser.sh? Wo ist das Script ??????? /home/donald ? /home ? /tmp ?
Besitzrechte. Datei- und Verzeichnis-Besitzer Dateien und Verzeichnisse gehören einem Benutzer und einer Gruppe Besitzer wird bei ls -l in der dritten.
Ein-/ Ausgabe in Java ein Überblick. © eigentlich ganz einfach ? Ein-/Ausgabe durch package java.io Ausgabe (auf Konsole) mit System.out.println()
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Kommunikation von Prozessen Signale und Pipes Alexander Sczyrba
ESP Tutorium Studienassistent: Ewald Moitzi Gruppe 1.
1 Shell Manuel Blechschmidt & Volker Grabsch CdE Sommerakademie 2006 Kirchheim.
Common Gateway Interface
Klausur „Diskrete Mathematik II“
Perl: pattern matching and regular expressions
Netzwerk - Programmierung
Betriebssysteme LB BB SS2017
Wiederholung TexPoint fonts used in EMF.
Arrays in C Ein Array ist eine Variable, die aus einer Anzahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
 Präsentation transkript:

Korpuslinguistik für und mit Computerlinguistik Seminar SS 2003 Sitzung 1: UNIX, Perl Gerold Schneider

Gerold Schneider: Korpuslinguistik für Computerlinguistik, I2 UNIX: Grundbefehle  ls (list): Verzeichnisinhalt  cd (change dir.)  pwd (present working dir.)  cp (copy)  mv (move)  rm (remove)  rmdir (rm dir)  mkdir (make dir)  pico, nano, emacs (ed.s)  chmod (change mod.)  cat (catalog)  head, tail  more, less  |, (pipe, in,out)  man (manual pages)

Gerold Schneider: Korpuslinguistik für Computerlinguistik, I3 UNIX: Linguists´ toolbox  grep, egrep ((extended) global regular expression)  tr (transform)  wc (word count)  sort  uniq  cut (cut columns)  paste (paste columns)

Gerold Schneider: Korpuslinguistik für Computerlinguistik, I4 Bsp. 1: Wortliste, Konkordanz  Lexikon eines Textes: Text in 1-Wort-pro-Zeile Format konvertieren, dann sortieren, Duplikate entfernen cat my.txt | tr -s " " "\n" |sort | uniq  Häufigkeit mitzählen cat my.txt | tr -s " " "\n" |sort | uniq -c  Preprocessing cat my.txt | tr -s " " "\n" | tr -s "[A-Z]" "[a-z]" | tr -d '[.,;:?\!"\(\)+-&=]' | sort | uniq -c  Konkordanz, Anzahl Types, Types per Token ?  Zipf interaktiv:

Gerold Schneider: Korpuslinguistik für Computerlinguistik, I5 Bsp. 2: N-Gramme  Preprocessing cat my.txt | tr -s " " "\n" | tr "[A-Z]" "[a-z]" | tr -d "[.,:;'?\!]" > my.tmp  Selber Text ohne erstes Wort cat my.tmp | tail +2 > my.tmp2  Bigramme paste -d" " my.tmp my.tmp2 > bigramme  Liste der häufigsten Bigramme ?  Welche Wörter sind am häufigsten vor und nach der Präposition „mit“ ?

Gerold Schneider: Korpuslinguistik für Computerlinguistik, I6 Bsp. 3: Kontexte  Kontexte aller Wörter in einer bestimmten Fenstergrösse F  Vorgehen: F-Gramme erstellen, analog zu Bigrammen Herausschneiden der Kontextworte cut -d" " -f 1,2 mygrams > kontexts cut -d" " -f 1,3 mygrams >> kontexts cut -d" " -f 1,4 mygrams >> kontexts... cut -d" " -f 1,F mygrams >> kontexts  Lokale, syntaktische und semantische Distanz

Gerold Schneider: Korpuslinguistik für Computerlinguistik, I7 Perl: Motivation  UNIX ist streng zeilenweise orientiert. Zeilensprünge können z.B. nicht mittels tr entfernt werden.  tr erlaubt nur buchstabenweises Ersetzen, und die Ausgabe darf nicht länger sein als die Eingabe. Dies verunmöglicht z.B. die Erstellung einer Buchstabenkonkordanz.  UNIX ist nicht flexibel genug. Die gesammelten Daten stehen z.B. nicht als Variablen/Listen/Hashes zur Verfügung  Mächtigere Werkzeug sind nötig: z.B. Perl

Gerold Schneider: Korpuslinguistik für Computerlinguistik, I8 Perl: Zeilenfilterskelett #!usr/bin/perl ## Pfad zum Perl-Interpreter while(<>) { ## zeilenweise Daten einlesen s/ersetzmich/durchdas/; print; ## Ausgabe des Ergebnisses } Aufruf aus der Kommandozeile cat myin.txt | perl myperlscript.pl > myout.txt

Gerold Schneider: Korpuslinguistik für Computerlinguistik, I9 Perl: Umordungsschema #!usr/bin/perl ## Pfad zum Perl-Interpreter $/="\n"; ## Datensatzbegrenzer while(<>) { ## Datensatzweise Daten einlesen ($f1,$f2,$flast) = split(/\,/,$_); ## Felder lesen $flast =~ s/\n//; ## chop Datensatzbegrenzer $swapwas = $f1.$flast.$f2; print "$swapwas\n"; ## Ausgabe des Ergebnisses } Beispiel: prolog(wort,NN,12).  prolog(wort,12,NN).

Gerold Schneider: Korpuslinguistik für Computerlinguistik, I10 Perl: G eordnetes Einsammeln mit Hashes: Wortliste #!/usr/bin/perl $/ = "";#Datensatzbegrenzer: Paragraph $* = 1;#mehrzeilige Matches while (<>){ s/-\n//g; tr/A-Z/a-z/; #Trennzeichen = split (/\W*\s+\W*/,$_); foreach $word { $wordcount{$word}++; } foreach $word (sort keys (%wordcount)) { printf "%20s,%d\n",$word,$wordcount{$word}; }

Gerold Schneider: Korpuslinguistik für Computerlinguistik, I11 Perl: G eordnetes Einsammeln mit Hashes: Bigramme while(<>) { = split(/\W*\s+\W*/,$_); for ($count=0;$count<=$#words-1;++$count) { $wordcount{$words[$count]. " ". $words[$count+1]}++; } foreach $wordpair (sort keys(%wordcount)) { printf "%20s,%d\n",$wordpair,$wordcount{$wordpair}; }

Gerold Schneider: Korpuslinguistik für Computerlinguistik, I12 Perl: G eordnetes Einsammeln mit Hashes: Endungshäufigkeiten (3B.) while(<>) { = split(/\s+/,$_); for ($count=0;$count<=$#words;++$count) = split(//,$words[$count]); # split w/o sep. if ($#chars > 1) { # at least 3 letters in this word $ending{$chars[$#chars-2]. " ". $chars[$#chars-1]. " ". $chars[$#chars]}++; } } } foreach $end (sort keys(%ending)) { printf "%20s,%d\n",$end,$ending{$end}; }

Gerold Schneider: Korpuslinguistik für Computerlinguistik, I13 Perl: Evaluation I  Gegeben sei die Ausgabenliste einer jeweils binären, maschinell getroffenen Entscheidung E=[0|1], aligniert mit der entsprechenden richtigen menschlichen Entscheidung („gold standard“) G =[0|1], also eine Matrix {E,M}. als 0 klassif.als 1 klassifiziert E=0E=1 G=0 {0,0} I{1,0}  II G=1 {0,1}  III{1,1} IV Accuracy= 2*Precision= 2*Recall=

Gerold Schneider: Korpuslinguistik für Computerlinguistik, I14 Perl: Evaluation II while(<>) { if /0\,0/{$caseI ++}; if /1\,0/{$caseII ++}; if /0\,1/{$caseIII++}; if /1\,1/{$caseIV ++}; } $accuracy =... $precision=... $recall =... Accuracy= Precision= Recall=

Gerold Schneider: Korpuslinguistik für Computerlinguistik, I15 Perl: Aufgaben (Microproject in Genf) I Schreibmaschine mit Stemming-Spellchecker fürs Französische  Schritt 1: Einlesen eines grossen Textcorpus, ermitteln der häufisten Endungen (siehe Endungsprogramm)  Schritt 2: Manuell morphologische Endungen ermitteln, Stemmingregeln schreiben, stemmen: $word =~s/s$//; $word =~s/ée$//; $word =~s/ées$//; $word =~s/es$//; $word =~s/er$//; $word =~s/ait$//; $word =~s/able$//; $word =~s/é$//; $word =~s/elles$//; $word =~s/elle$//; $word =~s/ant$//;

Gerold Schneider: Korpuslinguistik für Computerlinguistik, I16 Perl: Aufgaben (Microproject in Genf) II  Schritt 3: Gestemmten Korpus einlesen in Hash, Schreibmaschinenschleife durchaufen bis „STOP“ eingegeben wird. Dann den Brief ausgeben und die eingegebenen Worte stemmen, ausser sie sind im Ausnahmenlexikon (dans, sans,...) und mit dem gestemmten Korpus vergleichen. if ($table{$word}) { print "Le mot $word est accepté.\n"; } elsif (!$table{$word}) { print "Le mot $word n'est pas dans l'index, changez-le!\n";