【问题标题】:Type "Sentence" not defined in this script/block in UIMA Ruta在 UIMA Ruta 的此脚本/块中输入未定义的“句子”
【发布时间】:2018-05-27 12:02:39
【问题描述】:

我得到了一个

键入此脚本/块中未定义的“句子”!

在“ma​​in.ruta”中写入“Sentence”块时出错。

这是我的 uima ruta 脚本:

PACKAGE com.example.test;
DECLARE ApplyBusinessCardKeyword;
WORDLIST ApplicationKeywordList = 'application.txt';
Sentence{->MARKFAST(ApplyBusinessCardKeyword, ApplicationKeywordList)};

“段落”注释也会发生这种情况。 “文档”等其他注释工作正常。

有什么我可能做错的想法吗?

我正在使用最新的 UIMA Workbench (2.6.1) 和 Runtime (2.10.2)。

这是完整的错误堆栈:

Dec 13, 2017 5:02:25 PM org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl callAnalysisComponentProcess(434)
SEVERE: Exception occurred
org.apache.uima.analysis_engine.AnalysisEngineProcessException: Annotator processing failed.    
    at org.apache.uima.ruta.engine.RutaEngine.process(RutaEngine.java:563)
    at org.apache.uima.analysis_component.JCasAnnotator_ImplBase.process(JCasAnnotator_ImplBase.java:48)
    at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:401)
    at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.processAndOutputNewCASes(PrimitiveAnalysisEngine_impl.java:318)
    at org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.process(AnalysisEngineImplBase.java:269)
    at org.apache.uima.ruta.ide.launching.RutaLauncher.processFile(RutaLauncher.java:242)
    at org.apache.uima.ruta.ide.launching.RutaLauncher.main(RutaLauncher.java:191)
Caused by: java.lang.IllegalArgumentException: Not able to resolve annotation/type expression: Sentence
    at org.apache.uima.ruta.expression.MatchReference.resolve(MatchReference.java:132)
    at org.apache.uima.ruta.expression.MatchReference.getAnnotationExpression(MatchReference.java:173)
    at org.apache.uima.ruta.expression.AnnotationTypeExpression.initialize(AnnotationTypeExpression.java:59)
    at org.apache.uima.ruta.expression.AnnotationTypeExpression.getType(AnnotationTypeExpression.java:152)
    at org.apache.uima.ruta.rule.RutaAnnotationTypeMatcher.getMatchingAnnotations(RutaAnnotationTypeMatcher.java:55)
    at org.apache.uima.ruta.rule.RutaRuleElement.getAnchors(RutaRuleElement.java:51)
    at org.apache.uima.ruta.rule.RutaRuleElement.startMatch(RutaRuleElement.java:59)
    at org.apache.uima.ruta.rule.ComposedRuleElement.startMatch(ComposedRuleElement.java:76)
    at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:63)
    at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:54)
    at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:36)
    at org.apache.uima.ruta.block.RutaScriptBlock.apply(RutaScriptBlock.java:67)
    at org.apache.uima.ruta.RutaModule.apply(RutaModule.java:56)
    at org.apache.uima.ruta.engine.RutaEngine.process(RutaEngine.java:561)
    ... 6 more

【问题讨论】:

    标签: uima ruta


    【解决方案1】:

    我知道这是一个非常古老的 Q,但除了创建自己的 Q 之外,还有另一种方法,您可以加载并使用第三方注释器来为您完成它。

    IMPORT PACKAGE de.tudarmstadt.ukp.dkpro.core.api.lexmorph.type.pos
        FROM desc.type.POS AS pos;
    IMPORT de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.Token
        FROM desc.type.LexicalUnits_customized AS token;
    IMPORT de.tudarmstadt.ukp.dkpro.core.api.metadata.type.TagsetDescription
        FROM desc.type.metadata;
    
    UIMAFIT de.tudarmstadt.ukp.dkpro.core.opennlp.OpenNlpSegmenter;
    UIMAFIT de.tudarmstadt.ukp.dkpro.core.tokit.ParagraphSplitter;
    UIMAFIT de.tudarmstadt.ukp.dkpro.core.opennlp.OpenNlpPosTagger;
    
    uima.tcas.DocumentAnnotation{-CONTAINS(pos.POS)} -> {
        uima.tcas.DocumentAnnotation{-> SETFEATURE("language", "en")};
    EXEC(OpenNlpSegmenter);
    EXEC(ParagraphSplitter);
    EXEC(OpenNlpPosTagger);
    };
    

    【讨论】:

      【解决方案2】:

      据我所知,您需要创建自己的规则来注释句子和段落,而从您的示例来看,您并没有这样做。

      查看文档https://uima.apache.org/d/ruta-current/tools.ruta.book.html#ugr.tools.ruta.language.seeding中的此链接,它包含 RUTA 引擎的基本注释

      这个创建句子的例子取自文档

      DECLARE Sentence; PERIOD #{-> MARK(Sentence)} PERIOD;

      对于段落,它有点棘手,如果您检查文档,您会注意到它们使用一些属性来检查它(例如,粗体),您需要创建自己的规则来查找注释它们

      【讨论】:

      • 谢谢,我最终按照你的建议做了。我只是认为“句子”和“段落”嵌入在 UIMA 注释模式中,因为文档让我相信。我还借助 BREAK 注释创建了“段落”注释。如果 24 小时内没有其他答案建议自动嵌入这些(额外)注释的方法,我将接受您的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多