Praktische Beispiele für die Verwendung von NLTK [geschlossen]

78

Ich spiele mit dem Natural Language Toolkit (NLTK) herum .

Die Dokumentation ( Buch und HOWTO ) ist ziemlich umfangreich und die Beispiele sind manchmal etwas fortgeschritten.

Gibt es gute, aber grundlegende Beispiele für Anwendungen / Anwendungen von NLTK? Ich denke an Dinge wie die NTLK-Artikel im Stream Hacker- Blog.

Matte
quelle

Antworten:

28

Hier ist mein eigenes praktisches Beispiel für alle, die diese Frage nachschlagen (entschuldigen Sie den Beispieltext, es war das erste, was ich auf Wikipedia gefunden habe ):

import nltk
import pprint

tokenizer = None
tagger = None

def init_nltk():
    global tokenizer
    global tagger
    tokenizer = nltk.tokenize.RegexpTokenizer(r'\w+|[^\w\s]+')
    tagger = nltk.UnigramTagger(nltk.corpus.brown.tagged_sents())

def tag(text):
    global tokenizer
    global tagger
    if not tokenizer:
        init_nltk()
    tokenized = tokenizer.tokenize(text)
    tagged = tagger.tag(tokenized)
    tagged.sort(lambda x,y:cmp(x[1],y[1]))
    return tagged

def main():
    text = """Mr Blobby is a fictional character who featured on Noel
    Edmonds' Saturday night entertainment show Noel's House Party,
    which was often a ratings winner in the 1990s. Mr Blobby also
    appeared on the Jamie Rose show of 1997. He was designed as an
    outrageously over the top parody of a one-dimensional, mute novelty
    character, which ironically made him distinctive, absurd and popular.
    He was a large pink humanoid, covered with yellow spots, sporting a
    permanent toothy grin and jiggling eyes. He communicated by saying
    the word "blobby" in an electronically-altered voice, expressing
    his moods through tone of voice and repetition.

    There was a Mrs. Blobby, seen briefly in the video, and sold as a
    doll.

    However Mr Blobby actually started out as part of the 'Gotcha'
    feature during the show's second series (originally called 'Gotcha
    Oscars' until the threat of legal action from the Academy of Motion
    Picture Arts and Sciences[citation needed]), in which celebrities
    were caught out in a Candid Camera style prank. Celebrities such as
    dancer Wayne Sleep and rugby union player Will Carling would be
    enticed to take part in a fictitious children's programme based around
    their profession. Mr Blobby would clumsily take part in the activity,
    knocking over the set, causing mayhem and saying "blobby blobby
    blobby", until finally when the prank was revealed, the Blobby
    costume would be opened - revealing Noel inside. This was all the more
    surprising for the "victim" as during rehearsals Blobby would be
    played by an actor wearing only the arms and legs of the costume and
    speaking in a normal manner.[citation needed]"""
    tagged = tag(text)    
    l = list(set(tagged))
    l.sort(lambda x,y:cmp(x[1],y[1]))
    pprint.pprint(l)

if __name__ == '__main__':
    main()

Ausgabe:

