2012-09-26 12 views
6

Ho giocato con NLTK su Python ma non sono riuscito a utilizzare l'algoritmo MEGAM Max Ent a causa della mancanza di un eseguibile di Windows 64 bit di qualsiasi versione della libreria MEGAM uguale o superiore a 0,3 (deve includere l'opzione -nobias per il funzionamento di NLTK, che è stata introdotta in v. 0.3).Algoritmi NLTK MEGAM Max Ent su Windows

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

L'autore raccomanda la creazione della propria eseguibile, anche se sempre O'Caml di lavorare su Win64 è solo un altro incubo.

Qualcuno là fuori ha una versione compilata per Windows dell'eseguibile MEGAM che è o la versione 0.4 o successiva? Ne sarei eternamente grato!

risposta

5

Sono riuscito a far funzionare la libreria Python NLTK MegaM dopo un po 'di lavoro su Windows 7, la soluzione è abbastanza semplice (a ben vedere). La mia metodologia è descritta di seguito in dettaglio e i collegamenti sono inclusi. Spero li trovi utili.

Alto livello:

  1. Installare OCaml Compiler (Versione speciale: OCamlPro)
  2. scaricare il codice sorgente per Magam
  3. Scaricare e installare l'utilità GNU32Make
  4. Modificare il MegaM MakeFile in 2 posti
  5. Eseguire Gnu32Make per generare il file magam.exe
  6. Programmazione indicare la posizione del file megam.exe a Python NLTK
  7. Eseguire il comando nltk.MaxentClassifier.train

vicini:

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

Il Gory dettagli

Ci sono alcune peculiarità di questo processo che può facilmente andare a sud data la mancanza di documentazione - vorrei richiamare l'attenzione su un paio che ho trovato ...

di Windows OCamPro

E 'molto importante per ottenere la versione Pro OCaml per Windows che è un autonomo soggetto w/out dipendenze a qualsiasi altra cosa. La versione che ho elencato è proprio quella, verrà installata in una singola directory di tua scelta. È molto importante aggiungere il percorso alla directory bin al percorso di windows.

MEGAM

di Windows è una sfida per questa libreria perché è avuto qualche SNAFU di con lo sviluppatore, quindi si è costretti a scaricare il codice sorgente e compilarlo da soli. Questo non è così difficile come sembra prima. Come processo generale è abbastanza semplice per annullare l'archiviazione di un file .Targz in una directory e annullarne l'archiviazione 2X per arrivare alla directory di origine. La più importante 2 obiettivi da raggiungere è quello di (a) modificare adeguatamente il Makefile e (b) aggiungere il percorso della directory che contiene il file risultante megam.exe al percorso di sistema di Windows.

GNU32Win

Questo è un processo dritto in avanti, basta assicurarsi di aggiungere il percorso del file exe Gnu32Make al percorso di sistema di Windows dopo l'installazione.

MEGAM MakeFile

Nella directory in cui si archiviati i file Magam, esisterà un MakeFile in cui ci sono 2 riga in cui è necessario ottenere il diritto di modifica al fine di garantire una compilazione corretta.

Prima: (swap fuori le bandiere in grassetto nella linea commentata con quello nella riga non commentata)

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

Secondo: (Swap il percorso della prima linea con il percorso equivalente sul sistema)

NOTA: Questo percorso must punto nella directory "\ lib \ caml" di l'installazione di OcamlPro sul tuo sistema.

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

Run fanno nel megam dir

In questa fase, si dovrebbe essere in grado di appena apri una shell di Windows CMD, cd nella directory in cui hai modificato il makefile e avvia semplicemente make per compilare e generare il file eseguibile megam.exe.

si dovrebbe vedere un output simile a:

fanno ocamldep * * .mli .ML> .depend ocamlc -g -o -custom 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

Programatically indicano la posizione del file Megam.exe per Pythons NLTK

L'ultima Gotcha ho incontrato è stato il modo di indicare con precisione al Pythonn NLTK la posizione del mio file magam.exe. Nel codice chiamante, ho inserito l'istruzione che indica tale appena prima della riga in cui ho chiamato il MaxentClassifier stesso, e che ha funzionato bene, vedi sotto.

Nota: la mia workstation di sviluppo impiega molto tempo per essere paziente.

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

Potrebbe anche essere compilato utilizzando Cygwin:

  1. installer scaricare Cygwin: https://cygwin.com/install.html
  2. durante l'installazione, controllare GNU Make e OCaml (entrambi compilatore e runtime)
  3. cambiamento makefile
    • WITHSTR = str.cma -cclib -lstr -> WITHSTR = str.cma -cclib -lcamlstr
    • WITHCLIBS = percorso della directory cygwin ocaml
  4. compilare utilizzando make. Ci potrebbe essere differenza compilando debug e opt build. Posso costruire usando cygwin con opt ma non debug e nativo con debug ma non opt.
  5. add cygwin bin al PATH
  6. corsa megam con nltk.config_megam (il vostro percorso a megam)