这是关于这个问题的。
UIMA RUTA - how to do find & replace using regular expression and groups
我正按照建议尝试设置沙发映射。我有一个带有几个AE的聚合AE,并尝试在此管道中包含2个RUTA AEs /脚本。 RUTA AEs(和相关脚本)都负责使用修饰符进行REGEXP查找和替换。第二AE取决于第一AE的输出。我必须配置修改器的第二个AE的输出视图,否则我得到一个沙发数据已经设置'例外。
实质上,我无法编织一个输出作为另一个AE的输入。
我的设置与下面类似,
_initialview --Input> (Normalizer1 RUTA AE) --Output> norm_1_out
norm_1_out --Input> (Normalizer2 RUTA AE) --Output> norm_2_out
norm_2_out --Input> (Other AE)
这里是聚合AE代码
<?xml version="1.0" encoding="UTF-8"?>
<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
<frameworkImplementation>org.apache.uima.java</frameworkImplementation>
<primitive>false</primitive>
<delegateAnalysisEngineSpecifiers>
<delegateAnalysisEngine key="NormalizerPrepStep1">
<import location="../../../ruta-annotators/desc/NormalizeNumbersEngine.xml"/>
</delegateAnalysisEngine>
<delegateAnalysisEngine key="NormalizerPrepStep2">
<import location="../../../ruta-annotators/desc/NormalizeRangesEngine.xml"/>
</delegateAnalysisEngine>
<delegateAnalysisEngine key="Normalizer">
<import location="../../../ruta-annotators/desc/NormalizerEngine.xml"/>
</delegateAnalysisEngine>
<delegateAnalysisEngine key="SimpleAnnotator">
<import location="../../../textanalyzer/desc/analysis_engine/SimpleAnnotator.xml"/>
</delegateAnalysisEngine>
</delegateAnalysisEngineSpecifiers>
<analysisEngineMetaData>
<name>RUTAAggregatePlaintextProcessor</name>
<description>Runs the complete pipeline for annotating documents in plain text format.</description>
<version/>
<vendor/>
<configurationParameters searchStrategy="language_fallback">
<configurationParameter>
<name>SegmentID</name>
<description/>
<type>String</type>
<multiValued>false</multiValued>
<mandatory>false</mandatory>
<overrides>
<parameter>SimpleAnnotator/SegmentID</parameter>
</overrides>
</configurationParameter>
</configurationParameters>
<configurationParameterSettings/>
<flowConstraints>
<fixedFlow>
<node>NormalizerPrepStep1</node>
<node>NormalizerPrepStep2</node>
<node>Normalizer</node>
<node>SimpleAnnotator</node>
</fixedFlow>
</flowConstraints>
<typePriorities>
<name>Ordering</name>
<description>For subiterator</description>
<version>1.0</version>
<priorityList>
</priorityList>
</typePriorities>
<fsIndexCollection/>
<capabilities>
<capability>
<inputs/>
<outputs/>
<inputSofas>
<sofaName>norm_1_out</sofaName>
<sofaName>norm_2_out</sofaName>
<sofaName>normalized</sofaName>
</inputSofas>
<languagesSupported/>
</capability>
</capabilities>
<operationalProperties>
<modifiesCas>true</modifiesCas>
<multipleDeploymentAllowed>true</multipleDeploymentAllowed>
<outputsNewCASes>false</outputsNewCASes>
</operationalProperties>
</analysisEngineMetaData>
<resourceManagerConfiguration/>
<sofaMappings>
<sofaMapping>
<componentKey>SimpleAnnotator</componentKey>
<aggregateSofaName>normalized</aggregateSofaName>
</sofaMapping>
<sofaMapping>
<componentKey>NormalizerPrepStep2</componentKey>
<aggregateSofaName>norm_1_out</aggregateSofaName>
</sofaMapping>
<sofaMapping>
<componentKey>Normalizer</componentKey>
<aggregateSofaName>norm_2_out</aggregateSofaName>
</sofaMapping>
</sofaMappings>
</analysisEngineDescription>
很少有事情需要注意,
由于我对UIMA和RUTA都比较新,所以不确定我是做错了什么,或者是否存在我遇到的限制。
BTW,我使用的是RUTA 2.1.0
由于
答案 0 :(得分:0)
我在你的例子中注意到的第一件事是你必须在你的AAE中指定输出沙发。这些都是在AAE中创建的沙发,例如,其中一个组件。 然后缺少沙发映射。您必须将AE的输出视图与其他AE的输入视图相连接。在您的示例中,我只看到默认的输入视图。
我创建了一个单元测试,可以作为此任务的示例。
测试中使用的资源(描述符)位于:https://svn.apache.org/repos/asf/uima/ruta/trunk/ruta-core/src/test/resources/org/apache/uima/ruta/engine
请注意,我删除了ruta描述符中的绝对路径,并修改了导入脚本的命名空间。它们现在由类路径加载以进行测试,而不是使用绝对路径。
测试调用聚合分析引擎AAE.xml,它导入并映射五个分析引擎:
CW{->REPLACE("CW")};
CW.ruta SW{->REPLACE("SW")};
SW.ruta DECLARE CwSw; ("CW" "SW"){-> CwSw};
Simple.ruta aggreagted分析引擎定义了三个视图:global1(输入),global2(输出)和global3(输出)。组件的沙发映射如下:
global1 - &gt; [CWEngine,ModiferCW] - &gt; global2 - &gt; [SWEngine,ModiferSW] - &gt; global3-&GT; [SimpleEngine]
鉴于视图global1中的文本Peter is tired.
,聚合分析引擎会创建两个新视图,其中包含文本CW SW SW.
的视图global3和一个类型为Simple.CwSw
的注释。