2
我有一個具有FSArray類型特徵的註釋。該功能應包含一個字符串列表。從UIMA FSArray檢索值
FSArray fsArray = (FSArray)annotation.getFeatureValue(fe);
如何從FSArray獲取字符串列表?
通過fsArray.toStringArray()循環只返回字符串「FSArray」而不是實際值。
我有一個具有FSArray類型特徵的註釋。該功能應包含一個字符串列表。從UIMA FSArray檢索值
FSArray fsArray = (FSArray)annotation.getFeatureValue(fe);
如何從FSArray獲取字符串列表?
通過fsArray.toStringArray()循環只返回字符串「FSArray」而不是實際值。
有哪些是重要的內UIMA從FSArray檢索值時,瞭解一些重要概念:
讓我們說,我們有以下兩種類型:
,我們有下面的句子:
Car A and car B are both blue.
讓我們假設以前的UIMA舞臺有一個nnotated使用Type com.abcColoredCar全句如下:
begin: 0
end: 24
color: "blue"
cars: FSArray
讓我們也假設我們從類型定義該功能的汽車是com.abcCar的FSArray已知的,以及汽車包含下列值:
begin: 4
end: 5
manufacturer: "Volvo"
begin: 14
end: 15
manufacturer: "Toyota"
以下代碼將演示如何檢索汽車FSArray的製造商屬性/功能。
public void process(JCas aJCas) throws AnalysisEngineProcessException {
List<TOP> tops = new ArrayList<TOP>(JCasUtil.selectAll(aJCas));
List<String> manufacturers = new ArrayList<>();
for (TOP t : tops) {
if (t.getType().getName().endsWith("ColoredCar")) {
Feature carsFeature = t.getType().getFeatureByBaseName("cars");
FSArray fsArray = (FSArray) t.getFeatureValue(carsFeature);
FeatureStructure[] arrayStructures = fsArray.toArray();
for (int i = 0; i < arrayStructures.length; i++) {
FeatureStructure fs = arrayStructures[i];
Feature manufacturerFeature = fs.getType().getFeatureByBaseName("cars");
manufacturers.add(fs.getStringValue(manufacturerFeature));
}
}
}
}
要深入瞭解這一點,最好了解Type系統,堆和索引存儲庫如何在CAS中工作。
FSArray的元素有哪些類型? – rec