Top Banner
Linux I II III Res WN/TT NLTK XML Weka E NLTK 6 NLTK Ressourcen-Vorkurs
23

Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Dec 02, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

NLTK

6 NLTK

Ressourcen-Vorkurs

Page 2: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Plan

1 Einfuhrung

1 Wer, Wie, Was ist NLTK?2 IDLE3 Was bietet NLTK?4 Wo finde ich Hilfe?5 Wie kann ich beitragen?6 FAQ

2 Struktur und Inhalt

1 Ubersicht uber die Module2 Bsp. 1: Satzgenerierung mit Word-Predictor3 Bsp. 2: Part-of-Speech-Tags

3 Ubungen

Ressourcen-Vorkurs

Page 3: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Einfuhrung - Wer, Wie, Was? I

Zusammenstellung von Python-Modulen fur NLP-Forschungund -Entwicklung

Code fur Vielzahl von Aufgaben aus der Sprachverarbeitung

40 bekannte Korpora

ausfuhrliche Dokumentation inkl. Online-Buch

Ressourcen-Vorkurs

Page 4: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Einfuhrung - Wer, Wie, Was? II

Projekt-Administratoren: Steven Bird (University ofMelbourne), Edward Loper (University of Pennsylvania), EwanKlein (University of Edinburgh)

viele weitere Entwickler

Beitrage von Studenten & Forschern aus aller Welt

Ressourcen-Vorkurs

Page 5: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Einfuhrung - Wer, Wie, Was? III

Einbindung in Python-Programme:

>>> text = ’’’NLTK , the Natural Language Toolkit , is a suite of program

... modules , data sets and tutorials supporting research and teaching in

... computational linguistics and natural language processing.’’’

>>> import nltk

>>> nltk.LineTokenizer (). tokenize(text)

[’NLTK , the Natural Language Toolkit , is a suite of program ’, ’modules ,

data sets and tutorials supporting research and teaching in’, ’computational

linguistics and natural language processing.’]

schneller: from ... import ... - Konstrukt

Ressourcen-Vorkurs

Page 6: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Einfuhrung - IDLE

IDLE ist das Integrated DeveLopment Environment von Python

Wird mit Python mitgeliefert

Aufruf mit $ idle

Standard-Fenster beim Offnen: Interpreter

Bietet außerdem: File Editor, Class Browser etc.

Function/Method Call Tips, Scroll-Down-Menu fur Methoden

Ressourcen-Vorkurs

Page 7: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Einfuhrung - Was bietet NLTK?

Infrastruktur als Grundlage fur NLP-Programme in Python:

1 Grundlegende Klassen zur Reprasentation NLP-relevanterDaten

2 Standard-Schnittstellen fur ubliche Aufgaben, z.B.Tokenisierung, Tagging, Parsing

3 Demos, Z.B. Parser, Chunker, Chatbots4 Ausfuhrliche Dokumentation, Tutorien, Referenzen

Ressourcen-Vorkurs

Page 8: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Einfuhrung - Was bietet NLTK?

Online-Buch:

1 Grundlagen: Textverarbeitung, Tokenization, Tagging,Lexikons, Language Engineering, Text Classification

2 Parsing: Phrase Structure, Trees, Grammars, Chunking, Parsing3 Fortgeschrittene Themen: Feature-Based Grammar,

Unification, Semantics, Linguistic Data Management

Ressourcen-Vorkurs

Page 9: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Einfuhrung - Wo finde ich Hilfe?

Online-Hilfe-Funktion:>>> help(nltk.stem.WordnetStemmer)

class WordnetStemmer(nltk.stem.api.StemmerI)

| A stemmer that uses Wordnet ‘s built -in morphy function.

|

| Method resolution order:

| WordnetStemmer

| nltk.stem.api.StemmerI

...

Doc-Strings:

>>> print nltk.tag.BrillTagger.__doc__

Brill’s transformational rule -based tagger. Brill taggers use an

X{initial tagger} (such as L{tag.DefaultTagger }) to assign an intial

tag sequence to a text; and then apply an ordered list of ...

Ressourcen-Vorkurs

Page 10: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Einfuhrung - Wo finde ich Hilfe?

