2012-09-26 3 views
6

Ich habe mit NLTK auf Python gespielt, aber nicht in der Lage, den MEGAM Max Ent Algorithmus wegen des Fehlens einer Windows 64-Bit ausführbaren Datei von jeder Version der MEGAM Bibliothek gleich oder über 0,3 zu verwenden. muss die Option -nobias für NLTK enthalten, die in v.3.3 eingeführt wurde.NLTK MEGAM Max Ent Algorithmen auf Windows

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

Der Autor empfiehlt, Ihre eigene ausführbare kompilieren, obwohl O'Caml immer auf Win64 arbeiten nur ein weiterer Alptraum.

Hat jemand da draußen eine kompilierte Windows-Version der ausführbaren MEGAM-Version, die entweder Version 0.4 oder höher ist? Ich wäre ewig dankbar!

Antwort

5

Ich konnte Python NLTK MegaM-Bibliothek nach ein wenig Arbeit unter Windows 7 arbeiten, die Lösung ist ziemlich einfach (im Nachhinein). Meine Methodik wird im Folgenden detailliert beschrieben und die Links sind enthalten. Ich hoffe, Sie finden sie nützlich.

High-Pegel:

  1. installieren OCaml Compiler (Special Version: OCamlPro)
  2. Laden Sie den Quellcode für Magam
  3. herunterladen und installieren GNU32Make Dienstprogramm
  4. Bearbeiten Sie die MegaM Makefile in 2 Orte
  5. Führen Sie Gnu32Make zu Generieren Magam.exe-Datei
  6. Programmatische zeigen den Ort der megam.exe Datei zu Python NLTK
  7. Führen Sie den Befehl nltk.MaxentClassifier.train

Links:

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

Die blutigen Details

Es gibt einige Besonderheiten dieses Prozesses, die nach Süden leicht kann den Mangel an Dokumentation gegeben gehen - ich möchte die Aufmerksamkeit auf ein paar nennen Ich fand ...

Windows-OCamPro

Es ist sehr wichtig, die OCaml Pro-Version für Windows zu erhalten, die eine in sich geschlossene Einheit ist w/out Abhängigkeiten zu irgendetwas anderes. Die Version, die ich aufgelistet habe, ist genau das, es wird in einem einzigen Verzeichnis deiner Wahl installiert. Es ist sehr wichtig, den Pfad zum Verzeichnis bin zum Systempfad von Windows hinzuzufügen.

MEGAM

Windows ist eine Herausforderung für diese Bibliothek, weil es einige SNAFU ist mit dem Entwickler gehabt hat, so dass Sie die Quelle und kompilieren Sie es auf eigene Faust sind gezwungen, zum Download bereit. Das ist nicht so schwierig wie es zuerst erscheint. Als allgemeiner Prozess ist es ziemlich einfach, eine .Targz-Datei in ein Verzeichnis zu entpacken und sie 2X zu entpacken, um zum Quellverzeichnis zu gelangen. Die wichtigsten 2 Ziele zu erreichen, ist (a) richtig die Makefile bearbeiten und (b) den Pfad hinzufügen des Verzeichnisses, das die resultierende megam.exe Datei enthält zum Windows-Systempfad.

GNU32Win

Dies ist ein straight forward Prozess, nur um sicher zu machen, um den Pfad der zu Ihrem Windows-Systempfad nach der Installation Gnu32Make exe-Datei.

MEGAM Makefile

Im Verzeichnis, in dem Sie die Magam Dateien aus dem Archiv entfernt, gibt es ein Makefile vorhanden ist, in denen es zwei Zeilen, wo Sie das Bearbeitungsrecht erhalten müssen einen einwandfreien Build zu gewährleisten.

Erste: (Swap aus den fett Flaggen in den kommentierten aus Einklang mit dem in der uncommented Linie)

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

Zweitens: (Swap aus dem Pfad der ersten Zeile mit dem entsprechenden Pfad auf Ihrem System)

HINWEIS: Dieser Weg Muss Punkt zum "\ lib \ caml" Verzeichnis Ihre OcamlPro-Installation auf Ihrem System.

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

Run im megam macht dir

In diesem Stadium sollten Sie in der Lage sein, nur Öffnen Sie eine Windows CMD-Shell, wechseln Sie in das Verzeichnis, in dem Sie das Makefile geändert haben, und führen Sie make zum Kompilieren und Generieren der ausführbaren Datei megam.exe aus.

Sie sollten eine Ausgabe ähnlich sehen:

ocamldep * .mli * .ml> .depend ocamlc -g -custom -o megam str.cma -cclib -lcamlstr bigarray.cma machen - 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 Geben Sie die Lage der Megam.exe Datei zu Pythons NLTK

Der letzte Gotcha ich in war lief, wie man auf Pythonn NLTK genau zeigen den Ort meiner magam.exe Datei. Im aufrufenden Code habe ich die Anweisung so kurz vor der Zeile platziert, wo ich den MaxentClassifier selbst aufgerufen habe, und das funktionierte gut, siehe unten.

Hinweis: Es dauerte eine lange Zeit auf meiner Entwicklungs-Workstation, also seien Sie geduldig.

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

Es ist auch mit Cygwin kompiliert werden könnte:

  1. herunterladen Cygwin-Installer: https://cygwin.com/install.html
  2. bei der Installation, überprüfen Gnu machen und ocaml (beide Compiler und Runtime) Make-Datei
  3. Änderung
    • WITHSTR = str.cma -cclib -lstr -> WITHSTR = str.cma -cclib -lcamlstr
    • WITHCLIBS = Pfad zu Ihrem Cygwin Ocaml Verzeichnis
  4. Kompilieren mit make. Es könnte Unterschiede beim Kompilieren von Debug und opt build geben. Ich kann mit cygwin mit opt ​​aber nicht debuggen und nativ mit debug aber nicht opt ​​bauen.
  5. add Cygwin ist zu PATH
  6. Laufe megam mit nltk.config_megam
(Ihr Weg zu megam)