Windows上的NLTK MEGAM Max Ent算法

时间:2012-09-26 16:45:06

标签: classification nltk

我一直在玩Python上的NLTK但由于缺少任何版本的MEGAM库的Windows 64位可执行文件等于或高于0.3而无法使用MEGAM Max Ent算法(需要包含-nobias选项)让NLTK工作,这在第0.3节中介绍。

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

作者建议编译自己的可执行文件,尽管让O'Caml在Win64上运行只是另一个噩梦。

有没有人有MEGAM可执行文件的Windows编译版本是0.4或更高版本?我将永远感激不尽!

2 个答案:

答案 0 :(得分:5)

我能够在Windows 7上完成一些工作后让Python NLTK MegaM库工作,解决方案相当简单(事后看来)。我的方法在下面详细描述,并包含链接。我希望你发现它们很有用。

高级别:

  1. 安装OCaml编译器(特殊版本:OCamlPro)
  2. 下载MagaM的源代码
  3. 下载并安装GNU32Make实用程序
  4. 在2个地方编辑MegaM MakeFile
  5. 运行Gnu32Make以生成magam.exe文件
  6. 以编程方式指示megam.exe文件的位置 Python NLTK
  7. 运行nltk.MaxentClassifier.train命令
  8. <强>链接:

    1. MEGAM SITE:
    2. Windows OCamlPro Download
    3. GNU32 Make for Windows
    4. 血腥细节

      由于缺乏文件记录,这个过程有一些特点可以很容易地向南移动 - 我想提请注意我发现的一些......

      Windows OCamPro

      获得适用于Windows的OCaml Pro版本非常重要,因为它是一个独立的实体,不依赖于其他任何东西。我列出的版本就是这样,它将安装到您选择的单个目录中。将 bin 目录的路径添加到 Windows系统路径 非常重要。

      MEGAM

      Windows对这个库来说是一个挑战,因为它与开发人员有一些SNAFU,所以你不得不下载源代码并自己编译它。这并不像它第一次出现那么困难。作为一般过程,将.Targz文件解压缩到目录并将其解压缩2X以获取源目录相当简单。要实现的最重要的两个目标是(a)正确编辑 Makefile 和(b) 添加路径 包含生成的megam.exe文件 到Windows系统路径 的目录的>。

      <强> GNU32Win

      这是一个简单的过程,只需确保安装后将Gnu32Make exe文件的路径 添加到您的Windows系统路径

      MEGAM MakeFile

      在您取消归档MagaM文件的目录中,将存在一个MakeFile,其中有2行,您必须在其中获得编辑权限以确保正确构建。

      <强> 第一 : (将注释掉的行中的粗体标记替换为未注释行中的粗体标记)

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

      <强> 第二 (使用系统上的等效路径交换第一行的路径)

      注意 :该路径必须指向&#34; \ lib \ caml&#34;您系统上OcamlPro安装的目录。

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

      在megam目录中运行make

      在这个阶段,您应该只需打开一个Windows CMD shell,cd进入修改makefile的目录,然后运行make编译并生成可执行文件megam.exe。

      您应该看到类似于的输出:

        

      制作 ocamldep * .mli * .ml&gt; .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文件到Pythons NLTK的位置

      我遇到的最后一个问题是如何向Pythonn NLTK准确指出我的magam.exe文件的位置。在调用代码中,我将声明指示在我调用MaxentClassifier本身的行之前,并且工作得很好,见下文。

      注意:我的开发工作站花了很长时间,所以请耐心等待。

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

答案 1 :(得分:0)

也可以使用cygwin编译:

  1. 下载cygwin安装程序:https://cygwin.com/install.html
  2. 安装时,检查gnu make和ocaml(编译器和运行时)
  3. 更改makefile
    • WITHSTR = str.cma -cclib -lstr - &gt; WITHSTR = str.cma -cclib -lcamlstr
    • WITHCLIBS =您的cygwin ocaml dir的路径
  4. 使用make编译。可能存在编译调试和opt构建的差异。我可以使用opt而不是调试来构建cygwin,使用debug但不是opt。
  5. 将cygwin bin添加到PATH
  6. 使用nltk.config_megam(您的megam路径)运行megam