• 针对中科院java接口的用法和问题


    1.下载附加的中科院分词工具包(要下载的到我的博客里面免费下载就可以)

     

    2.解压后会看到例如以下几个目录

     

    3.把java工程导入eclipse中。点击import。再选择existing project into workspace


    4.导入sample文件下的JnaTest_NLPIR的javaproject文件,按确定就可以导入


    5.在NlpirTest类下改动路径问题:

    (1)我的NLRIR的路径是“E:数据挖掘数据挖掘课程作业(大三)汉语分词20140928libwin64NLRIR”(注意,假设你的系统是32位的。则路径设置为“汉语分词20140928libwin32NLRIR”)

    public interface CLibrary extends Library {

    // 定义并初始化接口的静态变量

    CLibrary Instance = (CLibrary) Native.loadLibrary(

    "E:\数据挖掘\数据挖掘课程作业(大三)\汉语分词20140928\lib\win64\NLPIR", CLibrary.class);

    (2)改动Data路径(本人data路径在E:数据挖掘ICTCLASConf)

     

    easy出问题的地方:

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



  • 相关阅读:
    全文搜索引擎 Elasticsearch 入门教程
    什么是网络爬虫?
    如何更高效的使用谷歌解决问题
    python内置函数(2)-递归与迭代
    python内置函数(1)
    Life is short, you need Python
    统计单词个数及词频(C++实现)
    计算城市间的球面距离(C++实现)
    C++实现树的基本操作,界面友好,操作方便,运行流畅,运用模板
    C++,利用链式栈实现括号匹配,界面友好,操作方便,运行流畅
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7258277.html
Copyright © 2020-2023  润新知