PTBTokenizer在处理这个Unicode字符(U+2063,十进制:8291)时崩溃了,这是一个不可见的逗号/分隔符,并抛出了以下错误:
无法标记: (U+2063,十进制:8291)
异常在线程“main” java.lang.ArithmeticException:整数溢出
at java.lang.Math.toIntExact(Math.java:1011)
at edu.stanford.nlp.process.PTBLexer.getNext(PTBLexer.java)
at edu.stanford.nlp.process.PTBLexer.next(PTBLexer.java)
at edu.stanford.nlp.process.PTBTokenizer.getNext(PTBTokenizer.java:301)
at edu.stanford.nlp.process.PTBTokenizer.getNext(PTBTokenizer.java:185)
at edu.stanford.nlp.process.AbstractTokenizer.hasNext(AbstractTokenizer.java:69)
at edu.stanford.nlp.process.PTBTokenizer.tokReader(PTBTokenizer.java:493)
at edu.stanford.nlp.process.PTBTokenizer.tok(PTBTokenizer.java:464)
at edu.stanford.nlp.process.PTBTokenizer.main(PTBTokenizer.java:890)
还尝试使用-filter \u2063并抛出相同的错误
3条答案
按热度按时间ybzsozfc1#
我认为这两个问题是独立的,只是错误以这种方式打印的巧合。
CoreNLP/src/edu/stanford/nlp/process/PTBLexer.flex
第483行 in f05cb54
| | /** 生成下一个标记。 |
kse8i1jr2#
我建议只对小于2GB的文件进行分词,直到我们找到解决方案。
5hcedyr03#
关于不可见的分隔符:
请注意,Chrome将不可见的分隔符转换为可见的空格,因此在这里粘贴示例文件相当困难。您可以获得所需的任意数量的不可见分隔符 here ,尽管如此