5

Python で NLTK を使用していますが、0.3 以上の MEGAM ライブラリのバージョンの Windows 64 ビット実行可能ファイルがないため、MEGAM Max Ent アルゴリズムを使用できません (NLTK に -nobias オプションを含める必要があります)。 v. 0.3 で導入された作業)。

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

O'Caml を Win64 で動作させることは別の悪夢にすぎませんが、著者は独自の実行可能ファイルをコンパイルすることを推奨しています。

バージョン 0.4 以降の MEGAM 実行可能ファイルの Windows コンパイル バージョンを持っている人はいますか? 私は永遠に感謝します!

4

2 に答える 2

4

Windows 7 で少し作業した後、Python NLTK MegaM ライブラリを動作させることができました。解決策はかなり簡単です (後から考えると)。私の方法論は以下で詳細に説明されており、リンクが含まれています。それらがお役に立てば幸いです。

上級:

  1. OCaml Compiler (特別バージョン: OCamlPro) をインストールします。
  2. MagaM のソース コードをダウンロードする
  3. GNU32Make ユーティリティをダウンロードしてインストールする
  4. MegaM MakeFile を 2 か所で編集します。
  5. Gnu32Make を実行して magam.exe ファイルを生成する
  6. megam.exe ファイルの場所をプログラムで Python NLTK に示す
  7. nltk.MaxentClassifier.train コマンドを実行します

リンク:

  1. メガサイト:
  2. Windows OCamlPro ダウンロード
  3. GNU32 Make for Windows

血まみれの詳細

このプロセスには、ドキュメントが不足しているため、簡単に南に行くことができるいくつかの特徴があります-私が見つけたいくつかに注意を喚起したいと思います...

Windows OCamPro

Windows 用の OCaml Pro バージョンを入手することは非常に重要です。これは、他のものへの依存関係のない自己完結型のエンティティです。私がリストしたバージョンはまさにそれであり、選択した単一のディレクトリにインストールされます。binディレクトリへのパスを Windows のシステム パスに追加することは非常に重要です。

メガム

Windows は、開発者とのいくつかの SNAFU を持っているため、このライブラリの課題です。そのため、ソースをダウンロードして自分でコンパイルする必要があります。これは、最初に表示されるほど難しくありません。一般的なプロセスとして、.Targz ファイルをディレクトリに展開し、それを 2 回展開してソース ディレクトリに移動するのはかなり簡単です。達成すべき最も重要な 2 つの目標は、 (a) Makefileを適切に編集することと、(b)結果の megam.exe ファイルを含むディレクトリのパスを Windows システム パスに追加することです。

GNU32Win

これは簡単なプロセスです。インストール後にGnu32Make exe ファイルのパスを Windows システムのパスに追加してください。

MEGAM MakeFile

MagaM ファイルを解凍したディレクトリには、適切なビルドを確実にするために編集権限を取得する必要がある 2 行の MakeFile が存在します。

最初:(コメントアウトされた行の太字のフラグを、コメントされていない行の太字のフラグと交換します)

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

2番目:( 最初の行のパスをシステム上の同等のパスに置き換えます)

: そのパス、システム上の OcamlPro インストールの「\lib\caml」ディレクトリを指している必要があります。

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

megam dir で make を実行します。

この段階で、Windows CMD シェルを開いて、makefile を変更したディレクトリに移動し、make を実行して実行可能ファイル megam.exe をコンパイルおよび生成するだけでよいはずです。

次のような出力が表示されます。

make 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

プログラムで Megam.exe ファイルの場所を Python NLTK に示す

最後に遭遇した問題は、pythonn NLTK に magam.exe ファイルの場所を正確に示す方法でした。呼び出しコードで、MaxentClassifier 自体を呼び出した行の直前に、そのようなステートメントを配置しました。これは問題なく機能しました。以下を参照してください。

注:私の開発ワークステーションでは長い時間がかかったので、しばらくお待ちください。

 nltk.config_megam('E:\megam\megam.exe')
 self.classifier = nltk.MaxentClassifier.train(train_set, algorithm='megam', trace=0)
于 2015-06-21T18:12:11.787 に答える
0

cygwin を使用してコンパイルすることもできます。

  1. cygwin インストーラーをダウンロード: https://cygwin.com/install.html
  2. インストール時に、gnu make と ocaml (コンパイラとランタイムの両方) を確認してください
  3. メイクファイルを変更する
    • WITHSTR =str.cma -cclib -lstr -> WITHSTR =str.cma -cclib -lcamlstr
    • WITHCLIBS = cygwin ocaml ディレクトリへのパス
  4. make を使用してコンパイルします。debug と opt build のコンパイルに違いがあるかもしれません。cygwin を使用してビルドできますが、デバッグはできません。ネイティブはデバッグ付きですが、opt は使用できません。
  5. cygwin bin を PATH に追加
  6. nltk.config_megam (megam へのパス) で megam を実行します。
于 2015-11-17T21:22:12.640 に答える