stanford corenlp no funciona

Estoy usando Windows 8 y ejecutando python en eclipse con pyDev.

Instalé Stanford coreNLP (versión de python) desde el sitio: https://github.com/relwell/stanford-corenlp-python

Cuando bash importar corenlp, aparece el siguiente mensaje de error.

Traceback (most recent call last): File "C:\Users\Ghantauke\workspace\PythonTest2\test.py", line 1, in  import corenlp File "C:\Python27\lib\site-packages\corenlp\__init__.py", line 13, in  from corenlp import StanfordCoreNLP, ParserError, TimeoutError, ProcessError File "C:\Python27\lib\site-packages\corenlp\corenlp.py", line 28, in  import pexpect File "C:\Python27\lib\site-packages\pexpect.py", line 85, in  support it. Pexpect is intended for UNIX-like operating systems.""") ImportError: No module named resource A critical module was not found. Probably this operating system does not support it. Pexpect is intended for UNIX-like operating systems. 

¿Significa eso que la horquilla de python no funciona en Windows? ¿Hay alguna manera de hacer que funcione en Windows?

Si no es así, ¿podría sugerir otras alternativas que podría usar en Windows? Solo necesito el analizador.

Este es un registro de mis bashs de obtener corenlp-python , el envoltorio de Python para CoreNLP que se ejecuta en Windows Server 2012, tal como está.

Descargo de responsabilidad: si solo necesita ejecutar un ejecutable, verifique esto primero. Considere el subprocess .

Empezando

Como corenlp-python usa pexpect bastante, y esa biblioteca solo funciona en UNIX, mi primer pensamiento fue encontrar un puerto de Windows.

wexpect.py fue bastante fácil de encontrar y afirma ser un reemplazo directo de Pexpect (énfasis mío):

Para usar WExpect, debe instalar CygWin y luego instalar el script WExpect en su sistema (soltar el archivo py en su directorio de trabajo suele ser lo suficientemente bueno) . Descubrí que la funcionalidad es prácticamente la misma, por lo que debería poder usar el manual y los ejemplos de PExpect y aplicarlos a esta variante de Microsoft Windows.

Así que hice eso, descargando e instalando CygWin, y luego copiando wexpect.py en C:\Python27\lib\ donde estaban todas las demás bibliotecas. Intenté import wexpect desde un shell de Python y obtuve un error similar al cuando probé Pexpect por primera vez en Windows:

 ImportError: No module named pywintypes This module requires the win32 python packages. A critical module was not found. Probably this operating system does not support it. Pexpect is intended for UNIX-like systems. 

Et tu, wexpect?

No importa, esto es una frustración estándar para encontrar equivalentes. Seguir adelante.

Abrí wexpect.py y vi que solo probaría pywintypes en un sistema Windows. Lógica, así que intenté:

 $ pip install -U pywintypes 

… lo que falló, y me llevó a Google para el nombre de los paquetes Win32 de python ( esta respuesta ayudó):

 $ pip install -U pywin32 

… que solicita --allow-external y luego --allow-unverified , y ambos esperan el nombre del paquete, ergo:

 $ pip install --allow-external pywin32 --allow-unverified pywin32 pywin32 

Lo cual, por supuesto, no funciona. No se ha encontrado tal paquete.

sf.net

Así que me dirijo a buscar pywin32 en PyPI y me doy cuenta de que solo me queda un readme y tengo que saltar a través de cuatro MÁS aros para llegar a algo más importante , luego dos más para encontrar esta lista .

Descargué Build 219 para Python 2.7 de 32 bits . Al menos ahora import wexpect no import wexpect .

¿Que esperabas?

Así que vuelvo a ejecutar el corenlp-python , y esta vez falta unidecode . Esto fue más fácil de solucionar y, finalmente, llegué a un estado utilizable, un error, no menos, pero familiar, en el que el camino a los JAR no era correcto.

DE ACUERDO.

Cuando ejecute corenlp.py , ya que se invoca pexpect , recuerde import wexpect as pexpect cerca de la parte superior y comentar la línea de import pexpect real, o obtendrá un NameError :

 #import pexpect import wexpect as pexpect 

Incluso con Java instalado, esto no parece funcionar, independientemente de la ruta.

 $ python lib\corenlp\corenlp.py 

Devuelve un ExceptionPexpect .