Meu nltk.data.path tem '/home/aankney/nltk_data'como primeiro elemento da lista, MAS estou em um servidor e quero nltk_dataser compartilhado por outras pessoas usando o servidor. Como evito que o nltk use isso como um dos caminhos de download?
``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``.
Então, dentro do 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 o caminho, basta anexar à lista de caminhos possíveis:
Em vez de adicionar nltk.data.path.append('your/path/to/nltk_data')a todos os scripts, o NLTK aceita a variável de ambiente NLTK_DATA. ( link do código )
Abrir ~/.bashrc(ou ~/.profile) com editor de texto (por exemplo nano, vim, gedit), e adicione o seguinte linha:
Eu estava tendo problemas porque queria que um aplicativo uwsgi (rodando como um usuário diferente do meu) tivesse acesso aos dados nltk que eu havia baixado anteriormente. O que funcionou para mim foi adicionar a seguinte linha a myapp_uwsgi.ini:
env = NLTK_DATA=/home/myuser/nltk_data/
Isso define a variável de ambiente NLTK_DATA, conforme sugerido por @schemacs.
Pode ser necessário reiniciar o processo uwsgi após fazer essa alteração.
Respostas:
Basta alterar os itens de
nltk.data.path
, é uma lista simples.fonte
'/home/aankney/nltk_data'
como primeiro elemento da lista, MAS estou em um servidor e queronltk_data
ser compartilhado por outras pessoas usando o servidor. Como evito que o nltk use isso como um dos caminhos de download?A partir do código, http://www.nltk.org/_modules/nltk/data.html :
Então, dentro do 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 o caminho, basta anexar à lista de caminhos possíveis:
import nltk nltk.data.path.append("/home/yourusername/whateverpath/")
Ou no windows:
import nltk nltk.data.path.append("C:\somewhere\farfar\away\path")
fonte
nltk/nltk/data
magically_find_nltk_data()
a partir stackoverflow.com/questions/36382937/...Eu uso append, example
nltk.data.path.append('/libs/nltk_data/')
fonte
Em vez de adicionar
nltk.data.path.append('your/path/to/nltk_data')
a todos os scripts, o NLTK aceita a variável de ambiente NLTK_DATA. ( link do código )Abrir
~/.bashrc
(ou~/.profile
) com editor de texto (por exemplonano
,vim
,gedit
), e adicione o seguinte linha:export NLTK_DATA="your/path/to/nltk_data"
Execute
source
para carregar a variável ambientalTeste
Abra o python e execute as seguintes linhas
import nltk nltk.data.path
Você pode ver seu caminho de dados nltk já lá.
Referência: resposta de @alvations em nltk / nltk # 1997
fonte
Para aqueles que usam uwsgi:
Eu estava tendo problemas porque queria que um aplicativo uwsgi (rodando como um usuário diferente do meu) tivesse acesso aos dados nltk que eu havia baixado anteriormente. O que funcionou para mim foi adicionar a seguinte linha a
myapp_uwsgi.ini
:Isso define a variável de ambiente
NLTK_DATA
, conforme sugerido por @schemacs.Pode ser necessário reiniciar o processo uwsgi após fazer essa alteração.
fonte
Outra solução é se antecipar.
tente importar nltk nltk.download ()
Quando a janela aparecer perguntando se você deseja fazer o download do corpus, você pode especificar lá em qual diretório o download será feito.
fonte
Usando o conselho de fnjn acima sobre como imprimir o caminho:
Eu vi as strings de caminho neste tipo de formato no windows:
Então, mudei meu caminho de barra '/' do tipo python para barra invertida dupla '\\' quando usei path.append:
nltk.data.path.append("C:\\workspace\\my_project\\data\\nltk_books")
A exceção foi embora.
fonte