海量分詞研究版java接口
import java.io.*;
import java.util.*;
public class fc {
//初始化海量分詞系統,加載分詞用數據。
public static synchronized native boolean HLSplitInit();
//卸載海量自動分詞系統,釋放分詞系統所佔資源
public static synchronized native void HLFreeSplit();
//分詞:用到的接口有:
//HANDLE HLOpenSplit() 創建自動中文分詞結果句柄。
//bool HLSplitWord(HANDLE hHandle , LPCTSTR lpText , int iExtraCalcFlag=0) 對一段字符串分詞
//int HLGetWordCnt(HANDLE hHandle) 獲得分詞結果的個數
//SHLSegWord* HLGetWordAt(HANDLE hHandle , int nIndex) 獲得指定的分詞結果
//void HLCloseSplit(HANDLE hHandle) 關閉海量分詞句柄
public synchronized native String seg(byte[] text, int nWordPos,
int nKeyWords, int nFinger, int nForSearcher);
//0=====>沒有附加計算的分詞結果 int nWordPos == 0
//1=====>結果加註詞性 int nWordPos == 1
//2=====>顯示關鍵詞的相關信息 int nKeyWords == 1
//3=====>顯示語義指紋 int nFinger == 1
//4=====>面向檢索的分詞結果 int nForSearcher == 1
//裝載用戶自定義詞典
public static synchronized native boolean HLOpenUsrDict(byte[] fileName);
//卸載用戶自定義詞典
public static synchronized native void HLFreeUsrDict();
public fc() {
fc.HLSplitInit();
}
public static void main(String[] args) throws IOException {
fc fcinstance = new fc();
String s = "", segstr = "";
try {
FileReader fr = new FileReader("1001.txt");
BufferedReader br = new BufferedReader(fr);
while ((s = br.readLine()) != null) {
segstr += s + "/n";
}
fr.close();
br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
//System.out.println("result:"+fc.HLSplitInit());
long start = System.currentTimeMillis();
String result = fcinstance.seg(segstr.getBytes(), 1, 1, 1, 0);
String[] counts = fcinstance.seg(segstr.getBytes(),0,0,0,0).split(" ");
int pp = 0;
for(int i = 0; i<counts.length; i++){
if(counts[i].equalsIgnoreCase("人工智能"))
pp++;
}
System.out.println(pp);
long end = System.currentTimeMillis();
fcinstance.HLFreeSplit();
System.out.println("/n用時:" +(end - start)+"ms/n"+ result);
}
static {
System.loadLibrary("fc");
}
}