Author: tommaso
Date: Thu Feb 25 08:56:12 2010
New Revision: 916188
URL: http://svn.apache.org/viewvc?rev=916188&view=rev
Log:
[CLEREZZA-124] - refactoring and adding some functionalities exposed using
AlchemyAPI Annotator
Added:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/ExternalServicesFacade.java
(with props)
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/FeatureStructureNotFoundException.java
(with props)
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAUtilsTest.java
(with props)
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/AEProvider.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAExecutor.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAUtils.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/ExecutionWithoutResultsException.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/NotSingletonFeatureStructureException.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAExecutorTest.java
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/AEProvider.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/AEProvider.java?rev=916188&r1=916187&r2=916188&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/AEProvider.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/AEProvider.java
Thu Feb 25 08:56:12 2010
@@ -1,6 +1,5 @@
package org.apache.clerezza.uima.utils;
-
import java.net.URL;
import org.apache.uima.UIMAFramework;
@@ -12,22 +11,43 @@
/**
* provide the AnalysisEngine using the default descriptor or using a custom
descriptor (absolute)
* path
- *
+ *
* @author tommaso
- *
+ *
*/
public class AEProvider {
- private static final String defaultXMLPath = "ExtServicesAE.xml";
+ private static String defaultXMLPath;
+
+ public AEProvider() {
+ defaultXMLPath = "ExtServicesAE.xml";
+ }
+
+ public AEProvider(String xmlDescriptorPath) {
+ defaultXMLPath = xmlDescriptorPath;
+ }
public String getDefaultXMLPath() {
return defaultXMLPath;
}
+ /**
+ * get an Analysis Engine using the default path (specified in constructor)
+ *
+ * @return
+ * @throws ResourceInitializationException
+ */
public AnalysisEngine getDefaultAE() throws ResourceInitializationException {
- return getAE(defaultXMLPath);
+ return getAE(defaultXMLPath);
}
+ /**
+ * get an Analysis Engine from a different descriptor path
+ *
+ * @param filePath
+ * @return
+ * @throws ResourceInitializationException
+ */
public AnalysisEngine getAE(String filePath) throws
ResourceInitializationException {
AnalysisEngine ae = null;
// get Resource Specifier from XML file
Added:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/ExternalServicesFacade.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/ExternalServicesFacade.java?rev=916188&view=auto
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/ExternalServicesFacade.java
(added)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/ExternalServicesFacade.java
Thu Feb 25 08:56:12 2010
@@ -0,0 +1,76 @@
+package org.apache.clerezza.uima.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.uima.UIMAException;
+import org.apache.uima.alchemy.ts.keywords.KeywordFS;
+import org.apache.uima.alchemy.ts.language.LanguageFS;
+import org.apache.uima.cas.FeatureStructure;
+import org.apache.uima.jcas.JCas;
+
+/**
+ * Facade for querying UIMA external services
+ *
+ * @author tommaso
+ *
+ */
+public class ExternalServicesFacade {
+
+ private UIMAExecutor uimaExecutor;
+
+ public ExternalServicesFacade() {
+ this.uimaExecutor = new UIMAExecutor("ExtServicesAE.xml").withResults();
+ }
+
+ public List<String> getTags(String document) throws UIMAException {
+
+ List<String> tags = null;
+
+ try {
+ // analyze the document
+ uimaExecutor.analyzeDocument(document);
+
+ tags = new ArrayList<String>();
+
+ // get execution results
+ JCas jcas = uimaExecutor.getResults();
+
+ // get AlchemyAPI keywords extracted using UIMA
+ List<FeatureStructure> keywords =
UIMAUtils.getAllFSofType(KeywordFS.type, jcas);
+
+ for (FeatureStructure keywordFS : keywords) {
+
tags.add(keywordFS.getStringValue(keywordFS.getType().getFeatureByBaseName("text")));
+ }
+ } catch (Exception e) {
+ throw new UIMAException(e);
+ }
+
+ return tags;
+ }
+
+ public String getLanguage(String document) throws UIMAException {
+
+ String language = null;
+
+ try {
+
+ // analyze the document
+ uimaExecutor.analyzeDocument(document);
+
+ // get execution results
+ JCas jcas = uimaExecutor.getResults();
+
+ // extract language Feature Structure using AlchemyAPI Annotator
+ FeatureStructure languageFS =
UIMAUtils.getSingletonFeatureStructure(LanguageFS.type, jcas);
+
+ language =
languageFS.getStringValue(languageFS.getType().getFeatureByBaseName("text"));
+
+ } catch (Exception e) {
+ throw new UIMAException(e);
+ }
+
+ return language;
+ }
+
+}
Propchange:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/ExternalServicesFacade.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAExecutor.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAExecutor.java?rev=916188&r1=916187&r2=916188&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAExecutor.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAExecutor.java
Thu Feb 25 08:56:12 2010
@@ -14,14 +14,21 @@
*/
public class UIMAExecutor {
- private transient final AEProvider aeProvider = new AEProvider();
+ private transient final AEProvider aeProvider;
private boolean withResults;
private JCas results;
- public UIMAExecutor() {
+ @SuppressWarnings("unused")
+ private UIMAExecutor() {
+ // cannot instantiate without arguments
+ aeProvider = null;
+ }
+
+ public UIMAExecutor(String xmlDescriptorPath) {
withResults = false;
+ aeProvider = new AEProvider(xmlDescriptorPath);
}
public UIMAExecutor withResults() {
@@ -29,10 +36,23 @@
return this;
}
+ /**
+ * analyze a text document using with this executor
+ *
+ * @param doc
+ * @throws AnalysisEngineProcessException
+ */
public void analyzeDocument(String doc) throws
AnalysisEngineProcessException {
analyzeDocument(doc, aeProvider.getDefaultXMLPath());
}
+ /**
+ * analyze a text document specifying a different Analysis Engine descriptor
path
+ *
+ * @param doc
+ * @param xmlPath
+ * @throws AnalysisEngineProcessException
+ */
public void analyzeDocument(String doc, String xmlPath) throws
AnalysisEngineProcessException {
try {
this.executeAE(aeProvider.getAE(xmlPath), doc);
@@ -66,7 +86,7 @@
throw new ExecutionWithoutResultsException();
return results;
}
-
+
private void setResults(JCas jcas) {
this.results = jcas;
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAUtils.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAUtils.java?rev=916188&r1=916187&r2=916188&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAUtils.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/UIMAUtils.java
Thu Feb 25 08:56:12 2010
@@ -3,6 +3,7 @@
import java.util.ArrayList;
import java.util.List;
+import
org.apache.clerezza.uima.utils.exception.FeatureStructureNotFoundException;
import
org.apache.clerezza.uima.utils.exception.NotSingletonFeatureStructureException;
import org.apache.uima.cas.FSIterator;
import org.apache.uima.cas.FeatureStructure;
@@ -10,26 +11,38 @@
/**
* Utilities for managing UIMA data and features
+ *
* @author tommaso
- *
+ *
*/
public class UIMAUtils {
-
- public static List<FeatureStructure> getAllFSofType(int type,JCas cas) {
+
+ public static List<FeatureStructure> getAllFSofType(int type, JCas cas)
+ throws FeatureStructureNotFoundException {
List<FeatureStructure> featureStructures = new
ArrayList<FeatureStructure>();
- for (FSIterator<FeatureStructure> it =
cas.getFSIndexRepository().getAllIndexedFS(cas.getCasType(type));
it.hasNext();) {
+ for (FSIterator<FeatureStructure> it =
cas.getFSIndexRepository().getAllIndexedFS(
+ cas.getCasType(type)); it.hasNext();) {
featureStructures.add(it.next());
}
+
+ if (featureStructures.isEmpty())
+ throw new FeatureStructureNotFoundException();
return featureStructures;
}
- public static FeatureStructure getSingletonFeatureStructure(int type, JCas
cas) throws NotSingletonFeatureStructureException {
+ public static FeatureStructure getSingletonFeatureStructure(int type, JCas
cas)
+ throws NotSingletonFeatureStructureException,
FeatureStructureNotFoundException {
FeatureStructure featureStructure = null;
- for (FSIterator<FeatureStructure> it =
cas.getFSIndexRepository().getAllIndexedFS(cas.getCasType(type));
it.hasNext();) {
+ for (FSIterator<FeatureStructure> it =
cas.getFSIndexRepository().getAllIndexedFS(
+ cas.getCasType(type)); it.hasNext();) {
featureStructure = it.next();
if (it.hasNext())
throw new NotSingletonFeatureStructureException();
}
+
+ if (featureStructure == null)
+ throw new FeatureStructureNotFoundException();
+
return featureStructure;
}
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/ExecutionWithoutResultsException.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/ExecutionWithoutResultsException.java?rev=916188&r1=916187&r2=916188&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/ExecutionWithoutResultsException.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/ExecutionWithoutResultsException.java
Thu Feb 25 08:56:12 2010
@@ -6,7 +6,7 @@
*
*/
private static final long serialVersionUID = -3001462019532255319L;
-
+
public ExecutionWithoutResultsException() {
super();
}
Added:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/FeatureStructureNotFoundException.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/FeatureStructureNotFoundException.java?rev=916188&view=auto
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/FeatureStructureNotFoundException.java
(added)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/FeatureStructureNotFoundException.java
Thu Feb 25 08:56:12 2010
@@ -0,0 +1,19 @@
+package org.apache.clerezza.uima.utils.exception;
+
+/**
+ *
+ * @author tommaso
+ *
+ */
+public class FeatureStructureNotFoundException extends Exception {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -11488382420562373L;
+
+ public FeatureStructureNotFoundException() {
+ super();
+ }
+
+}
Propchange:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/FeatureStructureNotFoundException.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/NotSingletonFeatureStructureException.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/NotSingletonFeatureStructureException.java?rev=916188&r1=916187&r2=916188&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/NotSingletonFeatureStructureException.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/main/java/org/apache/clerezza/uima/utils/exception/NotSingletonFeatureStructureException.java
Thu Feb 25 08:56:12 2010
@@ -6,7 +6,7 @@
*
*/
private static final long serialVersionUID = -5226914034672596670L;
-
+
public NotSingletonFeatureStructureException() {
super();
}
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAExecutorTest.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAExecutorTest.java?rev=916188&r1=916187&r2=916188&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAExecutorTest.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAExecutorTest.java
Thu Feb 25 08:56:12 2010
@@ -15,7 +15,7 @@
@Test
public void testDefaultConstructor() {
try {
- UIMAExecutor uimaExecutor = new UIMAExecutor();
+ UIMAExecutor uimaExecutor = new UIMAExecutor("ExtServicesAE.xml");
assertTrue(uimaExecutor != null);
} catch (Throwable e) {
fail(e.getLocalizedMessage());
@@ -25,7 +25,7 @@
@Test
public void testWithResultsConstructor() {
try {
- UIMAExecutor uimaExecutor = new UIMAExecutor().withResults();
+ UIMAExecutor uimaExecutor = new
UIMAExecutor("ExtServicesAE.xml").withResults();
assertTrue(uimaExecutor != null);
} catch (Throwable e) {
fail(e.getLocalizedMessage());
Added:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAUtilsTest.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAUtilsTest.java?rev=916188&view=auto
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAUtilsTest.java
(added)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAUtilsTest.java
Thu Feb 25 08:56:12 2010
@@ -0,0 +1,25 @@
+package org.apache.clerezza.uima.utils;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * Testcase for {...@link UIMAUtils}
+ *
+ * @author tommaso
+ *
+ */
+...@ignore
+public class UIMAUtilsTest {
+
+ @Test
+ public void testGetAllFSofAType() {
+
+ }
+
+ @Test
+ public void testGetSingletonFeatureStructure() {
+
+ }
+
+}
Propchange:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.uima/org.apache.clerezza.uima.utils/src/test/java/org/apache/clerezza/uima/utils/UIMAUtilsTest.java
------------------------------------------------------------------------------
svn:eol-style = native