34
Wortarten-Tagging für Nomen Markus Gündert Einleitun g

Wortarten-Tagging für Nomen Markus Gündert Einleitung

Embed Size (px)

Citation preview

Page 1: Wortarten-Tagging für Nomen Markus Gündert Einleitung

Wortarten-Taggingfür Nomen

Markus Gündert

Einleitung

Page 2: Wortarten-Tagging fü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

Page 3: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 4: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 5: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 6: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 7: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 8: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 9: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 10: Wortarten-Tagging für Nomen Markus Gündert Einleitung

3. Tagsets

3.4 Auszug aus dem STTS

Seite 10

Page 11: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 12: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 13: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 14: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 15: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 16: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 17: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 18: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 19: Wortarten-Tagging für Nomen Markus Gündert Einleitung

Wortarten-Taggingfür Nomen

Markus Gündert

Projekt Modul 2

Page 20: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 21: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 22: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 23: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 24: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 25: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 26: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 27: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 28: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 29: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 30: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 31: Wortarten-Tagging für Nomen Markus Gündert Einleitung

7. Implementierung

7.7 Präsentation des Perl - Programms

Seite 31

Page 32: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 33: Wortarten-Tagging für Nomen Markus Gündert Einleitung

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

Page 34: Wortarten-Tagging für Nomen Markus Gündert Einleitung

8. Evaluierung

8.2 Vergleich mit TreeTagger - Ergebnisse

Seite 33