现在的位置: 首页 > 综合 > 正文

crf++的java api配置

2019年04月01日 ⁄ 综合 ⁄ 共 884字 ⁄ 字号 评论关闭

        之前用crf++做分词和词性标注,用的都是python的api,没感觉在调用的时候很复杂。最近想写个完整的分词加词性标注程序,只想用crf做oov,考虑到效率,准备用java来进行编写,谁知道crf++的java api足足让我调试了一天。闲话少说,来说说配置的步骤。

        1.首先就是安装crf++,这个在官网上有详细的介绍,我就不多说了。

        2.安装好了之后,需要在系统中安装swig,sudo apt-get install swig。

        3.在crf++的解压缩的文件系统下,在swig目录下,make。

        4.转到crf++的解压缩目录的java下,修改makefile中的jdk位置,即以我的为例,INCLUDE=/usr/lib/jvm/java-8-oracle/include,让一会的make命令可以找到jni.h这个文件,修改完成之后,make。

        5.上一步执行make之后,得到了两个CRFPP.jar和libCRFPP.so文件。注意这个libCRFPP.so要添加到LD_LIBRARY_PATH中。

        6.仿照test.java在自己的目录中写个测试类,将之前训练好的model文件放到代码中指定的位置,然后就可以javac了。我是将CRFPP.jar和libCRFPP.so都复制到当前测试文件的目录,把训练的Model文件也放到当前目录下,修改了Test,java中的Tagger tagger = new Tagger("-m ./model -v 3 -n2")以及后面tagger.add的代码。然后终端 export LD_LIBRARY_PATH=/~/java/testfolder,然后javac
-cp .CRFPP.jar Test.java,再java -cp .:CRFPP.jar Test。

        7.结果呈现!

       p.s.在上述过程中我发现了一个问题,就是我在其他的终端中执行export 命令,对我当前的这个终端是不起效果的,即使我这个终端是在其他终端执行export命令之后打开的,就因为这个害我弄了半天!  

抱歉!评论已关闭.