Mi nltk.data.path tiene '/home/aankney/nltk_data'como primer elemento de la lista, PERO estoy en un servidor y quiero nltk_dataque otras personas lo compartan. ¿Cómo evito que nltk use esto como una de las rutas de descarga?
``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``.
Luego, dentro del código:
####################################################################### 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')
]
Para modificar la ruta, simplemente agregue a la lista de posibles rutas:
Tenía problemas porque quería que una aplicación uwsgi (que se ejecutaba como un usuario diferente al mío) tuviera acceso a los datos de nltk que había descargado previamente. Lo que funcionó para mí fue agregar la siguiente línea a myapp_uwsgi.ini:
env = NLTK_DATA=/home/myuser/nltk_data/
Esto establece la variable de entorno NLTK_DATA, como lo sugiere @schemacs.
Es posible que deba reiniciar su proceso de uwsgi después de realizar este cambio.
Respuestas:
Simplemente cambie los elementos de
nltk.data.path
, es una lista simple.fuente
'/home/aankney/nltk_data'
como primer elemento de la lista, PERO estoy en un servidor y quieronltk_data
que otras personas lo compartan. ¿Cómo evito que nltk use esto como una de las rutas de descarga?Desde el código, http://www.nltk.org/_modules/nltk/data.html :
Luego, dentro del código:
###################################################################### # 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') ]
Para modificar la ruta, simplemente agregue a la lista de posibles rutas:
import nltk nltk.data.path.append("/home/yourusername/whateverpath/")
O en windows:
import nltk nltk.data.path.append("C:\somewhere\farfar\away\path")
fuente
nltk/nltk/data
magically_find_nltk_data()
partir stackoverflow.com/questions/36382937/...Yo uso adjuntar, ejemplo
nltk.data.path.append('/libs/nltk_data/')
fuente
En lugar de agregar
nltk.data.path.append('your/path/to/nltk_data')
a cada script, NLTK acepta la variable de entorno NLTK_DATA. ( enlace de código )Abierta
~/.bashrc
(o~/.profile
) con el editor de texto (por ejemplonano
,vim
,gedit
), y añadir la línea siguiente:export NLTK_DATA="your/path/to/nltk_data"
Ejecutar
source
para cargar la variable ambientalPrueba
Abra Python y ejecute las siguientes líneas
import nltk nltk.data.path
Puede ver su ruta de datos nltk ya allí.
Referencia: respuesta de @ alvations en nltk / nltk # 1997
fuente
Para aquellos que usan uwsgi:
Tenía problemas porque quería que una aplicación uwsgi (que se ejecutaba como un usuario diferente al mío) tuviera acceso a los datos de nltk que había descargado previamente. Lo que funcionó para mí fue agregar la siguiente línea a
myapp_uwsgi.ini
:Esto establece la variable de entorno
NLTK_DATA
, como lo sugiere @schemacs.Es posible que deba reiniciar su proceso de uwsgi después de realizar este cambio.
fuente
Otra solución es adelantarse.
intente importar nltk nltk.download ()
Cuando aparezca el cuadro de la ventana preguntando si desea descargar el corpus, puede especificar allí en qué directorio se descargará.
fuente
Siguiendo los consejos de fnjn anteriores para imprimir la ruta:
Vi las cadenas de ruta en este tipo de formato en Windows:
Así que cambié mi ruta de la barra inclinada '/' de tipo Python, a una barra invertida doble '\\' cuando usé path.append:
nltk.data.path.append("C:\\workspace\\my_project\\data\\nltk_books")
La excepción desapareció.
fuente