Special characters (门)如何让Minipar与像Ö;这样的特殊角色一起玩ÜÄ;?

Special characters (门)如何让Minipar与像Ö;这样的特殊角色一起玩ÜÄ;?,special-characters,gate,Special Characters,Gate,在学习Gate时,我遇到了以下问题: 当Minipar看到像Ö、Ü、Ä这样的非角色时,它抛出异常 例如,“Batten病(也称为Spielmeyer-Vogt-Sjögren-Batten病)是一种罕见的、致命的常染色体隐性神经退行性疾病,始于儿童期。” Minipar在停止工作之前得到的注释是“Batten disease”(也称为Spielmeyer Vogt Sj),它正好位于字符ö之前,因此我猜测这是使用Gate时值得注意的一个案例。因为同一管道轻松地处理了其他几篇文章 在“消息”选项卡

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

当Minipar看到像Ö、Ü、Ä这样的非角色时,它抛出异常

例如,“Batten病(也称为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)
我要再次感谢伊恩对我的热情支持


Matt

这似乎是某种与编码相关的问题,但不幸的是,我自己无法进行任何调试,因为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开发人员将其作为默认编码(如果你使用<代码>门.exe <代码>来启动它,那么你可以通过添加一行“代码> >dFord.Cyto= ISO-859-1 或任何对<代码>门.L4J.ini”/代码>,看看是否有帮助。如果是这样,我们可以考虑在PR中添加一个参数来指定在与解析器可执行文件交换数据时使用的编码。