2016-11-12 4 views
0

Ich benutze NLTK mit Python 3. Ich möchte eine benutzerdefinierte Beize aus einer Datei mit dem Namen der Datei wissen.Laden Sie lokale Ressourcen mit NLTK

Im Moment habe ich die Gurke in einem Verzeichnis wie:

/path/to/project/nltk/tokenizers/punkt/english.pickle 

Ich möchte dies laden und verwenden Sie es wie so:

import nltk 
sent_tokenizer = nltk.data.load('file:/path/to/project/nltk/tokenizers/punkt/english.pickle') 
tokens = sent_tokenizer('A really big hunk of text.') 

Allerdings scheint es, dass NLTK folgert, dass ich don Habe noch keine Python 3 Version der Ressource und füge in PY3 zu meinem gewünschten Pfad hinzu:

LookupError: 
********************************************************************** 
    Resource '/path/to/project/nltk/tokenizers/punkt/PY3/english.pickle 
    ' not found. Please use the NLTK Downloader to 
    obtain the resource: >>> nltk.download() 
    Searched in: 
    - '' 
********************************************************************** 

Ich möchte in der Lage sein, den echten Pfad zu der Datei zu verwenden, anstatt den Ordner PY3 zu belassen und zu erwarten, dass NLTK ihn einfügt. Gibt es eine Möglichkeit, die Ressource direkt zu importieren, ohne dass NLTK den Pfad ändert?

Danke! J

Antwort

1

Da sie Ihre Ressourcen sind, laden Sie sie, ohne die data.load API von nltk zu durchlaufen. Eingelegte Ressourcen können einfach unpickled werden:

with open("/path/to/english.pickle", "rb") as resource: 
    sent_tokenizer = pickle.load(resource) 
Verwandte Themen