海量分词研究版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");
}
}