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

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值