Mailing-Listen: nltk-announce, nltk-devel, nltk-users

NLTK-Homepage: http://nltk.org, inkl. Tutorien,Code-Beispielen, Chatroom

NLTK-Dokumentation:http://nltk.org/index.php/Documentation, inkl. Buch,API-Dokumentation

Ressourcen-Vorkurs

Page 11: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Einfuhrung - Wie kann ich beitragen?

Open-Source-Gemeinschaftsprojekt

Email an User Group, Bugreports, Feature vorschlagen

Patch einreichen, Rezepte fur’s Kochbuch, Doku-Ubersetzung

Liste mit Projektvorschlagen unterhttp://nltk.org/index.php/Projects, z.B.:

Develop a morphological analyser for a language of your choiceDevelop a coreference resolution systemDevelop a program for unsupervised learning of phonologicalrules, using the method described by Goldwater and JohnsonImplement a dependency parser

Ressourcen-Vorkurs

Page 12: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Einfuhrung - FAQ

Welche Lizenz benutzt NLTK? - GNU Public License

Wie wird NLTK-Entwicklung unterstutzt? - GelegentlicheFunds fur Studenten, die an einem bestimmten Projektarbeiten oder ein Praktikum suchen

Wissenschaftliche Artikel uber NLTK? - siehehttp://scholar.google.com.au/scholar?q=NLTK

Was ist der Unterschied zw. NLTK und NLTK-Lite? -NLTK-Lite ist einfacher, schneller und stellt wenigerAnspruche an der Programmierer. Wo moglich, werdenStandard-Python-Objekte statt angepasster NLP-Versionengenutzt. Wenn fertig, wird es die gleiche Funktionalitat wieNLTK liefern.

Ressourcen-Vorkurs

Page 13: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Struktur und Inhalt - Ubersicht Module

NLTK-Api unter: http://nltk.org/doc/api/

Dokumentation aller Module, Klassen, Funktionen, Variablen

Ressourcen-Vorkurs

Page 14: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Struktur und Inhalt - Ubersicht ModuleModul cfg

Klassen zur Reprasentation kontextfreier Grammatiken,Regeln, Nonterminals, probabilistischer CFGs

Funktionen zum Prufen der Abdeckung, Induzierenprobabilistischer CFGs, Parsen von Grammatiken ...

cfg demo(), pcfg demo(), demo()

Ressourcen-Vorkurs

Page 15: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Struktur und Inhalt - Ubersicht ModuleModul classify

Klassifikation von: Wortern, Satzen, Dokumenten, etc.anhand von Merkmalen (”Feature-Sets”)

>>> # Define a feature extraction function.

>>> def document_features(document ):

... return dict ([(’contains -word(%s)’%w,True) for w in document ])

>>> # Classify each Gutenberg document.

>>> for file in nltk.corpus.gutenberg.files ():

... doc = nltk.corpus.gutenberg.tokenized(file)

... print doc_name , nltk.NaiveBayesClassifier.classify(

document_features(doc))

Trainieren & Anwenden versch. Klassifizierer: DecisionTree,NaiveBayes, Weka, Maxent ...

Ressourcen-Vorkurs

Page 16: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Struktur und Inhalt - Ubersicht ModuleModul corpus

Korpus-Readers fur 40 NLTK-interne & -externe Korpora

Bsp. fur Funktionen einzelner Reader: word(), sents(),paras(), tagged words(), chunked sents(),parsed paras(), raw()

>>> from nltk.corpus import brown

>>> print brown.words ()

[’The’, ’Fulton ’, ’County ’, ’Grand’, ’Jury’, ’said’, ...]

Paket nltk.corpus.reader stellt versch. Reader zurVerfugung (TaggedCorpusReader,PlaintextCorpusReader) → konnen auch auf fremdeKorpora ubertragen werden

Ressourcen-Vorkurs

Page 17: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Struktur und Inhalt - Ubersicht ModuleModul tag

Klassen fur verschiedene Taggermodelle: AffixTagger,BrillTagger, NGramTagger, HMM-Tagger (noch nicht in v0.9)

Tagger sind untereinander kombinierbar: Findet der ersteTagger kein Tag, kommt der backoff-Tagger ins Spiel usw.

