Wie konfiguriere ich das nltk-Datenverzeichnis aus dem Code?
Wie konfiguriere ich das nltk-Datenverzeichnis aus dem Code?
Antworten:
Ändern nltk.data.path
Sie einfach Elemente von , es ist eine einfache Liste.
'/home/aankney/nltk_data'
als erstes Element der Liste ABER ich bin auf einem Server und möchte nltk_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 :
``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")
nltk/nltk/data
magically_find_nltk_data()
von stackoverflow.com/questions/36382937/...
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
Ö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
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.
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.