1.下载附加的中科院分词工具包(要下载的到我的博客里面免费下载即可)
2.解压后会看到如下几个文件夹
3.把java工程导入eclipse中,点击import,再选择existing project into workspace
4.导入sample文件下的JnaTest_NLPIR的java工程文件,按确定即可导入
5.在NlpirTest类下修改路径问题:
(1)我的NLRIR的路径是“E:\数据挖掘\数据挖掘课程作业(大三)\汉语分词20140928\lib\win64\NLRIR”(注意,如果你的系统是32位的,则路径设置为“汉语分词20140928\lib\win32\NLRIR”)
public interface CLibrary extends Library {
// 定义并初始化接口的静态变量
CLibrary Instance = (CLibrary) Native.loadLibrary(
"E:\\数据挖掘\\数据挖掘课程作业(大三)\\汉语分词20140928\\lib\\win64\\NLPIR", CLibrary.class);
(2)修改Data路径(本人data路径在E:\数据挖掘\ICTCLASConf)
容易出问题的地方:
1.必须建立一个新文件夹名称为“ICTCLASConf”,并把Data文件复制在此文件夹下面;
2.引用的路径是文件夹Data的上一个文件夹路径。(在这里,我的Data文件夹在“E:\数据挖掘\ICTCLASConf”下面,所以引用此路径)
3.假如你的java编码系统为gbk,则必须按照我图片上的改法,不然会出错:(因为本身这个java编码是utf-8的输出,所以必须将编码修改)
3.1在public interface CLibrary extends Library{}方法里增加一个变量如下图
3.2把init_flag的值改为如下图所示的样子。
6.最后运行调试就可以得出结果了。(有什么不懂的找我把)
最后贴出我的代码:
package code;
import java.io.UnsupportedEncodingException;
import com.sun.jna.Library;
import com.sun.jna.Native;
public class NlpirTest {
// 定义接口CLibrary,继承自com.sun.jna.Library
public interface CLibrary extends Library {
// 定义并初始化接口的静态变量
CLibrary Instance = (CLibrary) Native.loadLibrary(
"win64/NLPIR", CLibrary.class);
public int NLPIR_Init(String sDataPath, int encoding,
String sLicenceCode);
public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged);
public String NLPIR_GetKeyWords(String sLine, int nMaxKeyLimit,
boolean bWeightOut);
public String NLPIR_GetFileKeyWords(String sLine, int nMaxKeyLimit,
boolean bWeightOut);
public int NLPIR_AddUserWord(String sWord);//add by qp 2008.11.10
public int NLPIR_DelUsrWord(String sWord);//add by qp 2008.11.10
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 = "ICTCLASConf";
// String system_charset = "GBK";//GBK----0
String system_charset = "UTF-8";
int charset_type = 1;
int init_flag = CLibrary.Instance.NLPIR_Init(argu, charset_type, "0");
String nativeBytes = null;
if (0 == init_flag) {
nativeBytes = CLibrary.Instance.NLPIR_GetLastErrorMsg();
System.err.println("初始化失败!fail reason is "+nativeBytes);
return;
}
String sInput = "据悉,质检总局已将最新有关情况再次通报美方,要求美方加强对输华玉米的产地来源、运输及仓储等环节的管控措施,有效避免输华玉米被未经我国农业部安全评估并批准的转基因品系污染。";
//String nativeBytes = null;
try {
nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);
System.out.println("分词结果为: " + nativeBytes);
CLibrary.Instance.NLPIR_AddUserWord("要求美方加强对输 n");
CLibrary.Instance.NLPIR_AddUserWord("华玉米的产地来源 n");
nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);
System.out.println("增加用户词典后分词结果为: " + nativeBytes);
CLibrary.Instance.NLPIR_DelUsrWord("要求美方加强对输");
nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);
System.out.println("删除用户词典后分词结果为: " + nativeBytes);
int nCountKey = 0;
String nativeByte = CLibrary.Instance.NLPIR_GetKeyWords(sInput, 10,false);
System.out.print("关键词提取结果是:" + nativeByte);
// nativeByte = CLibrary.Instance.NLPIR_GetFileKeyWords("D:\\NLPIR\\feedback\\huawei\\5341\\5341\\产经广场\\2012\\5\\16766.txt", 10,false);
//
// System.out.print("关键词提取结果是:" + nativeByte);
//
//
//
// CLibrary.Instance.NLPIR_Exit();
} catch (Exception ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
}
}
}