Wie konfiguriere ich das nltk-Datenverzeichnis aus dem Code?

Antworten:

71

Ändern nltk.data.pathSie einfach Elemente von , es ist eine einfache Liste.

Tim McNamara
quelle
29
oder setzen Sie die Umgebungsvariable NLTK_DATA.
Schema
Mein nltk.data.path hat '/home/aankney/nltk_data'als erstes Element der Liste ABER ich bin auf einem Server und möchte nltk_datavon anderen Personen, die den Server verwenden, geteilt werden. Wie verhindere ich, dass nltk dies als einen der Downloadpfade verwendet?
Austin A
41

Aus dem Code http://www.nltk.org/_modules/nltk/data.html :

``nltk:path``: Specifies the file stored in the NLTK data
 package at *path*.  NLTK will search for these files in the
 directories specified by ``nltk.data.path``.

Dann innerhalb des Codes:

######################################################################
# Search Path
######################################################################

path = []
"""A list of directories where the NLTK data package might reside.
   These directories will be checked in order when looking for a
   resource in the data package.  Note that this allows users to
   substitute in their own versions of resources, if they have them
   (e.g., in their home directory under ~/nltk_data)."""

# User-specified locations:
path += [d for d in os.environ.get('NLTK_DATA', str('')).split(os.pathsep) if d]
if os.path.expanduser('~/') != '~/':
    path.append(os.path.expanduser(str('~/nltk_data')))

if sys.platform.startswith('win'):
    # Common locations on Windows:
    path += [
        str(r'C:\nltk_data'), str(r'D:\nltk_data'), str(r'E:\nltk_data'),
        os.path.join(sys.prefix, str('nltk_data')),
        os.path.join(sys.prefix, str('lib'), str('nltk_data')),
        os.path.join(os.environ.get(str('APPDATA'), str('C:\\')), str('nltk_data'))
    ]
else:
    # Common locations on UNIX & OS X:
    path += [
        str('/usr/share/nltk_data'),
        str('/usr/local/share/nltk_data'),
        str('/usr/lib/nltk_data'),
        str('/usr/local/lib/nltk_data')
    ]

Um den Pfad zu ändern, fügen Sie einfach die Liste der möglichen Pfade hinzu:

import nltk
nltk.data.path.append("/home/yourusername/whateverpath/")

Oder in Fenstern:

import nltk
nltk.data.path.append("C:\somewhere\farfar\away\path")
Alvas
quelle
Welches Verzeichnis würde diese Datei enthalten?
hlin117
Es ist im ursprünglichen Quellcode von NLTK. Gehen Sie in das Verzeichnis, in dem Sie den Quellcode speichern, und gehen Sie dann zunltk/nltk/data
alvas
werfen Sie einen Blick auf magically_find_nltk_data()von stackoverflow.com/questions/36382937/...
alvas
28

Ich benutze zum Beispiel Anhängen

nltk.data.path.append('/libs/nltk_data/')
bahlum
quelle
14

Anstatt nltk.data.path.append('your/path/to/nltk_data')jedem Skript etwas hinzuzufügen , akzeptiert NLTK die Umgebungsvariable NLTK_DATA. ( Code Link )

Öffnen Sie ~/.bashrc(oder ~/.profile) mit Texteditor (zB nano, vim, gedit), und fügen Sie folgende Zeile ein :

export NLTK_DATA="your/path/to/nltk_data"

Ausführen source, um Umgebungsvariable zu laden

source ~/.bashrc


Prüfung

Öffnen Sie Python und führen Sie die folgenden Zeilen aus

import nltk
nltk.data.path

Dort können Sie Ihren nltk-Datenpfad bereits sehen.

Referenz: Antwort von @ alvations auf nltk / nltk # 1997

fnjn
quelle
1

Für diejenigen, die uwsgi verwenden:

Ich hatte Probleme, weil ich wollte, dass eine uwsgi-App (die als ein anderer Benutzer als ich ausgeführt wird) Zugriff auf nltk-Daten hat, die ich zuvor heruntergeladen hatte. Was für mich funktioniert hat, war das Hinzufügen der folgenden Zeile zu myapp_uwsgi.ini:

env = NLTK_DATA=/home/myuser/nltk_data/

Dadurch wird die Umgebungsvariable festgelegt NLTK_DATA, wie von @schemacs vorgeschlagen.
Möglicherweise müssen Sie Ihren uwsgi-Prozess neu starten, nachdem Sie diese Änderung vorgenommen haben.

Danyamachine
quelle
0

Eine andere Lösung besteht darin, voranzukommen.

versuchen Sie, nltk nltk.download () zu importieren

Wenn das Fenster angezeigt wird, in dem Sie gefragt werden, ob Sie den Korpus herunterladen möchten, können Sie dort angeben, in welches Verzeichnis er heruntergeladen werden soll.

Steve
quelle
0

Verwenden Sie die obigen Ratschläge von fnjn zum Ausdrucken des Pfads:

print(nltk.data.path)

Ich habe die Pfadzeichenfolgen in diesem Format unter Windows gesehen:

C:\\Users\\my_user_name\\AppData\\Roaming\\SPB_Data

Also habe ich meinen Pfad vom Python-Schrägstrich '/' auf einen doppelten Backslash '\\' umgestellt, als ich path.append verwendet habe:

nltk.data.path.append("C:\\workspace\\my_project\\data\\nltk_books")

Die Ausnahme ging weg.

Odysseus Ithaka
quelle