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,出现异常,改成123都没有问题。大于4就不行了。

出错的代码是:

for (int i = startPos; i < startPos + length && sns != null; i++) { 
SegNode sn = sns.get(i); 

 

下标越界了。然后我在for里加上条件 i<sns.size(); 就没有问题。但因为我没有仔细阅读代码,不知道这样的修改会不会带来新的bug

 

 

 

猜你喜欢

转载自summerbell.iteye.com/blog/1312515