2013-03-24 58 views
0

在學習Gate時,我遇到了以下問題:(GATE)如何讓Minipar玩特殊角色,如Ö,Ü,Ä?

Minipar在看到像Ö,Ü,Ä這樣的不可觀察字符時拋出異常。

例如句子「Batten病(也稱爲Spielmeyer-Vogt-Sjögren-Batten病)是一種罕見的致命性常染色體隱性遺傳性神經退行性疾病,始於兒童期。」 (來自wiki文章) Minipar在停止工作之前得到的註釋是「Batten disease(也稱爲Spielmeyer-Vogt-Sj」),它恰好在字符ö之前,所以這讓我猜測這是一個案例。值得關注,而使用門因爲相同的管道處理如微風其他幾篇文章

在郵件選項卡,它reprots:


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

回答

0

這似乎是某種編碼相關的問題,但不幸的是我不能自己做任何調試,因爲minipar解析器二進制文件不再可以從usual download page獲得 - 我得到一個很小的(小於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開發者使用它作爲它的默認編碼(如果你使用gate.exe來啓動它,那麼你通過添加一行-Dfile.encoding=ISO-8859-1或任何其他的gate.l4j.ini ),看看是否有幫助。如果是這樣,我們可以考慮向PR添加一個參數,以指定在與解析器可執行文件交換數據時使用的編碼。

相關問題