zoukankan      html  css  js  c++  java
  • 中科院分词ICTCLAS5.0_JNI 使用方法

    1.简介

    中国科学院计算技术研究所在多年研究基础上,耗时一年研制出了基于多层隐码模型的汉语词法分析系统 ICTCLAS(Institute of Computing Technology, Chinese Lexical Analysis System),该系统的功能有:中文分词;词性标注;未登录词识别。分词正确率高达97.58%(最近的973专家组评测结果),基于角色标注的未登录词识别能取得高于90%召回率,其中中国人名的识别召回率接近98%,分词和词性标注处理速度为31.5KB/s。ICTCLAS 和计算所其他14项免费发布的成果被中外媒体广泛地报道,国内很多免费的中文分词模块都或多或少的参考过ICTCLAS的代码。

    2.下载

    下载地址:

    下载以后解压。

    解压后的目录结构:

    必要说明:

    user.lic,用户授权文件。

    3.新建Eclipse项目。

    然后将打开API文件夹下的ICTCLAS文件夹拷贝到src目录下,其它的文件夹和文件全部拷贝到工程目录下。工程结构如图所示:

    4.测试

    你可以自己新建一个测试类,也可以使用已有的测试类。

    比如Sample文件夹里有个例子:TestMain.java,你可以将它复制到Eclipse中。然后运行。就可以看到结果了。

    注意,ICTCLAS会自动生成一个ICTCLAS.log文件,查看这个文件能获取许多有用的信息。

    5.各种问题。

    [java] view plain copy
     
    1. a.Exception in thread "main" java.lang.UnsatisfiedLinkError: ICTCLAS50.ICTCLAS_Init([B)Z  
    2.     at ICTCLAS50.ICTCLAS_Init(Native Method)  
    3.     at TestMain.testICTCLAS_ParagraphProcess(TestMain.java:33)  
    4.     at TestMain.main(TestMain.java:13)  

    解决办法:

    这种情况是你把ICTCLAS50_Windows_32_JNIAPIICTCLASI3SAC目录下的类ICTCLAS50.java 没有放到包ICTCLAS.I3S.AC里。

    b.将Data文件夹和其它文件,放置到一个configure文件夹下ICTLAS不识别:

    [java] view plain copy
     
    1. Exception in thread "main" java.lang.UnsatisfiedLinkError: no ICTCLAS50 in java.library.path  
    2.     at java.lang.ClassLoader.loadLibrary(Unknown Source)  
    3.     at java.lang.Runtime.loadLibrary0(Unknown Source)  
    4.     at java.lang.System.loadLibrary(Unknown Source)  
    5.     at ICTCLAS.I3S.AC.ICTCLAS50.<clinit>(ICTCLAS50.java:26)  
    6.     at TestMain.testICTCLAS_ParagraphProcess(TestMain.java:32)  
    7.     at TestMain.main(TestMain.java:15)  

    即加载库文件和Data文件夹、用户授权文件user.lic的错误。

    解决办法:

    一种方法是:修改ICTCLAS50类和测试类的参数,指定库文件。

    [java] view plain copy
     
    1. static  
    2.     {  
    3.         String path = new File("").getAbsolutePath()+"\<span style="font-family:SimSun; line-height:25.1875px">configure</span>\ICTCLAS50.dll";  
    4. //      System.loadLibrary("ICTCLAS50");  
    5.         System.load(path);  
    6.     }  

    然后再修改TestMain类中的testICTCLAS_ParagraphProcess()方法的argus的值,告诉ICTCLAS,你改变了工程目录。

    部分代码如下:

    [java] view plain copy
     
    1. ICTCLAS50 testICTCLAS50 = new ICTCLAS50();  
    2. //          //String argu = ".";  
    3.             String argu = new File("").getAbsolutePath()+"\configure";  
    4.             //初始化  
    5.             if (testICTCLAS50.ICTCLAS_Init(argu.getBytes("GB2312")) == false)  
    6.             {  
    7.                 System.out.println("Init Fail!");  
    8.                 return;  
    9.             }  



    还有testICTCLAS_FileProcess()方法。

    修改后的工程目录:

  • 相关阅读:
    java:字符串(下)
    java字符串(上)
    Java流程控制:循环语句
    JAVA学习笔记(二十三)
    JAVA学习笔记(二十二)
    JAVA学习笔记(二十一)
    JAVA学习笔记(二十)
    JAVA学习笔记(十九)
    JAVA学习笔记(十八)
    JAVA学习笔记(十七)
  • 原文地址:https://www.cnblogs.com/liuchaogege/p/5405697.html
Copyright © 2011-2022 走看看