crf++ 是比较流行的 CRFs 开源的简单可定制化的 lib,专门为 NLP 一般性的需求设计,可用于命名实体识别、信息提取、和文本挖掘,等等。

其是用 C++ 开发的,但又封装了 python、java、ruby、swig 等模块,简单易用。

但是在 linux 上编译遇到了问题,错误如下:

g++ -DHAVE_CONFIG_H -I. -O3 -Wall -c -o crf_learn.o crf_learn.cpp
g++ -DHAVE_CONFIG_H -I. -O3 -Wall -c -o crf_test.o crf_test.cpp
crf_learn.cpp:9:21: fatal error: winmain.h: No such file or directory
#include "winmain.h"

很明显,这是在考虑 Windows 平台时添加的代码,而 linux 上找不到这个文件,可用如下方法解决:

$ ./configure
$ sed -i '/#include "winmain.h"/d' crf_test.cpp
$ sed -i '/#include "winmain.h"/d' crf_learn.cpp
$ make
$ sudo make install

一切顺利!

参见:

https://github.com/taku910/crfpp/issues/18