Erstellen eines neuen Korpus mit NLTK

64

Ich vermutete, dass die Antwort auf meinen Titel oft darin besteht, die Dokumentationen zu lesen, aber ich habe das NLTK-Buch durchgelesen es gibt keine Antwort. Ich bin etwas neu bei Python.

Ich habe eine Menge .txt -Dateien und möchte die Korpusfunktionen verwenden können, die NLTK für den Korpus nltk_data bereitstellt.

Ich habe PlaintextCorpusReader ausprobiert, aber ich konnte nicht weiter kommen als:

%Vor%

Wie segmentiere ich die newcorpus Sätze mit punkt? Ich habe versucht, die Punkt-Funktionen zu verwenden, aber die Punkt-Funktionen konnten PlaintextCorpusReader class nicht lesen?

Können Sie mich auch dazu bringen, wie ich die segmentierten Daten in Textdateien schreiben kann?

Bearbeiten: Diese Frage hatte einmal ein Kopfgeld und es gibt jetzt ein zweites Kopfgeld. Siehe Text in der Kopfgeldbox.

    
alvas 09.02.2011, 23:19
quelle

3 Antworten

33

Ich denke, die PlaintextCorpusReader segmentiert die Eingabe bereits mit einem Punkt-Tokenizer, zumindest wenn Ihre Eingabesprache Englisch ist.

Konstruktor von PlainTextCorpusReader

%Vor%

Sie können dem Leser einen Wort- und Satz-Tokenizer übergeben, aber für letzteres ist der Standardwert bereits nltk.data.LazyLoader('tokenizers/punkt/english.pickle') .

Bei einer einzelnen Zeichenfolge wird ein Tokenizer wie folgt verwendet ( hier ) , siehe Punkt 5 für Punkt Tokenizer).

%Vor%     
Reiner Gerecke 10.02.2011, 00:42
quelle
46

Nach einigen Jahren, in denen wir herausgefunden haben, wie es funktioniert, ist hier das aktualisierte Tutorial von

Wie erstellt man einen NLTK-Korpus mit einem Verzeichnis von Textdateien?

Die Hauptidee besteht darin, den nltk.corpus.reader zu verwenden Paket. Falls Sie ein Verzeichnis von Textdateien in Englisch haben, verwenden Sie am besten PlaintextCorpusReader .

Wenn Sie ein Verzeichnis haben, das wie folgt aussieht:

%Vor%

Verwenden Sie einfach diese Codezeilen und Sie können ein Korpus erhalten:

%Vor%

HINWEIS: Das PlaintextCorpusReader verwendet die Standardwerte nltk.tokenize.sent_tokenize() und nltk.tokenize.word_tokenize() , um Ihre Texte in Sätze und Wörter aufzuteilen, und diese Funktionen werden für Englisch erstellt, möglicherweise NICHT funktioniert für alle Sprachen.

Hier ist der vollständige Code mit der Erstellung von Test-Textdateien und wie man einen Korpus mit NLTK erstellt und wie man auf verschiedenen Ebenen auf den Korpus zugreift:

%Vor%

Um schließlich ein Verzeichnis von Texten zu lesen und einen NLTK-Korpus in anderen Sprachen zu erstellen, müssen Sie zunächst sicherstellen, dass Sie eine pythonaufrufbare Wort-Tokenisierung und Satz-Tokenisierung haben Module, die String / Basestring-Eingaben verarbeiten und solche Ausgaben erzeugen:

%Vor%     
alvas 04.01.2014 14:29
quelle
9
%Vor%     
Krolique 25.02.2011 04:11
quelle

Tags und Links