Question

Je suis en train de faire la NLTK (Natural Language Toolkit) travailler sur le Google App Engine. Les étapes que je suivais sont:

  1. Télécharger le programme d'installation et l'exécuter (un fichier .dmg, comme je me sers d'un Mac).
  2. copier le dossier NLTK sur le répertoire python site-packages et le placer comme un sous-dossier dans mon dossier de projet.
  3. Créer un module python dans le dossier qui contient le sous-dossier NLTK et ajoutez la ligne: from nltk.tokenize import *

Malheureusement, après le lancement de ce que je reçois cette erreur (notez que cette erreur est soulevée au plus profond de NLTK et je vois pour mon installation du système de python, par opposition à celui qui se trouve dans le sous-dossier du projet 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__

Note: Ceci est la façon dont l'erreur regarde dans les journaux lorsque téléchargés sur GAE. Si je le lance, je reçois localement la même erreur (sauf qu'il semble provenir dans mon site-packages instance de NLTK ... donc il n'y a pas de différence). Et "xxxx" signifie le nom du projet.

Donc en résumé:

  • Est-ce que je suis en train de faire encore possible? Est-ce que NLTK même courir sur l'App Engine?
  • Y at-il quelque chose que je manqué? C'est: la copie « NLTK » au projet GAE ne suffit pas

EDIT: typo fixe et retiré étape inutile

Était-ce utile?

La solution

Le problème ici est que nltk tente de faire les importations récursives: Lorsque nltk/__init__.py est importé, il importe nltk/internals.py, qui tente ensuite d'importer nltk à nouveau. Depuis nltk est au milieu d'être lui-même importé, il échoue avec une erreur (plutôt inutile). Tout ce qu'ils font est assez bizarre de toute façon -. C'est quelque chose comme surprenant casse from nltk import __file__

Cela ressemble à un problème avec lui-même NLTK - t-il lors de l'importation directement à partir d'une console Python? Dans ce cas, ils doivent faire une sorte de supercherie dans la version installée. Je vous conseille de demander aux groupes NLTK ce qu'ils mijotent et comment travailler autour.

Autres conseils

oakmad a réussi à travailler avec succès par le déploiement PLUSIEURS modules de NLTK à GAE. J'espère que cela t'aides. Mais, mais être honnête, je ne pense pas encore il est vrai même lire après le poste.

J'ai bifurqué NLTK 2.0.3 sur GitHub pour l'exécuter sur le moteur application; tokenizing et marquage simple POS travaillant avec le MaxEnt Treebank tagger.

NLTK, je crois, ne son mieux pour être pur-Python comme solution de repli (dégradé) quand il ne peut pas avoir les extensions d'accélérateur C-codés qu'il souhaite. Cependant, on a toujours besoin de se déplacer avec un soin absolu d'injecter hardiment un tel paquet riche (récursive remonte la fermeture éclair tous les fichiers .py et en utilisant zipimport pourrait être moins squameuse).

Mon installé NLTK, 0.95 je crois, n'a pas ntlk.tokenizer - elle a un nltk.tokenize, pas R de fuite, mais il est évident, même la plus infime telle faute de frappe est 100% intolérable quand vous essayez de dire à un ordinateur exactement ce que vous voulez, donc je suppose que ce n'est pas une faute de frappe de votre part, mais plutôt votre utilisation d'une version complètement différente et incompatible de NLTK, donc, qUOI version est-ce qui a un sous-package nommé tokenizer plutôt que tokenize?

Si vous trouvez un difficile à supporter la politique de tolérance zéro pour les fautes de frappe d'un char, les ordinateurs et leurs programmes ne sont pas susceptibles d'être tolérable pour vous ...; -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top