NLPIR(ICTCLAS2016)对文本进行分词

时间:2022-07-07 17:30:43

功能:利用NLPIR对文本进行分词,并将分词结果导出为文本。

备注:win7 64位系统,netbeans编程

基本代码框架参见我的另一篇文章:NLPIR分词功能


代码实现

package cwordseg;

import java.io.UnsupportedEncodingException;
// import utils.SystemParas;
import com.sun.jna.Library;
import com.sun.jna.Native;

/**
*
* 功能:对整个文本进行分词,并将分词结果导出为文本
* 最后更新时间:2016年3月15日 20:57:07
*/

public class CWordSeg {
public interface CLibrary extends Library {
CLibrary Instance = (CLibrary) Native.loadLibrary("D:\\NetBeansProjects\\CWordSeg\\file\\win64\\NLPIR",CLibrary.class);
public int NLPIR_Init(String sDataPath,int encoding,String sLicenceCode);
// 对文本进行分词:读入文本,输出文本,是否标注词性(0为不标注,1为标注)
public void NLPIR_FileProcess(String txt_input, String txt_output, int i);
public String NLPIR_GetLastErrorMsg();
public void NLPIR_Exit();
}

public static String transString(String aidString,String ori_encoding,String new_encoding) {
try {
return new String(aidString.getBytes(ori_encoding),new_encoding);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}

public static void main(String[] args) throws Exception {
String argu = "D:\\NetBeansProjects\\CWordSeg\\file";
// String system_charset = "UTF-8";
int charset_type = 1;
int init_flag = CLibrary.Instance.NLPIR_Init(argu, charset_type, "0");
String nativeBytes;

// 初始化失败提示
if (0 == init_flag) {
nativeBytes = CLibrary.Instance.NLPIR_GetLastErrorMsg();
System.err.println("初始化失败!原因:"+nativeBytes);
return;
}

String txt_input = "D:\\NetBeansProjects\\CWordSeg\\file\\testinput.txt"; // 读入文本
String txt_output = "D:\\NetBeansProjects\\CWordSeg\\file\\testoutput.txt"; // 输出文本
try {
// 对读入文本分词,并导出结果为另一个文本,要注意读入文本的编码格式(这里为UTF-8)
CLibrary.Instance.NLPIR_FileProcess(txt_input,txt_output,1);
CLibrary.Instance.NLPIR_Exit();
} catch (Exception ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
}
}
}

函数说明:

public void NLPIR_FileProcess(String txt_input, String txt_output, int i);
参数
    txt_input为输入文本路径,如D:\\NetBeansProjects\\CWordSeg\\file\\testinput.txt
    txt_output为输出文本路径,如D:\\NetBeansProjects\\CWordSeg\\file\\testoutput.txt
    i=0表示不进行词性标注,i=1表示进行词性标注。

注意事项

(1)读入文本的编码格式要注意保持一致,否则将不能正确分词;

(2)导出文本如果不存在,会自动创建命名的文本;如果路径中已经存在,将会覆盖掉原来的文本。