NLPIR(ICTCLAS2016)对文本进行分词

功能:利用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)导出文本如果不存在,会自动创建命名的文本;如果路径中已经存在,将会覆盖掉原来的文本。

你可能感兴趣的:(Java,中文分词)