NLPIR(ICTCLAS2016)对词频统计功能

时间:2021-09-15 17:28:00

功能:利用NLPIR(ICTCLAS2016)进行中文分词,并进行词频统计。

备注win7 64位系统,netbeans编程

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

代码实现

package cwordseg;

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

/**
*
* 功能:NLPIR词频统计功能
* 最后更新时间:2016年3月15日 21:49:19
*/

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);
public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged);
// 词频统计功能,sText为字符串文本
public String NLPIR_WordFreqStat(String sText);
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 sInput = "改革开放是党在新的时代条件下带领全国各族人民进行的新的伟大革命,是当代中国最鲜明的特色。党的十一届三中全会召开三十五年来,我们党以巨大的政治勇气,锐意推进经济*、政治*、文化*、社会*、生态文明*和党的建设制度改革,不断扩大开放,决心之大、变革之深、影响之广前所未有,成就举世瞩目。";
try {
nativeBytes = CLibrary.Instance.NLPIR_WordFreqStat(sInput); // 词频从高到低排序,包括了分出来的所有词,甚至标点。
System.out.println("词频排序结果: " + nativeBytes);
CLibrary.Instance.NLPIR_Exit();
} catch (Exception ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
}
}
}


函数说明

(1)参数:sText为字符串
(2)注意事项:词频从高到低排序,包括了分词出来的所有成分,比如标点符号。