1 / 34

Wortarten-Tagging für Nomen

Wortarten-Tagging für Nomen. Einleitung. Markus Gündert. Wortarten - Tagging. Inhalt der Präsentation. Einleitung: 1. Was versteht man unter Wortarten-Tagging ? Definition Beispiel 2. Motivation für Wortarten-Tagging Wofür dient Wortarten-Tagging? 3. Tags & Tagsets

enye
Download Presentation

Wortarten-Tagging für Nomen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Wortarten-Taggingfür Nomen Einleitung Markus Gündert

  2. Wortarten - Tagging Inhalt der Präsentation 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 Seite 2

  3. Wortarten - Tagging Inhalt der Präsentation 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 Seite 3

  4. 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

  5. 1. Was versteht man unter Wortarten-Tagging TokenPOS - TagLemma 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 3. Tagsets 3.4 Auszug aus dem STTS Seite 10

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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

  17. 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

  18. 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

  19. Wortarten-Taggingfür Nomen Projekt Modul 2 Markus Gündert

  20. Wortarten - Tagging Inhalt der Präsentation 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 Seite 20

  21. 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

  22. 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

  23. 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

  24. 6. Programmablauf & Algorithmus Aufbau eines Nomen-Lexikons (einmalig) wenn möglich, Lemma gleich mit ablegen tokenisierte Textdatei von Modul 1 einlesen Wörter, die nicht am Satzanfang stehen, auf Großschreibung untersuchen falls groß geschrieben, Lexikon um dieses Wort eventuell ergänzen Wörter am Satzanfang gegen Lexikon abgleichen oder alternativ auf Kontext und Endung überprüfen NN-Tags setzen 6.2 Übersicht über den Programmablauf Seite 24

  25. 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

  26. 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

  27. 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

  28. 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

  29. 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

  30. 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

  31. 7. Implementierung 7.7 Präsentation des Perl - Programms Seite 31

  32. 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

  33. 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

  34. 8. Evaluierung 8.2 Vergleich mit TreeTagger - Ergebnisse Seite 33

More Related