• 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()) {  


    即可。

     

  • 相关阅读:
    android面试(4)-Broadcast广播篇_pgg_cold的博客-CSDN博客_android 广播 面试
    Android面试必问的Activity,初阶,中高阶问法,你都掌握了吗?(要求熟读并背诵全文)_chuhe1989的博客-CSDN博客
    当面试官要你说一下Activity的启动模式时,怎么回答最合适?标准答案在这里
    炼狱难度!腾讯Android高级岗:为什么 Activity.finish() 之后 10s 才 onDestroy ?_chuhe1989的博客-CSDN博客
    android面试(2)-Activity篇_pgg_cold的博客-CSDN博客
    android面试(10)-IntentService_pgg_cold的博客-CSDN博客_android intentservice使用
    android面试(3)-Service篇_pgg_cold的博客-CSDN博客
    Activity 的 36 大难点,你会几个?「深度好文」
    RecyclerView的回收复用机制
    详解Android RecyclerView
  • 原文地址:https://www.cnblogs.com/lifegoesonitself/p/3214015.html
Copyright © 2020-2023  润新知