本文主要是介绍Ictclas的一个bug(转),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
SegTag tag=new SegTag(4);
String str="在最新的研究中,美国威斯康星大学麦迪逊分校的Brad Singer和加州州立工业大学的Kenneth Hoffman分析了来自塔希提岛(位于南太平洋)和德国西部的古代熔岩流(lava flow),以研究地球磁场过去的模式。";
System.out.println(str);
SegResult res=tag.split(str);
System.out.println(res.getFinalResult()); Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 8, Size: 8
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at org.ictclas4j.segment.PosTagger.computePossibility(PosTagger.java: 723)
at org.ictclas4j.segment.PosTagger.placeRecognize(PosTagger.java:594)
at org.ictclas4j.segment.PosTagger.recognition(PosTagger.java:82)
at org.ictclas4j.segment.SegTag.split(SegTag.java:92)
at forumIndexer.test.main(test.java:31)
如果改成SegTag tag=new SegTag(1)就没有问题。SegTag的参数segPathCount好像是候选的路径数量。我原来改成了10,出现异常,改成1,2,3都没有问题。大于4就不行了。
出错的代码是:
for (int i = startPos; i < startPos + length && sns != null; i++) {
SegNode sn = sns.get(i);
下标越界了。然后我在for里加上条件 i<sns.size(); 就没有问题。但因为我没有仔细阅读代码,不知道这样的修改会不会带来新的bug。
这篇关于Ictclas的一个bug(转)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!