0

GATE用于从法语文档中提取文本。我已经在 GATE GUI 中遇到了问题,TreeTagger我通过将下面显示的行放在系统环境中而不是在 GATE 的根目录中创建文件并将下面的行放在上面来解决这个问题CygwinWindowsC:\Cygwin\bin\sh.exe;C:\cygwin\bin C:/cygwin2/bin/sh.exe;C:/cygwin2/binbuild.properties

run.shell.path: C\:\\cygwin2\\bin\\sh.exe

现在,我有我最喜欢的管道,它可以通过 GATE GUI 在法语文本上正常工作。我通过“保存应用程序状态”保存了我的管道,并且知道我想通过 NetBeans 加载它并执行它。

但是当 Netbeans 初始化 GATE 并加载我保存的管道并添加我的语料库和文档时,它找不到 POS 的 cygwin 路径。我得到了错误=193,我猜这意味着它找不到用于寻址 sh.exe 文件以供 TreeTagger 标记的 build.properties 文件路径。

这是我的代码:

public static void main(String[] args) throws Exception {

   CorpusController FrenchController;

   Gate.init();
   MainFrame.getInstance().setVisible(true);

   File GateHome = Gate.getGateHome();
   File FrenchGapp = new File(GateHome,"appTest.xgapp");
   FrenchController =   (CorpusController)PersistenceManager.loadObjectFromFile(FrenchGapp);

   Corpus corpus = Factory.newCorpus("TestCorpus");
   FrenchController.setCorpus(corpus);

   File docFile = new File("D:\\Amin\\Project\\DropBox\\Donnees\\7_doc.xml"); 
   Document doc = Factory.newDocument(docFile.toURL(), "utf-8");   //encoding

   corpus.add(doc);

   FrenchController.execute();

   corpus.clear();
} 

------------------------ 执行后 GATE 出错------------ ---

C:\GATE\plugins\Tagger_Framework\resources\TreeTagger\tree-tagger-french-gate-utf8 C:\Users\Amin\AppData\Local\Temp\tagger6897917088215914126.txt
Exception in thread "main" gate.creole.ExecutionException: java.io.IOException: Cannot run program "C:\GATE\plugins\Tagger_Framework\resources\TreeTagger\tree-tagger-french-gate-utf8": CreateProcess **error=193**, %1 is not a valid Win32 application
    at gate.taggerframework.GenericTagger.runTagger(GenericTagger.java:489)
    at gate.taggerframework.GenericTagger.execute(GenericTagger.java:245)
    at gate.util.Benchmark.executeWithBenchmarking(Benchmark.java:291)
    at gate.creole.SerialController.runComponent(SerialController.java:221)
    at gate.creole.SerialController.executeImpl(SerialController.java:153)
    at gate.creole.SerialAnalyserController.executeImpl(SerialAnalyserController.java:125)
    at gate.creole.AbstractController.execute(AbstractController.java:75)
    at secondshot.SecondShot.main(SecondShot.java:84)
Caused by: java.io.IOException: Cannot run program "C:\GATE\plugins\Tagger_Framework\resources\TreeTagger\tree-tagger-french-gate-utf8": CreateProcess error=193, %1 is not a valid Win32 application
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
    at java.lang.Runtime.exec(Runtime.java:617)
    at gate.util.ProcessManager.runProcess(ProcessManager.java:84)
    at gate.util.ProcessManager.runProcess(ProcessManager.java:66)
    at gate.taggerframework.GenericTagger.runTagger(GenericTagger.java:478)
    ... 7 more
Caused by: java.io.IOException: CreateProcess error=193, %1 is not a valid Win32 application
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:385)
    at java.lang.ProcessImpl.start(ProcessImpl.java:136)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
    ... 11 more

谢谢你的时间

4

1 回答 1

0

我认为,该build.properties文件仅在运行 GATE Developer 时是只读的。请参阅文档http://gate.ac.uk/userguide/sec:gettingstarted:sysprop

... 使用 GATE Embedded 时,您可以在调用 Gate.init() 之前设置这些属性的值 ...

在您的应用程序中,您可以shell.path在调用之前检查属性是否设置正确FrenchController.execute()。打电话过来System.getProperty("shell.path")看看...

如果不是,您可以使用设置属性

System.setProperty("shell.path", "C:\\cygwin2\\bin\\sh.exe")

在调用FrenchController.execute().

或者NetBeans,您可以按照以下答案中的说明进行设置:https ://stackoverflow.com/a/7839141/1857897

于 2014-05-26T06:42:17.487 回答