[('rugby', None),
 ('Oscars', None),
 ('1990s', None),
 ('",', None),
 ('Candid', None),
 ('"', None),
 ('blobby', None),
 ('Edmonds', None),
 ('Mr', None),
 ('outrageously', None),
 ('.[', None),
 ('toothy', None),
 ('Celebrities', None),
 ('Gotcha', None),
 (']),', None),
 ('Jamie', None),
 ('humanoid', None),
 ('Blobby', None),
 ('Carling', None),
 ('enticed', None),
 ('programme', None),
 ('1997', None),
 ('s', None),
 ("'", "'"),
 ('[', '('),
 ('(', '('),
 (']', ')'),
 (',', ','),
 ('.', '.'),
 ('all', 'ABN'),
 ('the', 'AT'),
 ('an', 'AT'),
 ('a', 'AT'),
 ('be', 'BE'),
 ('were', 'BED'),
 ('was', 'BEDZ'),
 ('is', 'BEZ'),
 ('and', 'CC'),
 ('one', 'CD'),
 ('until', 'CS'),
 ('as', 'CS'),
 ('This', 'DT'),
 ('There', 'EX'),
 ('of', 'IN'),
 ('inside', 'IN'),
 ('from', 'IN'),
 ('around', 'IN'),
 ('with', 'IN'),
 ('through', 'IN'),
 ('-', 'IN'),
 ('on', 'IN'),
 ('in', 'IN'),
 ('by', 'IN'),
 ('during', 'IN'),
 ('over', 'IN'),
 ('for', 'IN'),
 ('distinctive', 'JJ'),
 ('permanent', 'JJ'),
 ('mute', 'JJ'),
 ('popular', 'JJ'),
 ('such', 'JJ'),
 ('fictional', 'JJ'),
 ('yellow', 'JJ'),
 ('pink', 'JJ'),
 ('fictitious', 'JJ'),
 ('normal', 'JJ'),
 ('dimensional', 'JJ'),
 ('legal', 'JJ'),
 ('large', 'JJ'),
 ('surprising', 'JJ'),
 ('absurd', 'JJ'),
 ('Will', 'MD'),
 ('would', 'MD'),
 ('style', 'NN'),
 ('threat', 'NN'),
 ('novelty', 'NN'),
 ('union', 'NN'),
 ('prank', 'NN'),
 ('winner', 'NN'),
 ('parody', 'NN'),
 ('player', 'NN'),
 ('actor', 'NN'),
 ('character', 'NN'),
 ('victim', 'NN'),
 ('costume', 'NN'),
 ('action', 'NN'),
 ('activity', 'NN'),
 ('dancer', 'NN'),
 ('grin', 'NN'),
 ('doll', 'NN'),
 ('top', 'NN'),
 ('mayhem', 'NN'),
 ('citation', 'NN'),
 ('part', 'NN'),
 ('repetition', 'NN'),
 ('manner', 'NN'),
 ('tone', 'NN'),
 ('Picture', 'NN'),
 ('entertainment', 'NN'),
 ('night', 'NN'),
 ('series', 'NN'),
 ('voice', 'NN'),
 ('Mrs', 'NN'),
 ('video', 'NN'),
 ('Motion', 'NN'),
 ('profession', 'NN'),
 ('feature', 'NN'),
 ('word', 'NN'),
 ('Academy', 'NN-TL'),
 ('Camera', 'NN-TL'),
 ('Party', 'NN-TL'),
 ('House', 'NN-TL'),
 ('eyes', 'NNS'),
 ('spots', 'NNS'),
 ('rehearsals', 'NNS'),
 ('ratings', 'NNS'),
 ('arms', 'NNS'),
 ('celebrities', 'NNS'),
 ('children', 'NNS'),
 ('moods', 'NNS'),
 ('legs', 'NNS'),
 ('Sciences', 'NNS-TL'),
 ('Arts', 'NNS-TL'),
 ('Wayne', 'NP'),
 ('Rose', 'NP'),
 ('Noel', 'NP'),
 ('Saturday', 'NR'),
 ('second', 'OD'),
 ('his', 'PP$'),
 ('their', 'PP$'),
 ('him', 'PPO'),
 ('He', 'PPS'),
 ('more', 'QL'),
 ('However', 'RB'),
 ('actually', 'RB'),
 ('also', 'RB'),
 ('clumsily', 'RB'),
 ('originally', 'RB'),
 ('only', 'RB'),
 ('often', 'RB'),
 ('ironically', 'RB'),
 ('briefly', 'RB'),
 ('finally', 'RB'),
 ('electronically', 'RB-HL'),
 ('out', 'RP'),
 ('to', 'TO'),
 ('show', 'VB'),
 ('Sleep', 'VB'),
 ('take', 'VB'),
 ('opened', 'VBD'),
 ('played', 'VBD'),
 ('caught', 'VBD'),
 ('appeared', 'VBD'),
 ('revealed', 'VBD'),
 ('started', 'VBD'),
 ('saying', 'VBG'),
 ('causing', 'VBG'),
 ('expressing', 'VBG'),
 ('knocking', 'VBG'),
 ('wearing', 'VBG'),
 ('speaking', 'VBG'),
 ('sporting', 'VBG'),
 ('revealing', 'VBG'),
 ('jiggling', 'VBG'),
 ('sold', 'VBN'),
 ('called', 'VBN'),
 ('made', 'VBN'),
 ('altered', 'VBN'),
 ('based', 'VBN'),
 ('designed', 'VBN'),
 ('covered', 'VBN'),
 ('communicated', 'VBN'),
 ('needed', 'VBN'),
 ('seen', 'VBN'),
 ('set', 'VBN'),
 ('featured', 'VBN'),
 ('which', 'WDT'),
 ('who', 'WPS'),
 ('when', 'WRB')]
