(GATE)如何让Minipar玩Ö,Ü,Ä等特殊角色?

时间:2013-03-24 13:01:08

标签: special-characters gate

在学习Gate时,我遇到了以下问题:

Minipar在看到Ö,Ü,Ä等非常见的角色时会抛出异常。

例如在中,“Batten disease(也称为Spielmeyer-Vogt-Sjögren-Batten病)是一种罕见的,致命的常染色体隐性遗传性神经退行性疾病,始于儿童时期。” (来自维基文章) Minipar在停止工作之前得到的注释是“Batten disease(也称为Spielmeyer-Vogt-Sj”,正好在角色ö之前,所以这让我猜测这是一个值得关注的案例。使用Gate。因为同一个管道像微风一样处理了其他几篇文章。

在“消息”选项卡中,它重新打印:


gate.util.InvalidOffsetException
    at gate.annotation.AnnotationSetImpl.getNodes(AnnotationSetImpl.java:773)
    at gate.annotation.AnnotationSetImpl.add(AnnotationSetImpl.java:802)
    at minipar.Minipar.runMinipar(Minipar.java:419)
    at minipar.Minipar.execute(Minipar.java:527)
    at gate.util.Benchmark.executeWithBenchmarking(Benchmark.java:291)
    at gate.creole.ConditionalSerialController.runComponent(ConditionalSerialController.java:154)
    at gate.creole.SerialController.executeImpl(SerialController.java:153)
    at gate.creole.ConditionalSerialAnalyserController.executeImpl(ConditionalSerialAnalyserController.java:129)
    at gate.creole.AbstractController.execute(AbstractController.java:75)
    at gate.util.Benchmark.executeWithBenchmarking(Benchmark.java:291)
    at gate.gui.SerialControllerEditor$RunAction$1.run(SerialControllerEditor.java:1619)
    at java.lang.Thread.run(Unknown Source)
gate.creole.ExecutionException: gate.util.InvalidOffsetException
    at minipar.Minipar.runMinipar(Minipar.java:491)
    at minipar.Minipar.execute(Minipar.java:527)
    at gate.util.Benchmark.executeWithBenchmarking(Benchmark.java:291)
    at gate.creole.ConditionalSerialController.runComponent(ConditionalSerialController.java:154)
    at gate.creole.SerialController.executeImpl(SerialController.java:153)
    at gate.creole.ConditionalSerialAnalyserController.executeImpl(ConditionalSerialAnalyserController.java:129)
    at gate.creole.AbstractController.execute(AbstractController.java:75)
    at gate.util.Benchmark.executeWithBenchmarking(Benchmark.java:291)
    at gate.gui.SerialControllerEditor$RunAction$1.run(SerialControllerEditor.java:1619)
    at java.lang.Thread.run(Unknown Source)
Caused by: gate.util.InvalidOffsetException
    at gate.annotation.AnnotationSetImpl.getNodes(AnnotationSetImpl.java:773)
    at gate.annotation.AnnotationSetImpl.add(AnnotationSetImpl.java:802)
    at minipar.Minipar.runMinipar(Minipar.java:419)
    ... 9 more
gate.creole.ExecutionException: Document doesn't have sentence annotations. please run tokenizer, sentence splitter and then Minipar
    at minipar.Minipar.saveGateSentences(Minipar.java:194)
    at minipar.Minipar.execute(Minipar.java:525)
    at gate.util.Benchmark.executeWithBenchmarking(Benchmark.java:291)
    at gate.creole.ConditionalSerialController.runComponent(ConditionalSerialController.java:154)
    at gate.creole.SerialController.executeImpl(SerialController.java:153)
    at gate.creole.ConditionalSerialAnalyserController.executeImpl(ConditionalSerialAnalyserController.java:129)
    at gate.creole.AbstractController.execute(AbstractController.java:75)
    at gate.util.Benchmark.executeWithBenchmarking(Benchmark.java:291)
    at gate.gui.SerialControllerEditor$RunAction$1.run(SerialControllerEditor.java:1619)
    at java.lang.Thread.run(Unknown Source)

我要再次感谢伊恩的热情支持。

马特

1 个答案:

答案 0 :(得分:0)

这似乎是某种编码相关的问题,但不幸的是我无法自己进行任何调试,因为usual download page似乎不再提供minipar解析器二进制文件 - 我得到一个小的(小于2kB)灰度JPEG图像而不是多MB .tgz。

有一些事情你可以试试我的头脑。 GATE Minipar包装器为解析器写入输入文件,并使用您正在运行的系统上的默认编码读取解析器的输出。我的猜测是解析器以不同的编码产生输出(可能与原始训练数据的编码有关?)。

GATE包装器将其输入写入临时文件,只要您让GATE Developer在后台运行(临时文件在Developer退出时删除),您应该能够在临时目录中找到该文件。我会尝试从命令行在该文件上运行minipar-windows.exe,看看输出是什么样的

C:\path\to\minipar-windows.exe -p C:\path\to\minipar\data -file GATESentencesNNNNNN.txt

输出可能会为您提供有关失败的线索。如果它看起来正确并且您可以确定它尝试使用的编码,您可以将GATE Developer设置为使用它作为其默认编码(如果您使用gate.exe启动它,那么您可以通过添加一行来执行此操作{ {1}}或-Dfile.encoding=ISO-8859-1的任何内容),看看是否有帮助。如果是这样,我们可以考虑向PR添加一个参数,以指定在与解析器可执行文件交换数据时使用的编码。