Wortarten-Taggingfür Nomen
Markus Gündert
Einleitung
Wortarten - Tagging
Einleitung:
1. Was versteht man unter Wortarten-Tagging?
Definition
Beispiel
2. Motivation für Wortarten-Tagging Wofür dient Wortarten-Tagging?
3. Tags & Tagsets Tag – Begriffserklärung
TagSet – Begriffserklärung
STTS – Tagset
4. Lemmatisierung Begriffserklärung
Probleme und Lösungsideen
Inhalt der Präsentation
Seite 2
Wortarten - Tagging
Projekt Modul 2 : Nomen-Tagging: 5. Projektbeschreibung
Aufgabenstellung & Rahmenbedingungen
Input & gewünschter Output
6. Vorüberlegung & Programmablauf Vorüberlegung Nomenerkennung
Übersicht Programmablauf
7. Implementierung (Pseudocode) Aufbau des Lexikons
Einlesen der tokenisierten Datei
Nomenerkennung für Wörter, die NICHT am Satzanfang stehen
Nomenerkennung für Wörter, die am Satzanfang stehen
Tags setzen und in die Datei zurückschreiben
Präsentation des Perl-Programms
8. Evaluierung AWK-Skript
Vergleich mit Tree-Tagger Ergebnisse
Inhalt der Präsentation
Seite 3
1. Was versteht man unter Wortarten-Tagging
zu deutsch: Wortartenannotation
Anreicherung der Wortformen um grammatische Informationen
Genauer: Zuweisung von Wortarten-Kennungen (Tags) an Tokens im Text
Token: eine durch Leerzeichen abgegrenzte Buchstabenfolge
Wortarten: Adjektive, Adverben, Konjunktionen, Nomen, Partizipien, Präpositionen, Pronomen,Verben...
Ein System das eine solche Analyse und Generierung leistet heißt
PART-OF-SPREECH TAGGER (POS)
1.1 Definition:
Seite 4
1. Was versteht man unter Wortarten-Tagging
Token POS - Tag Lemma
Im APPRART im
Falle NN Fall|Falle
von APPR von
familiären ADJA familiär
Zwischenfällen NN Zwischenfall
oder KON oder
gesundheitlichen ADJA gesundheitlich
Problemen NN Problem
sind VAFIN sein
jedoch ADV jedoch
Ausnahmen NN Ausnahme
möglich ADJD möglich
1.2 Ein getaggter Beispielsatz:
Seite 5
2. Motivation für Wortarten-Tagging
Suche in Korpora
wenn nicht explizit vermerkt ist, welche Wortart ein Wort hat, kann man nur nach Buchstabenfolgen suchen
würde zu vielen ungewollten Suchtreffer führen
Beispiel: Suche von Eigennamen
„Der Mann heißt mit Nachnamen Herr Mann“
Maschinelle Übersetzung
Voraussetzung für das Parsing (Syntaxanalyse)
2.1 Wozu dient Wortarten-Tagging?
Seite 6
3. Tags & Tagsets
Tag = Kürzel zur Benennung der Wortart bzw. Unterwortart
bezieht sich immer auf genau ein Token
beim Tagging-Vorgang wird jedem Token ein Tag
zugeordnet
3.1 Tag - Beriffserklärung
Seite 7
3. Tagsets
Ein Tagset ist eine definierte Menge an Tags, die annotiert werden können
Anzahl der Tags schwankt je nach Sprache, Korpus undEntwicklungsstand zwischen 45 (Penn Treebank Tagset) und über 160 (C6 Tagset)
geringe Anzahl an Tags geringe Fehlerrate; lässt allerdings keine feine linguistischen Unterscheidungen zu
Große Anzahl an Tags Ambiguität und Fehlerrate steigt
kodieren außer Wortarteninformation noch semantische, syntaktische oder morphologische Information
3.2 Tagset - Begriffserklärung
Seite 8
3. Tagsets
STTS = Stuttgart-Tübingen-TagSet
Tagset für die deutsche Sprache
umfasst 54 Tags
jedes Tag gehört zu einer von elf Hauptwortarten (Nomen, Verben, Artikel, Adjektive usw.) oder ist ein spezielles Tag, z.B. für Satzzeichen
hierarchischer Aufbau: Sieben Hauptwortarten sind weiter unterteilt in Unterwortarten
Bsp. Nomen: Aufteilung in NN und NE
bis zu 3 Hierarchieebenen
3.3 STTS - Tagset
Seite 9
3. Tagsets
3.4 Auszug aus dem STTS
Seite 10
4. Lemmatisierung
Lemma = Grundform eines Wortes
Lemmatisierung: Reduktion auf die Grundform eines Wortes
Lemma von Nomen: Nominativ Singular
Beispiel: Autos Auto
Flugzeuge Flugzeug
4.1 Begriffserklärung
Seite 11
4. Lemmatisierung
Idee: Lemmatisierung durch Streichung der “en“-Endung
Beispiele:Felsen Fels
Situationen Situation
Techniken Technik
Aber:
Aufgaben Aufgab
Gruppen Grupp
Maßnahmen Maßnahm
4.2 Probleme und Lösungsideen
Seite 12
4. Lemmatisierung
Lemmatisierung durch Streichung der “en“-Endung
Zusatzbedingung: Wort endet auf “-ten“
Beispiele:Aktivitäten Aktivität
Piloten Pilot
Schriftarten Schriftart
Aber:
Experten Expert
Geschichten Geschicht
Raketen Raket
4.2 Probleme und Lösungsideen
Seite 13
4. Lemmatisierung
Lemmatisierung durch Streichung der “en“-Endung
Zusatzbedingung: Wort endet auf “-nten“
Beispiele:Agenten Agent
Präsidenten Präsident
Studenten Student
Aber:
Renten Rent
Komponenten Komponent
Konten Kont
4.2 Probleme und Lösungsideen
Seite 14
4. Lemmatisierung
Lemmatisierung durch Streichung der “en“-Endung
Zusatzbedingung: Wort endet auf “-eiten“
Beispiele:Arbeiten Arbeit
Fähigkeiten Fähigkeit
Zeiten Zeit
Aber:
Seiten Seit
4.2 Probleme und Lösungsideen
Seite 15
4. Lemmatisierung
Zusatzbedingung: Wort endet auf “-keiten“
Beispiele:
Möglichkeiten Möglichkeit
Schwierigkeiten Schwierigkeit
Tätigkeiten Tätigkeit
Gleiches gilt für Wörter, die auf “-heiten“ enden:
Einheiten Einheit
Gegebenheiten Gegebenheit
Wahrheiten Wahrheit
4.2 Probleme und Lösungsideen
Seite 16
4. Lemmatisierung
schwierig, allgemeine Lemmatisierungsregeln zu finden
für manche Nomen lassen sich dennoch Regeln definieren
Regel 1: Lösche die en-Endung raus, wenn Nomen auf –keiten,
–heiten oder –ungen endet
Beispiel:
Schwierigkeiten Schwierigkeit
Einheiten Einheit
Schwingungen Schwingung
4.2 Probleme und Lösungsideen
Seite 17
4. Lemmatisierung
Regel 2: Lösche die e-Endung raus, wenn Wort auf –teile endet
Beispiel:
Vorteile Vorteil
Anteile Anteil
Ersatzteile Ersatzteil
4.2 Probleme und Lösungsideen
Seite 18
Wortarten-Taggingfür Nomen
Markus Gündert
Projekt Modul 2
Wortarten - Tagging
Projekt Modul 2 : Nomen-Tagging: 5. Projektbeschreibung
Aufgabenstellung & Rahmenbedingungen
Input & gewünschter Output
6. Vorüberlegung & Programmablauf Vorüberlegung Nomenerkennung
Übersicht Programmablauf
7. Implementierung (Pseudocode) Aufbau des Lexikons
Einlesen der tokenisierten Datei
Nomenerkennung für Wörter, die NICHT am Satzanfang stehen
Nomenerkennung für Wörter, die am Satzanfang stehen
Tags setzen und in die Datei zurückschreiben
Präsentation des Perl-Programms
8. Evaluierung AWK-Skript
Vergleich mit Tree-Tagger Ergebnisse
Inhalt der Präsentation
Seite 20
5. Projektbeschreibung
Ziel:
Erstellung eines regel- und lexikonbasierten Wortarten-Taggers in Perl
Anforderungen an den Tagger:
automatische Erkennung und Lemmatisierung von Nomen
Tagset, der verwendet werden soll: STTS (Stuttgart-Tübingen TagSet)
Nomen werden als „NN“ (Normales Nomen) getagged (1 tab Abstand)
Eigennamen (NE) werden ebenfalls als „NN“ getagged
Evaluierung:mit Hilfe eines AWK-Skripts
Vergleich mit dem Ergebnis des TreeTaggers (AWK-Skript)
5.1 Aufgabenstellung & Rahmenbedingungen
Seite 21
5. Projektbeschreibung
Input: Output:
<s> <s>
Zeitungen Zeitungen NN Zeitung
informieren informieren
über über
aktuelle aktuelle
Geschehnisse Geschehnisse NN Geschehnis
in in
der der
Politik Poilitik NN
. .
</s> </s>
5.2 Input & gewünschter Output
Seite 22
6. Programmablauf & Algorithmus
Nomenerkennung anhand Großschreibung Problem: Satzanfang
Abhilfe: Wörter am Satzanfang gegen ein Nomen – Lexikon
abgleichen
Alternative Möglichkeiten, wenn Wort nicht im Lexikon vorkommt: Nomenerkennung anhand von Endungen:
-ung,-ungen, -keit, -keiten, -sel, -urm, ürme, io
Ausschließungsprinzip anhand von Kontext: 2 Nomen meistens nicht hintereinander am Satzanfang
Bsp: „Das Haus ist groß“
6.1 Vorüberlegung Nomenerkennung
Seite 23
6. Programmablauf & Algorithmus
1. Aufbau eines Nomen-Lexikons (einmalig) wenn möglich, Lemma gleich mit ablegen
2. tokenisierte Textdatei von Modul 1 einlesen
3. Wörter, die nicht am Satzanfang stehen, auf Großschreibung untersuchen falls groß geschrieben, Lexikon um dieses Wort eventuell ergänzen
4. Wörter am Satzanfang gegen Lexikon abgleichen oder alternativ auf Kontext und Endung überprüfen
5. NN-Tags setzen
6.2 Übersicht über den Programmablauf
Seite 24
7. Implementierung
Grundlage für das Lexikon: Textfiles mit bereits über 500 000
enhaltenen Nomen:
Vorverarbeitung nötig:
Leerzeichen
und Ziffern rauslöschen
7.1 Aufbau des Lexikons - Pseudocode
Seite 25
7. Implementierung
Pseudocode:
read (all nomen_textfiles) {
var Nomen = aktuelleZeile; //schreibt den aktuellen Zeileninhalt in die Variable
bereinige(Nomen); //Leerzeichen und Zahlen rauslöschen
(if Endung == -heiten or –keiten or –ungen or –teile {
lemma = lemmatisiere(Nomen); //Anwendung der Lemmatisierungsregeln
HashDBM.add(Nomen, lemma);
}
else
{
HashDBM.add(Nomen);
}
}
7.2 Aufbau des Lexikons und Lemmatisierung
Seite 26
7. Implementierung
Pseudocode:
read (tokenisierte_Datei.txt)
{
var wort = aktuelleZeile; //lies jede Zeile der Datei ein
if(/<s>| ‘ | “ /) { //falls neuen Satzanfang erreicht
merk_dir_pos(wort); //merk dir, welche Wörter am
} Satzanfang stehen
}
7.3 Einlesen der tokenisierten Datei
Seite 27
7. Implementierung
Pseudocode:
If (wort.position != satzanfang && wort.großgeschrieben == true)
{
istNomen[i] = true; //merke dir, dass dieses Wort ein Nomen ist
//falls gefundenes Nomen noch nicht vorhanden in der Hash-DBM
if(/not exists HashDBM(aktuellesWort)/)
{
lemma = lemmatisiere(aktuellesWort);
//ergänze HashDBM
HashDBM.add(aktuelles_Wort, lemma);
}
i++;
}
7.4 Nomenerkennung für Wörter, die NICHT am Satzanfang stehen
Seite 28
7. Implementierung
Pseudocode:
If (Wort.position == Satzanfang && nextWord is not Nomen) { //Kontextberücksichtigen
If (exists HashDBM{Wort} ) {
istNomen[i] = true; //merke dir, dass dieses Wort ein Nomen ist
}
else
//alternative Nomenerkennung anhand von Endungen
if (Wort.endung== /ung$|ungen$|keit$|keiten$|sel$|urm$|ürme$|io$/) {
istNomen[i] = true;
} else {
istNomen[i] = false;
}
}
7.5 Nomenerkennung für Wörter, die am Satzanfang stehen
Seite 29
7. Implementierung
Pseudocode:
For(i=0; i<wortAnzahl; i++) {
If (istNomen[i] == true)
{
write(Datei, wort +“\tab NN “ + “\tab“ + lemma);
}
else
{
write(Datei, wort);
}
}
7.6 Tags setzen und in Datei zurückschreiben
Seite 30
7. Implementierung
7.7 Präsentation des Perl - Programms
Seite 31
8. Evaluierung
Vergleich des Tagging-Ergebnisses mit dem des TreeTaggers
Awk-Skript:
// kopiert Tagging-Ergebnisse in eine gemeinsame Datei
awk “NR==FNR{a[FNR]=$1\"\t\"$2;next}
{print a[FNR] \"\t\" $2}" treetagger.txt myresult.txt > vergleich.txt
// vergleicht Tagging-Ergebnisse
awk “$2 ~ /NN/ {gesamt++} $2==$3 && $1!~/<s>|<\/\s>/ {korrekt++}
$2 ~ /NE/ {ne++} END{print \"Treetager hat \"gesamt\" Nomen erkannt\n\MyTagger hat davon \"korrekt\" Nomen korrekt erkannt\n\Erkennungsquote: \"korrekt*100/gesamt\"%\n\"ne\" NE wurden der Einfachheitshalber als NN getagged\"}" vergleich.txt
8.1 AWK-Skript
Seite 32
8. Evaluierung
Tokenisierte Beispiel-Textdatei mit 1420 Tokens “beispiel.txt”
TreeTagger erkannte darunter 296 Nomen
Mein Tagger erkannte davon 291 Nomen korrekt
Erkennungsrate: 98,31%
54 NE wurden einfachheitshalber als NN getagged
8.2 Vergleich mit TreeTagger - Ergebnisse
Seite 33
8. Evaluierung
8.2 Vergleich mit TreeTagger - Ergebnisse
Seite 33
Top Related