Johnnylan / fudannlp

Automatically exported from code.google.com/p/fudannlp
0 stars 0 forks source link

NERTagger处理以空格开头的文本时异常 #15

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
版本:1.0

重现步骤:
1. 构建一个文本,以空格(半角或全角)开头。
2. 创建NERTagger对象,装载模型。
3. 用这个NERTagger的tag方法处理这个文本。

实际结果:
tag函数返回一个空的哈希,没有抛出异常;但是标准错误流��
�出了如下异常栈:
java.lang.ArrayIndexOutOfBoundsException: -1
    at edu.fudan.ml.inf.struct.LinearViterbi.getPath(LinearViterbi.java:100)
    at edu.fudan.ml.inf.struct.AbstractViterbi.getBest(AbstractViterbi.java:21)
    at edu.fudan.ml.classifier.Linear.predict(Linear.java:42)
    at edu.fudan.nlp.tag.NERTagger.tag(NERTagger.java:32)
    at com.github.wks.tdtutils.segment.FudanNER.tag(FudanNER.java:20)
    at nerdiagnose.NerDiagnose.main(NerDiagnose.java:22)

期望的结果:
1. 前导空格应该被忽略。
2. 
可以规定NERTagger必须处理某些规范的句子或者篇章,但是如��
�输入是非法的,那么:
   1. 如果可以容错,那么应该给出正确结果,不应该显示异常。如果要记录,应该使用日志记录(如slf4j等框架)。
   2. 如果这个错误是致命的,那么这个异常就应当立即抛出,程序不应该继续执行。

总之,在catch中用e.printStackTrace()来处理异常,然后让程序继��
�执行,是不可靠的。

Original issue reported on code.google.com by wks1...@gmail.com on 7 Sep 2011 at 2:51

GoogleCodeExporter commented 8 years ago
多谢你的建议,应该如你所说的那样处理错误。
之前考虑过log4j,但是觉得作为类库强制使用log4j不太好。回�
��研究下slf4j。

Original comment by xipeng...@gmail.com on 7 Sep 2011 at 6:34