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();
}
}
}