Matte
quelle
7
Was macht das? Können Sie eine Beschreibung hinzufügen? und auch warum global verwenden, könnten Sie sie direkt richtig verwendet haben
avi
1
@avi Es werden Teil der Sprache-Tags für die Wörter erstellt (scrollen Sie nach unten, um die vollständige Liste anzuzeigen). Bsp.: ('called', 'VBN')Sagt, das calledist ein past participle verb. Es sieht so aus, als ob Global verwendet wurde, damit die Variablen im Rahmen der Funktion geändert werden konnten (damit sie nicht bei jedem Aufruf der Funktion übergeben werden mussten).
emh
upvote 1 für Mr. Blobby
Aphire
18

NLP ist im Allgemeinen sehr nützlich, daher möchten Sie Ihre Suche möglicherweise auf die allgemeine Anwendung der Textanalyse ausweiten. Ich habe NLTK verwendet, um MOSS 2010 durch Generieren von Dateitaxonomie durch Extrahieren von Konzeptkarten zu unterstützen. Es hat wirklich gut funktioniert. Es dauert nicht lange, bis Dateien auf nützliche Weise geclustert werden.

Um die Textanalyse zu verstehen, muss man oft tangential an die Art und Weise denken, wie man es gewohnt ist. Beispielsweise ist die Textanalyse für die Ermittlung äußerst nützlich. Die meisten Menschen wissen jedoch nicht einmal, was der Unterschied zwischen Suche und Entdeckung ist. Wenn Sie sich über diese Themen informieren, werden Sie wahrscheinlich Möglichkeiten "entdecken", wie Sie NLTK zum Laufen bringen möchten.

Berücksichtigen Sie auch Ihr Weltbild von Textdateien ohne NLTK. Sie haben eine Reihe von Zeichenfolgen mit zufälliger Länge, die durch Leerzeichen und Interpunktion getrennt sind. Einige der Satzzeichen ändern ihre Verwendung, z. B. der Punkt (der auch ein Dezimalpunkt und ein Postfix-Marker für eine Abkürzung ist). Mit NLTK erhalten Sie Wörter und mehr bis zu dem Punkt, an dem Sie Wortarten erhalten. Jetzt haben Sie den Inhalt im Griff. Verwenden Sie NLTK, um die Konzepte und Aktionen im Dokument zu ermitteln. Verwenden Sie NLTK, um die "Bedeutung" des Dokuments zu ermitteln. Die Bedeutung bezieht sich in diesem Fall auf die wesentlichen Beziehungen im Dokument.

Es ist gut, neugierig auf NLTK zu sein. Text Analytics wird in den nächsten Jahren in großem Umfang ausbrechen. Wer es versteht, ist besser geeignet, die neuen Möglichkeiten besser zu nutzen.

Pete Mancini
quelle
Können Sie einen Link zur MOSS 2010-Referenz veröffentlichen?
Alvas
Der beste Link, den ich habe, ist zu einem Artikel, den ich vor einigen Jahren geschrieben habe. Ich werde meine Webseite in diesem Jahr neu erstellen, um mich auf meine Work Data Mining-Radioteleskope zu konzentrieren, aber für eine Weile sollte dieses Papier noch verfügbar sein: nectarineimp.com/automated-folksonomy-whitepaper
Pete Mancini
14

Ich bin der Autor von streamhacker.com (und danke für die Erwähnung, ich bekomme eine ganze Menge Klick-Traffic von dieser speziellen Frage). Was genau versuchst du zu tun? NLTK verfügt über viele Tools, mit denen Sie verschiedene Aufgaben ausführen können, es fehlen jedoch einige klare Informationen darüber, wofür die Tools verwendet werden sollen und wie sie am besten verwendet werden können. Es ist auch auf akademische Probleme ausgerichtet, und daher kann es schwierig sein, die pädagogischen Beispiele in praktische Lösungen umzusetzen.

Jakob
quelle