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?
``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:
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.
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.
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.
Antworten:
Ändern
nltk.data.path
Sie einfach Elemente von , es ist eine einfache Liste.quelle
'/home/aankney/nltk_data'
als erstes Element der Liste ABER ich bin auf einem Server und möchtenltk_data
von anderen Personen, die den Server verwenden, geteilt werden. Wie verhindere ich, dass nltk dies als einen der Downloadpfade verwendet?Aus dem Code http://www.nltk.org/_modules/nltk/data.html :
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")
quelle
nltk/nltk/data
magically_find_nltk_data()
von stackoverflow.com/questions/36382937/...Ich benutze zum Beispiel Anhängen
nltk.data.path.append('/libs/nltk_data/')
quelle
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 (zBnano
,vim
,gedit
), und fügen Sie folgende Zeile ein :export NLTK_DATA="your/path/to/nltk_data"
Ausführen
source
, um Umgebungsvariable zu ladenPrü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
quelle
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
: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.
quelle
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.
quelle
Verwenden Sie die obigen Ratschläge von fnjn zum Ausdrucken des Pfads:
Ich habe die Pfadzeichenfolgen in diesem Format unter Windows gesehen:
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.
quelle