海量分詞研究版java接口

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章