zoukankan      html  css  js  c++  java
  • ictclas4j 分词工具包 安装流程

    首先把 ictclasj解压缩,然后

    1.把 Data文件夹整个拷贝到 Eclipse项目的文件夹下,

    2.而 bin目录下的 org文件夹整个拷贝到你 Eclipse项目的 bin目录下,(将class文件存进去)

    3.把src目录下的org文件夹整个拷贝到 Eclipse项目 的src目录下。

    4.把目录中commons-lang-2.4.jar 加到项目中(右键新建folder--设置名字为LIB--直接复制jar到此文件夹--点击此jar-右键-buidpath-add 点击即可)

    3.测试分词结果

    Java代码

    import org.ictclas4j.bean.SegResult;   

    import org.ictclas4j.segment.SegTag;   

    public class TextSegmentation {   

    public static void main(String[] args) {   

    String fileContent = "中国科学院计算技术研究所在多年研究基础上," +   "耗时一年研制出了ICTCLAS汉语词法分析系统";  

    SegTag segTag = new SegTag(1);// 分词路径的数目           

    SegResult segResult = segTag.split(fileContent.trim());   

    String classifyContent = segResult.getFinalResult();

    System.out.println("分词结果 "+classifyContent);

    }

    }  

    就是这样,我们可以得到输出的结果,并且带有词性的标注。

    Java代码

    分词结果   

    中国科学院/n 计算/n 技术/n 研究所/n 在/c 多年/m 研究/n 基础/a 上/f ,/w 耗时/v 一/d 年/a 研制/v 出/q 了/u ICTCLAS/nx 汉语/n 词法/n 分析/v 系统/a   

    分词结果

    中国科学院/n 计算/n 技术/n 研究所/n 在/c 多年/m 研究/n 基础/a 上/f ,/w 耗时/v 一/d 年/a 研制/v 出/q 了/u ICTCLAS/nx 汉语/n 词法/n 分析/v 系统/a

     

    三、关于可能出现的错误  

        1.越界错误

    在Dictionary.java里面的getMaxMatch()函数里要注意加上对wis的判断语句

    if(wis != null)

     否则有时会报出越界错误

    2.关于第三点越界的问题之前的博主没有注意到

    在Dictionary.Java的findInModifyTable方法中有这么一段:

    if (mts != null && mts.size() > index) {
                
                ArrayList<WordItem> wis = mts.get(index).getWords();
    .....
    
    }

    此处需要对index进行负数的判断,应改为

    if (mts != null && mts.size() > index) {
             
                if(index < 0)
                    return result;
                
                ArrayList<WordItem> wis = mts.get(index).getWords();
    ........
    
    }

    在对大文件进行中文分词时,出现了以下的错误信息

    java.lang.ArrayIndexOutOfBoundsException: -39
           at java.util.ArrayList.get(ArrayList.java:324)
           at org.ictclas4j.bean.Dictionary.findInOriginalTable(Dictionary.java:
    422)
           at org.ictclas4j.bean.Dictionary.getFreq(Dictionary.java:632)
           at org.ictclas4j.segment.GraphGenerate.biGenerate(GraphGenerate.java:
    170)
           at org.ictclas4j.segment.Segment.split(Segment.java:81)
           at com.ictclas4j.test.MyTest.main(MyTest.java:19)
     

    经过上网查询资料以及阅读相关源代码,找到可能的出错原因:

    分词过程中出现了未能识别的字,如繁体字等

    改错方法:在Dictionary.java文件中找到findInOriginalTable()方法,将其中的

     
    1. if (res != null && wts != null) {  


    修改为

      if (res != null && wts != null &&index>=0 &&index<wts.size()) {  


    即可。

     

  • 相关阅读:
    HDU 2594 Simpsons’ Hidden Talents(辛普森一家的潜在天赋)
    HUD 2203 亲和串
    POJ 3461 Oulipo(乌力波)
    FJNU 1154 Fat Brother And His Love(胖哥与女神)
    Polygon Triangles
    Double it(水题模拟+逆向思维)
    Sphenic numbers(素数筛)
    Desktop(模拟)2016-2017 ACM Central Region of Russia Quarterfinal Programming Contest
    Weather Station(基础DP)2016-2017 ACM Central Region of Russia Quarterfinal Programming Contest
    找零钱(经典DP)
  • 原文地址:https://www.cnblogs.com/lifegoesonitself/p/3214015.html
Copyright © 2011-2022 走看看