2009-02-08 8 views

Antwort

26

Hier ist mein eigenes praktisches Beispiel für den Nutzen von jemand anderem diese Frage aufzublicken (den Beispieltext entschuldigen, es war das erste, was ich auf Wikipedia gefunden):

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() 

Ausgang:

[('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')] 
+5

Was macht das? Kannst du eine Beschreibung hinzufügen? und auch warum global verwenden, könnten Sie sie direkt direkt verwendet haben – avi

+1

@avi Es produziert Teil der Sprache Tags für die Wörter (scrollen Sie nach unten, um die vollständige Liste zu sehen). Bsp .: '('called', 'VBN')' sagt, dass 'called' ein' Partizip Verb 'ist. Sieht aus wie Global, so dass die Variablen im Rahmen der Funktion geändert werden konnten (damit sie nicht bei jedem Aufruf der Funktion übergeben werden mussten). – emh

+0

upvote 1 für Mr. Blobby – Aphire

13

Ich bin der Autor von streamhacker.com (und danke für die Erwähnung, ich bekomme eine Menge Klickverkehr von dieser speziellen Frage). Was genau versuchen Sie zu tun? NLTK hat eine Menge Werkzeuge für verschiedene Dinge, aber es fehlt etwas an klaren Informationen darüber, wofür die Tools verwendet werden und wie sie am besten zu verwenden sind. Es ist auch auf akademische Probleme ausgerichtet, und so kann es schwer sein, die pedagogical Beispiele zu praktischen Lösungen zu übersetzen.

16

NLP im Allgemeinen ist sehr nützlich, so dass Sie Ihre Suche auf die allgemeine Anwendung der Textanalyse erweitern können. Ich habe NLTK verwendet, um MOSS 2010 zu unterstützen, indem ich die Datentaxonomie durch das Extrahieren von Konzeptkarten erstellte. Es hat wirklich gut funktioniert. Es dauert nicht lange, bis die Dateien auf nützliche Weise zu clustern beginnen.

Oft zu verstehen, Text-Analytik müssen Sie in Tangenten zu denken, wie Sie gewohnt sind zu denken. Zum Beispiel ist Textanalyse für die Erkennung äußerst nützlich. Die meisten Menschen wissen jedoch nicht einmal, was der Unterschied zwischen Suchen und Entdecken ist. Wenn Sie sich mit diesen Themen beschäftigen, werden Sie wahrscheinlich Wege entdecken, NLTK zum Laufen zu bringen.

Betrachten Sie auch Ihre Weltansicht von Textdateien ohne NLTK. Sie haben eine Reihe von Zeichenfolgen zufälliger Länge, die durch Leerzeichen und Satzzeichen voneinander getrennt sind. Einige Interpunktionszeichen ändern ihre Verwendung, wie 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 an den 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. Bedeutung bezieht sich in diesem Fall auf die wesentlichen Beziehungen im Dokument.

Es ist eine gute Sache, über NLTK neugierig zu sein. Text Analytics wird in den nächsten Jahren stark anbrechen. Diejenigen, die es verstehen, werden besser dazu in der Lage sein, die neuen Möglichkeiten besser zu nutzen.

+0

Können Sie einen Link zu der MOSS 2010-Referenz veröffentlichen? – alvas

+0

Die beste Verbindung, die ich habe, ist zu einem Papier, das ich vor ein paar Jahren schrieb. Ich werde meine Webseite in diesem Jahr neu aufbauen, um mich auf meine Arbeit Data Mining Radioteleskope zu konzentrieren, aber für eine Weile sollte dieses Papier immer noch sein: http://www.nectarineimp.com/automated-folksonomy-whitepaper/ –

Verwandte Themen