Domanda

Ho cercato di fare il NLTK (Natural Language Toolkit) lavorare su Google App Engine. I passi che ho seguito sono:

  1. Scarica il programma di installazione ed eseguirlo (un file .dmg, come io sto usando un Mac).
  2. copiare la cartella NLTK fuori della directory site-packages pitone e posizionarlo come una sottocartella nella mia cartella del progetto.
  3. Creare un modulo python nella cartella che contiene la sottocartella NLTK e aggiungere la riga: from nltk.tokenize import *

Purtroppo, dopo aver lanciato l'ottengo questo errore (si noti che questo errore viene generato nel profondo NLTK e sto vedendo per la mia installazione del sistema di pitone al contrario di quello che si trova nella sottocartella del progetto 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: questo è come l'errore appare nei registri quando caricato GAE. Se l'eseguo in locale ottengo lo stesso errore (tranne che sembra provenire dentro il mio esempio site-packages di NLTK ... quindi nessuna differenza lì). E "xxxx" indica il nome del progetto.

Quindi, in sintesi:

  • è quello che sto cercando di fare anche possibile? Sarà NLTK anche correre sul App Engine?
  • C'è qualcosa che mi mancava? Cioè: la copia di "NLTK" al progetto GAE non è sufficiente

EDIT: errore di battitura fisso e rimosso inutili passo

È stato utile?

Soluzione

Il problema qui è che nltk sta tentando di fare le importazioni ricorsive: quando nltk/__init__.py è importata, importa nltk/internals.py, che poi tenta di importare nuovamente nltk. Poiché nltk è nel mezzo di essere sé importato, fallisce con un errore (piuttosto inutile). Qualunque cosa che stanno facendo è abbastanza strano in ogni caso -. È qualcosa di sorprendente come pause from nltk import __file__

Questo appare come un problema con NLTK stesso - funziona quando vengono importati direttamente da una console Python? In tal caso, devono essere facendo una sorta di inganno nella versione installata. Io suggerirei di chiedere ai gruppi NLTK quello che stanno facendo e come lavorare intorno ad esso.

Altri suggerimenti

oakmad è riuscito a lavorare con successo attraverso distribuzione di diverse moduli NLTK a GAE. Spero che sia di aiuto. Ma, ma essere onesti, io ancora non credo che sia vero anche dopo che leggere il post.

Ho biforcato NLTK 2.0.3 su github di eseguire sul motore di app ; creazione di token e semplice il tagging POS lavorare con il tagger MaxEnt Treebank.

NLTK, credo, fa del suo meglio per essere puro Python come ripiego (graceful degradation) quando non può avere le estensioni acceleratore C-codificati che vorrebbe. Comunque si ha sempre bisogno di essere in movimento con cura assoluta per iniettare con coraggio un pacchetto così ricco (ricorsivamente zippare backup di tutti i file .py e utilizzando zipimport potrebbe essere meno traballante).

Il mio installato NLTK, 0,95 credo, non ha ntlk.tokenizer - se ha un nltk.tokenize, senza finale R, ma, ovviamente, anche il più minuto tale errore di battitura è intollerabile al 100% quando si sta cercando di raccontare una calcolatore esattamente quello che vuoi, quindi presumo questo non è un errore di battitura da parte vostra, ma piuttosto l'utilizzo di un rilascio completamente diverso e incompatibile di NLTK, quindi, cOSA di rilascio è che ha un sottopackage nome tokenizer piuttosto che tokenize?

Se si trova una politica di tolleranza zero per errori di battitura uno-char duri da sopportare, i computer e la loro programmazione è improbabile che siano tollerabili a voi ...; -)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top