>>> from nltk.tag import DefaultTagger , UnigramTagger

>>> from nltk.corpus import brown

>>> tagger = UnigramTagger(brown.tagged_sents (), backoff=DefaultTagger(‘NN’))

>>> tagger.tag([’The’, ’dog’, ’chewed ’, ’on’, ’a’, ’bone’, ’.’])

[(’The’, ’AT’), (’dog’, ’NN’), (’chewed ’, ’VBD’), (’on’, ’IN’), \\

(’a’, ’AT’), (’bone’, ’NN’), (’.’, ’.’)]

Zur Umwandlung von ’the/DT dog/N’ nach "[(’the’,’DT’), (’dog’, ’N’)]": str2tuple() und tuple2str()

Ressourcen-Vorkurs

Page 18: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Struktur und Inhalt - Ubersicht ModuleModul probability

Klassen zur Berechnung von Statistiken uber Ergebnisse vonExperimenten, z.B.

FreqDist: HaufigskeitsverteilungConditionalFreqDist - z.B. Wie oft wird ein Wort mit welchemTag versehen?GoodTuringProbDist: Good-Turing-Schatzung einer Verteilung

>>> fdist = FreqDist ()

>>> for word in tokenize.whitespace(sent):

... fdist.inc(word.lower ())

Ressourcen-Vorkurs

Page 19: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Struktur und Inhalt - Ubersicht ModuleAndere Module

chunk

cluster

containers

data

draw

featstruct

inference

sem

stem

tokenize

wordnet

Ressourcen-Vorkurs

Page 20: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Bsp. 1: Satzgenerierung mit Word-Predictor

(Beispiele entnommen aus Madnani (2007):http://www.umiacs.umd.edu/ nmadnani/pdf/crossroads.pdf)

>>> from nltk.corpus import gutenberg

>>> from nltk.probability import ConditionalFreqDist

>>> from random import choice

# Create distribution object

>>> cfd = ConditionalFreqDist ()

# For each token , count current word given previous word

>>> prev_word = None

>>> for word in gutenberg.words(’austen -persuasion ’):

. . . cfd[prev_word ].inc(word)

. . . prev_word = word

Ressourcen-Vorkurs

Page 21: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Bsp. 1: Satzgenerierung mit Word-Predictor

# Start predicting at the given word , say ’therefore ’

>>> word = ’therefore ’

>>> i = 1

# Find all words that can possibly follow the current word

# and choose one at random

>>> while i < 20:

. . . print word ,

. . . lwords = cfd[word]. samples ()

. . . follower = choice(lwords)

. . . word = follower

. . . i += 1

. . .

therefore it known of women ought . Leave me so well

placed in five altogether well placed themselves delighted

Ressourcen-Vorkurs

Page 22: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Bsp. 2: Part-of-Speech-Tags

>>> from nltk.corpus import brown

>>> from nltk.probability import FreqDist , ConditionalFreqDist

>>> fd = FreqDist ()

>>> cfd = ConditionalFreqDist ()

# for each tagged sentence , get the (token , tag) pair and update

# both count(tag) and count(tag given token)

>>> for text in brown.items:

. . . for sentence in brown.tagged_sents(text):

. . . for (token , tag) in sentence:

. . . fd.inc(tag)

. . . cfd[token].inc(tag)

>>> fd.max() # The most frequent tag is ...

’NN’

Ressourcen-Vorkurs

Page 23: Linux IIIIIIResWN/TTNLTKXMLWekaE NLTK€¦ · Modul cfg Klassen zur Repr asentation kontextfreier Grammatiken, Regeln, Nonterminals, probabilistischer CFGs Funktionen zum Pr ufen

Linux I II III Res WN/TT NLTK XML Weka E

Bsp. 2: Part-of-Speech-Tags

>>> wordbins = [] # Initialize a list to hold (numtags ,word) tuple

# append each (n(unique tags for token),token) tuple to list

>>> for token in cfd.conditions ():

. . . wordbins.append ((cfd[token].B(), token))

. . .

# sort tuples by number of unique tags (highest first)

>>> wordbins.sort(reverse=True)

>>> print wordbins [0] # token with max. no. of tags is ...

(12, ’that’)

Ressourcen-Vorkurs