Pergunta

Eu tenho tentado fazer o trabalho NLTK (Natural Language Toolkit) no Google App Engine. Os passos que se seguiram são:

  1. Faça o download do instalador e executá-lo (um ficheiro .dmg, como eu estou usando um Mac).
  2. copiar o nltk pasta fora do diretório site-packages python e colocá-lo como uma sub-pasta na minha pasta de projeto.
  3. Criar um módulo python na pasta que contém a sub-pasta nltk e adicione a linha: from nltk.tokenize import *

Infelizmente, depois de lançá-lo eu recebo este erro (note que este erro é gerado nas profundezas NLTK e eu estou vendo isso para minha instalação do sistema de python em oposição ao que está na sub-pasta do projeto GAE ):

 <type 'exceptions.ImportError'>: No module named nltk
Traceback (most recent call last):
  File "/base/data/home/apps/xxxx/1.335654715894946084/main.py", line 13, in <module>
    from lingua import reducer
  File "/base/data/home/apps/xxxx/1.335654715894946084/lingua/reducer.py", line 11, in <module>
    from nltk.tokenizer import *
  File "/base/data/home/apps/xxxx/1.335654715894946084/lingua/nltk/__init__.py", line 73, in <module>
    from internals import config_java
  File "/base/data/home/apps/xxxx/1.335654715894946084/lingua/nltk/internals.py", line 19, in <module>
    from nltk import __file__

Nota: esta é a forma como os olhares de erro nos logs quando carregado para GAE. Se eu executá-lo localmente eu recebo o mesmo erro (exceto parece ter origem dentro do meu site-packages instância de NLTK ... então nenhuma diferença lá). E "XXXX" significa o nome do projeto.

Então, em resumo:

  • É o que eu estou tentando fazer mesmo possível? Will NLTK mesmo executado no App Engine?
  • Existe algo que eu perdi? Ou seja:? Copiando "nltk" ao projeto GAE não é suficiente

EDIT: erro de digitação fixo e passo desnecessário removido

Foi útil?

Solução

O problema aqui é que nltk está tentando fazer a importação recursiva: Quando nltk/__init__.py é importado, ele importa nltk/internals.py, que então tenta nltk importação novamente. Desde nltk está no meio do próprio ser importado, ele falha com um erro (e inútil). O que eles estão fazendo é assim mesmo muito estranho. - É surpreendente algo como quebras from nltk import __file__

Este parece ser um problema com a própria nltk - ele funciona quando importados diretamente de um console Python? Se assim for, eles devem estar fazendo algum tipo de trapaça na versão instalada. Eu sugiro perguntar sobre os grupos NLTK o que eles estão fazendo e como trabalhar em torno dele.

Outras dicas

oakmad conseguiu com sucesso trabalhar através implantação de várias módulos NLTK para GAE. Espero que isto ajude. Mas, mas ser honesto, eu ainda não acho que isso é verdade, mesmo depois de ler o post.

Eu tenho bifurcada NLTK 2.0.3 no github para executá-lo em app engine ; tokenizing e simples POS marcação trabalhar com o tagger MaxEnt Treebank.

NLTK, creio eu, faz tentar o seu melhor para ser puro-Python como um fallback (degradação suave) quando ele não pode ter as extensões do acelerador com código C que gostaria. No entanto é preciso sempre estar se movendo com cuidado absoluto para corajosamente injetar um pacote tão rica (de forma recursiva fechando todos os arquivos .py e usando zipimport pode ser menos esquisito).

Meu instalado NLTK, 0,95 creio eu, não tem ntlk.tokenizer - que tem um nltk.tokenize, nenhuma fuga R, mas, obviamente, até mesmo o mais minutos de tal erro tipográfico é 100% intolerável quando você está tentando contar uma computador exatamente o que você quer, então eu suponho que este não é um erro de digitação de sua parte, mas sim o uso de uma versão completamente diferente e incompatível do NLTK, então, o liberação é que tem um subpacote chamado tokenizer ao invés de tokenize?

Se você encontrar uma política de tolerância zero para erros de digitação um char-difícil de suportar, computadores e sua programação não são susceptíveis de ser tolerável para você ...; -)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top