在 Windows 7 上进行一些工作后,我能够让 Python NLTK MegaM 库工作,解决方案相当简单(事后看来)。下面详细描述了我的方法,并包含链接。我希望你觉得它们有用。
高水平:
- 安装 OCaml 编译器(特别版:OCamlPro)
- 下载 MagaM 的源代码
- 下载并安装 GNU32Make 实用程序
- 在 2 个地方编辑 MegaM MakeFile
- 运行 Gnu32Make 生成 magam.exe 文件
- 以编程方式向 Python NLTK 指示 megam.exe 文件的位置
- 运行 nltk.MaxentClassifier.train 命令
链接:
- 超级网站:
- Windows OCamlPro 下载
- GNU32 为 Windows 制作
血腥细节
由于缺乏文档,这个过程的一些特点很容易走向南方 - 我想提请注意我发现的一些......
Windows OCamPro
获得适用于 Windows 的 OCaml Pro 版本非常重要,它是一个独立的实体,不依赖于其他任何东西。我列出的版本就是这样,它将安装到您选择的单个目录中。将bin目录的路径添加到windows的系统路径中是非常重要的。
兆丰
Windows 对这个库来说是一个挑战,因为它与开发人员有一些 SNAFU,所以你不得不下载源代码并自己编译它。这并不像最初看起来那么困难。作为一般过程,将 .Targz 文件解压缩到一个目录并解压缩 2X 以到达源目录是相当简单的。要实现的最重要的 2 个目标是 (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
第二:(
将第一行的路径替换为系统上的等效路径)
注意:该路径必须指向系统上 OcamlPro 安装的“\lib\caml”目录。
- 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 > .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
以编程方式向 Pythons NLTK 指示 Megam.exe 文件的位置
我遇到的最后一个问题是如何准确地向 Pythonn NLTK 指示我的 magam.exe 文件的位置。在调用代码中,我在调用 MaxentClassifier 本身的行之前放置了指示这样的语句,并且效果很好,见下文。
注意:我的开发工作站花了很长时间,所以请耐心等待。
nltk.config_megam('E:\megam\megam.exe')
self.classifier = nltk.MaxentClassifier.train(train_set, algorithm='megam', trace=0)