2011-12-18 21 views
6

Me disculpo por la naturaleza de novato de esta pregunta. He estado tratando de descubrir el paquete de Python y los espacios de nombres, pero los puntos más finos parecen eludirme. A saber, me gustaría utilizar el contenedor de Python para el etiquetador de voz parcial de Stanford. Yo no tenía problemas para encontrar la documentación here, que ofrece una muestra de su uso:Creando una instancia y usando StanfordTagger dentro de NLTK

st = StanfordTagger('bidirectional-distsim-wsj-0-18.tagger') 
st.tag('What is the airspeed of an unladen swallow ?'.split()) 
    [('What', 'WP'), ('is', 'VBZ'), ('the', 'DT'), ('airspeed', 'NN'), ('of', 'IN'), ('an', 'DT'), ('unladen', 'JJ'), ('swallow', 'VB'), ('?', '.')] 

Esto se ve muy bien, pero me parece que no puede conseguir los espacios de nombres correctos aparezcan en mi instalación local de Python + NLTK (tengo la versión más reciente NLTK, y han intentado el siguiente en Python 2.6.x, así como 2.7.x):

>>> import nltk 
>>> from nltk import * 
>>> from nltk.tag import stanford 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
ImportError: cannot import name stanford 

también probé esta declaración de importación, con el mismo resultado:

>>> from nltk.tag.stanford import StanfordTagger 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
ImportError: No module named stanford 

Buscando por aquí en SO, encontré this question, donde el cartel parece estar experimentando el mismo problema, pero es capaz de pasar de la etapa de espacio de nombres con:

El problema es que mi NLTK lib doesnt contienen el módulo stanford. Así que copié lo mismo en la carpeta apropiada y compilé lo mismo.

suena como que es de hecho el mismo problema, excepto que no puedo por la vida de mí encontrar ninguna documentación para ver cómo agregar módulos a NLTK. Todo lo que leo en el sitio web de NLTK implica que el módulo de Stanford ya debe estar empaquetado en la instalación base. Por lo tanto, una pregunta en dos partes:

  1. (Específicas) ¿Alguna sugerencia para conseguir más allá de este particular tema y comenzando a utilizar StanfordTagger desde Python? Sé que puedo llamar fácilmente el jar directamente y luego interpretar el resultado en Python - , eso es todo lo que hace Python en cualquier caso, pero me gustaría que esto funcionara por principio, si nada más.
  2. (General) ¿Cuál es un buen enfoque pitónico para investigar faltan problemas de empaquetado o dependencias como la anterior?

Respuesta

-1

Sugerencias: a. Busque en el directorio nltk instalado en su PC. Revisé el mío y stanford.py no está allí (es decir, falta en nltk/tag/directory). Puede encontrar rápidamente dónde buscar ejecutando esto:

import distutils.sysconfig 
print distutils.sysconfig.get_python_lib()+'/nltk/tag/' 

b. Si no está allí, copie el archivo stanford.py de la fuente que mencionó al directorio nltk/tag en su PC (que obtendrá en el paso a).

Espero que funcione.

+0

Gracias por la sugerencia de distutils.sysconfig. Me dijo lo que ya sabía (y usted confirmó): stanford POS tagger ya no parece ser parte de la distribución NLTK, y la documentación parece desactualizada. Finalmente decidí usar el etiquetador de Stanford en modo batch en lugar de interactuar con él desde Python, pero es bueno saber que no me faltaba nada obvio. – Inverseofverse

Cuestiones relacionadas