2012-09-26 39 views
6

He estado jugando con NLTK en Python pero no puedo usar el algoritmo MEGAM Max Ent debido a la falta de un ejecutable Windows 64-bit de cualquier versión de la biblioteca MEGAM igual o superior a 0.3 (necesita incluir la opción -nobias para que funcione NLTK, que se introdujo en v.3.3).Algoritmos NLTK MEGAM Max Ent en Windows

http://www.cs.utah.edu/~hal/megam/

El autor recomienda la compilación de su propio ejecutable, aunque para conseguir O'Caml para trabajar en Win64 es más que otra pesadilla.

¿Hay alguien por ahí que tenga una versión compilada de Windows del ejecutable de MEGAM que sea la versión 0.4 o superior? ¡Yo estaría eternamente agradecido!

Respuesta

5

Pude hacer funcionar la biblioteca Python NLTK MegaM después de un poco de trabajo en Windows 7, la solución es bastante sencilla (en retrospectiva). Mi metodología se describe a continuación en detalle y los enlaces están incluidos. Espero que los encuentres útiles.

nivel alto:

  1. Instalar OCaml compilador (versión especial: OCamlPro)
  2. descargar el código fuente para Magam
  3. Descargar e instalar la utilidad GNU32Make
  4. Editar la MegaM Makefile de 2 lugares
  5. Ejecute Gnu32Make para generar el archivo magam.exe
  6. Programación indicar la ubicación del archivo megam.exe a Python NLTK
  7. Ejecutar el comando nltk.MaxentClassifier.train

Enlaces:

  1. MEGAM SITE:
  2. Windows OCamlPro Download
  3. GNU32 Make for Windows

los detalles sangrientos

Hay algunas peculiaridades de este proceso que fácilmente puede ir hacia el sur debido a la falta de documentación - Me gustaría llamar la atención sobre algunos encontré ...

de Windows OCamPro

es muy importante obtener la versión Pro OCaml para Windows que es una entidad autónoma de entrada/salida dependencias w para cualquier otra cosa. La versión que he enumerado es solo eso, se instalará en un solo directorio de su elección. Es muy importante agregar la ruta al directorio bin a la ruta del sistema de windows.

MEGAM

de Windows es un reto para esta biblioteca, ya que ha tenido alguna de SNAFU con el promotor, por lo que se ven obligados a descargar el código fuente y compilarlo por su cuenta. Esto no es tan difícil como parece a primera vista. Como proceso general, es bastante sencillo desarchivar un archivo .Targz en un directorio y desarchivarlo 2 veces para llegar al directorio de origen. El más importante para lograr las metas 2 es (a) editar adecuadamente la Makefile y (b) agregar la ruta del directorio que contiene el archivo resultante megam.exe a la ruta del sistema de ventanas.

GNU32Win

Se trata de un proceso sencillo, basta con que a agregar la ruta del archivo exe Gnu32Make a la ruta del sistema de Windows después de la instalación.

MEGAM de archivo MAKE

En el directorio en el que no almacenados los archivos Magam, existirá un Makefile en el que hay 2 líneas en el que debe obtener el derecho de edición para garantizar una construcción adecuada.

Primera: (SWAP a cabo las banderas negrita en la línea comentada a cabo con la una en la línea de uncommented)

  • WITHSTR = str.cma -cclib -lstr
  • WITHSTR = str.cma -cclib -lcamlstr

Segundo: (Intercambiar el camino de la primera línea con la trayectoria equivalente en su sistema)

NOTA: Ese punto en el directorio "\ lib \ caml" de la trayectoria necesidad su instalación de OcamlPro en su sistema.

  • WITHCLIBS = -I /usr/lib/ocaml/3.09.2/caml
  • WITHCLIBS = -I E: \ OCamlPro \ OCPWin64 \ lib \ caml

Ejecutar make en el directorio megam

En esta etapa, usted debería ser capaz de simplemente abra un shell de Windows CMD, cd en el directorio donde modificó el archivo MAKE y simplemente ejecute make para compilar y generar el archivo ejecutable megam.exe.

debería ver una salida similar a:

hacen ocamldep * * .mli .ML> .depend ocamlc -g -custom -o megam str.cma -cclib -lcamlstr bigarray.cma - cclib -lbigarray unix.cma -cclib -lunix -IE: \ OCamlPro \ OCPWin64 \ lib \ caml fastdot_c.c fastdot.cmo intHashtbl.cmo arry.cmo util.cmo data.cmo bitvec.cmo cg.cmo wsemlm.cmo bfgs .cmo pa.cmo perceptron.cmo radapt.cmo kernelmap.cmo abffs.cmo main.cmo

Indicar Programatically la ubicación del archivo Megam.exe a pitones NLTK

La última Gotcha me encontré fue cómo indicar con precisión a Pythonn NLTK la ubicación de mi archivo magam.exe. En el código de llamada, puse la instrucción que indicaba eso justo antes de la línea donde llamé al MaxentClassifier mismo, y que funcionó bien, ver debajo.

Nota: Tardó MUCHO tiempo en mi estación de trabajo de desarrollo, así que sea paciente.

nltk.config_megam('E:\megam\megam.exe') 
self.classifier = nltk.MaxentClassifier.train(train_set, algorithm='megam', trace=0) 
0

También podría ser compilado usando cygwin:

  1. descarga cygwin instalador: https://cygwin.com/install.html
  2. al instalar, comprobar GNU realizar y ocaml (tanto compilador y tiempo de ejecución)
  3. cambio makefile
    • WITHSTR = str.cma -cclib -lstr -> WITHSTR = str.cma -cclib -lcamlstr
    • WITHCLIBS = ruta a su cygwin ocaml dir
  4. compilar usando make. Puede haber diferencias compilando depuración y compilación optativa. Puedo construir utilizando cygwin con opt pero no con depuración, y nativo con depuración pero no opt.
  5. complemento cygwin bin al PATH
  6. megam
  7. carrera con nltk.config_megam (su camino hacia megam)