原本以为把中文分词组件ICTCLAS集成到GATE中,然后添加语料,批量加入文档,直接用语料处理流处理中文语料库就可以实现多文本的分词处理,但在实际操作时,每次运行到一定数量(每次运行成功的数量都不同)的文档后,就会出现了JNA异常,报错为非法内存利用。之后无论处理多少文档,都会报这个错误(就算是一个也会出错),除非重新打开GATE。这显然不是ICTCLAS的证书问题。
我首先想到的解决方法是利用embedd开发的方式,在eclipse中调用GATE,加载自定义的分词器,结果在eclipse中报错不能打开Data文件下的某一个文件,而且那个文件不在Data中。
有人说这是Data里面的文件在某次运行错误后被修改了,所以后来我每次批量运行分词组件时,重新解压缩Data文件夹,并重新下载证书。结果运行900多个文档时,时好时坏,一直没搞清楚什么原因。
后来我索性不用集成到GATE中的那个分词器了,直接在eclipse中使用ICTCLAS,发现所有文档均能正确处理,于是想到:直接在eclipse中遍历文档,进行分词,然后创建GATE的Document对象,利用embedd开发的方式加入到GATE中,然后把文档保存到GATE自己的数据库中,退出eclipse。再打开GATE加载刚刚embedd方式保存的数据库,进行后续的处理。