blob: 29fe21669cecefe79cb3b0723b8bec1a6709d8b0 [file]
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<document>
<properties>
<title>Apache UIMA Addons and Sandbox</title>
<author email="dev@uima.apache.org">
Apache UIMA Documentation Team</author>
</properties>
<body>
<section name="Apache UIMA Addons and Sandbox">
<p>
The Apache UIMA&#0153; Sandbox is a workspace that is open to all UIMA committers and developers who would like to
contribute code and join the UIMA developer community.
</p>
<p>Components often start in the Sandbox and, when ready for release, migrate from here to the Addons or other parts of the site, over time, as part of the
process of integration by the Apache community.
</p>
<p>The Addons and Sandbox currently host analysis components
and tooling around UIMA. All the components are free to use and licensed under the
<a href="license.html">Apache Software License</a>.
A list of proposed analysis components and tooling for UIMA is available at the
<a href="https://cwiki.apache.org/confluence/display/UIMA/uima-sandbox-components.html">UIMA wiki</a> and can be discussed there.
</p>
<p>
You can access the UIMA Addons in the SVN repository at
<a class="external" href="https://svn.apache.org/repos/asf/uima/addons/trunk/">
https://svn.apache.org/repos/asf/uima/addons/trunk/</a>.
Likewise, you can access the UIMA sandbox in the SVN repository at
<a class="external" href="https://svn.apache.org/repos/asf/uima/sandbox/trunk/">
https://svn.apache.org/repos/asf/uima/sandbox/trunk/</a>.
</p>
<p>
The list below shows the currently available components of the UIMA Addons.
Many of these components are annotators. The Addons projects are released - see the
<a href="downloads.cgi">download</a> page.
</p>
</section>
<section name="UIMA Addons components" >
<h4 id="uima-addons-annotators">Annotators and Consumers</h4>
<ul>
<li><a href="#whitespace.tokenizer">Whitespace Tokenizer Annotator</a></li>
<li><a href="#snowball.annotator">Snowball Annotator</a></li>
<li><a href="#regex.annotator">Regular Expression Annotator</a></li>
<li><a href="#dict.annotator">Dictionary Annotator</a></li>
<li><a href="#tagger.annotator">Hidden Markov Model Tagger Annotator</a></li>
<li><a href="#bsf.annotator">BSF Annotator</a></li>
<li><a href="#opencalais.annotator">OpenCalais Annotator</a></li>
<li><a href="#concept.mapper.annotator">Concept Mapper Annotator</a></li>
<li><a href="#configurable.feature.extractor.annotator">Configurable Feature Extractor Annotator</a></li> <li><a href="#tika.annotator">Tika Annotator</a></li>
<li><a href="#lucas.consumer">Lucene CAS indexer (Lucas)</a></li>
<li><a href="#alchemy.annotator">AlchemyAPI Annotator</a></li>
<li><a href="#solrcas.consumer">Solr CAS Consumer (Solrcas)</a></li>
</ul>
<h4 id="uima-addons-servers">Servers</h4>
<ul>
<li><a href="#simple-server">Simple Server (UIMA REST service)</a></li>
</ul>
<h4>Packaging tools</h4>
<ul>
<li><a href="#pear.package.task">PEAR Packaging ANT Task</a></li>
<li><a href="#pear.maven.task">PEAR Packaging Maven Plugin</a></li>
</ul>
<h4>Miscellaneous</h4>
<ul>
<li><a href="#fs.variables">Feature Structure Variables</a></li>
</ul>
<p>These are described in more detail below.</p>
<br></br>
<subsection name='Whitespace Tokenizer Annotator' id="whitespace.tokenizer">
<p>
The Whitespace tokenizer annotator component provides an UIMA annotator implementation that tokenizes
text documents using a simple whitespace segmentation. During the tokenization, the annotator creates
token and sentence annotations as result. The Java source of the annotator
can be accessed in the SVN repository at
<a class="external" href="https://svn.apache.org/repos/asf/uima/addons/trunk/WhitespaceTokenizer">
https://svn.apache.org/repos/asf/uima/addons/trunk/WhitespaceTokenizer</a>.
</p>
</subsection>
<subsection name='Snowball Annotator' id="snowball.annotator">
<p>
The Snowball annotator is an UIMA annotator component that wraps the Snowball stemming algorithm. The annotator
iterates over the available token annotations in the CAS and creates for each token a feature
containing the stem.
The stemming algorithm is avaialble for several languages. For details about Snowball please see
<a class="external" href="https://snowball.tartarus.org/">https://snowball.tartarus.org/</a>.
The Java source of the annotator can be accessed in the SVN repository at
<a class="external" href="https://svn.apache.org/repos/asf/uima/addons/trunk/SnowballAnnotator">
https://svn.apache.org/repos/asf/uima/addons/trunk/SnowballAnnotator</a>.
</p>
<p>
Note: the used implementation of the Snowball stemming algorithm is licensed under the BSD license.
</p>
</subsection>
<subsection name='Regular Expression Annotator' id="regex.annotator">
<p>
The Regular Expression Annotator (RegexAnnotator) is an Apache UIMA analysis engine that
detects entities like email addresses, URLs, phone numbers, zip codes or any other entity
based on regular expressions and concepts. For each entity that was detected an annotation
can be created or an already existing annotation can be updated with feature values.
<a href="d/uima-addons-current/RegularExpressionAnnotator/RegexAnnotatorUserGuide.html">
Click here to access the user documentation</a>.
The Java source of the annotator can be accessed in the SVN repository at
<a class="external" href="https://svn.apache.org/repos/asf/uima/addons/trunk/RegularExpressionAnnotator">
https://svn.apache.org/repos/asf/uima/addons/trunk/RegularExpressionAnnotator</a>.
</p>
</subsection>
<subsection name='PEAR Packaging ANT Task' id="pear.package.task">
<p>
The PEAR packaging ANT task component is a project to create UIMA PEAR packages automatically
during a component build using a custom
<a class="external" href="https://ant.apache.org/">Apache ANT</a> task. With this task,
users are able to build their components from the source and then package them
automatically as UIMA PEAR package.
<a href="d/uima-addons-current/PearPackagingAntTask/PearPackagingAntTaskUserGuide.html">
Click here to access the user documentation</a>.
The Java source of the PEAR packaging task can be accessed in the SVN repository at
<a class="external" href="https://svn.apache.org/repos/asf/uima/addons/trunk/PearPackagingAntTask">
https://svn.apache.org/repos/asf/uima/addons/trunk/PearPackagingAntTask</a>.
</p>
</subsection>
<subsection name='PEAR Packaging Maven Plugin' id="pear.maven.task">
<p>Note: The PEAR Packaging Maven Plugin has been moved to the main UIMA Java Framework and SDK package.</p>
<p>
The PEAR packaging Maven plugin component is a project to create UIMA PEAR packages automatically
during a component build using a custom Maven plugin.
With this plugin, users are able to build their components from the source and then package them
automatically as UIMA PEAR package.
<a href="d/uimaj-current/tools.html#ugr.tools.pear">
Click here to access the user documentation</a>.
The Java source of the PEAR packaging Maven plugin can be accessed in the SVN repository at
<a class="external" href="https://svn.apache.org/repos/asf/uima/uimaj/trunk/PearPackagingMavenPlugin">
https://svn.apache.org/repos/asf/uima/uimaj/trunk/PearPackagingMavenPlugin</a>.
</p>
</subsection>
<subsection name='Dictionary Annotator' id="dict.annotator">
<p>
The Dictionary Annotator is an Apache UIMA analysis engine that creates annotations based on word lists
that are compiled to simple dictionaries. The output annotation type for the annotations that are created
and the input annotation type where the dictionary lookup is executed on, can be specified individually.
<a href="d/uima-addons-current/DictionaryAnnotator/DictionaryAnnotatorUserGuide.html">
Click here to access the user documentation</a>.
The Java source of the annotator can be accessed in the SVN repository at
<a class="external" href="https://svn.apache.org/repos/asf/uima/addons/trunk/DictionaryAnnotator">
https://svn.apache.org/repos/asf/uima/addons/trunk/DictionaryAnnotator</a>.
</p>
</subsection>
<subsection name='Feature Structure Variables' id="fs.variables">
<p>
The Feature Structure variables project allows you to create named feature structure instances.
It further allows you to refer to individual feature structures or annotations across annotators,
without creating a special index.
<a href="d/uima-addons-current/FsVariables/fsVariablesUserGuide.html">
Click here to access the user documentation</a>.
The Java source of the project can be accessed in the SVN repository at
<a class="external" href="https://svn.apache.org/repos/asf/uima/addons/trunk/FsVariables">
https://svn.apache.org/repos/asf/uima/addons/trunk/FsVariables</a>.
</p>
</subsection>
<subsection name='Hidden Markov Model Tagger Annotator' id="tagger.annotator">
<p>
The Tagger Annotator component implements a Hidden Markov Model (HMM) tagger. The tagger assumes that
sentences and tokens have already been annotated in the CAS with sentence and token annotations.
It iterates then in turn over sentences and tokens to accumulate a list of words, and then invokes the
tagger on this list. The HMM tagger employs the Viterbi algorithm to calculate the most probable tag sequence.
For each Token it updates the posTag field with the part of speech tag.
Model training is happening outside of UIMA, the tagger just receives statistical information from
a model file which is passed to the tagger along with some further parameters through a properties file.
<a href="d/uima-addons-current/Tagger/hmmTaggerUsersGuide.html">
Click here to access the user documentation</a>.
The Java source of the annotator can be accessed in the SVN repository at
<a class="external" href="https://svn.apache.org/repos/asf/uima/addons/trunk/Tagger">
https://svn.apache.org/repos/asf/uima/addons/trunk/Tagger</a>.
</p>
</subsection>
<subsection name='BSF Annotator' id="bsf.annotator">
<p>
The Bean Scripting Framework (BSF) Annotator is an Apache UIMA analysis engine that provides
a link between the UIMA framework and the scripting languages that are supported by
Apache BSF (<a class="external" href="https://jakarta.apache.org/bsf">https://jakarta.apache.org/bsf</a>).
The current implementation comes with examples in Beanshell
(<a class="external" href="https://www.beanshell.org">https://www.beanshell.org</a>) and Rhino Javascript
(<a class="external" href="https://www.mozilla.org/rhino">https://www.mozilla.org/rhino</a>).
Simple tests have also been conducted successfully with Jython
(<a class="external" href="https://jython.sourceforge.net/Project/index.html">https://jython.sourceforge.net/Project/index.html</a>)
and JRuby (<a class="external" href="https://jruby.codehaus.org">https://jruby.codehaus.org</a>).
The annotator takes as parameter the source file containing the script.
The script is supposed to implement the initialize and process functions of the analysis engine.
Using a scripting language can be very handy to do quick prototyping, pre/post processing, CAS cleaning tasks or
typeystem conversion/adaptation.
The Java source of the annotator can be accessed from the SVN repository at
<a class="external" href="https://svn.apache.org/repos/asf/uima/addons/trunk/BSFAnnotator">
https://svn.apache.org/repos/asf/uima/addons/trunk/BSFAnnotator</a>.
</p>
</subsection>
<subsection name="Tika Annotator" id="tika.annotator">
<p>
Apache Tika is a toolkit for detecting and extracting metadata and
structured text content from various documents using existing parser
libraries. The TikaAnnotator uses
<a href="https://lucene.apache.org/tika/" target="_blank" rel="noopener">Tika</a>
to generate annotations representing
the original markup of a document, extract its text and metadata. It
consists of three resources:
</p>
<dl>
<dt>FileSystemCollectionReader</dt>
<dd>similar to the one in UIMA examples but uses
TIKA to extract the text from binary documents and generates annotations to
represent the markup</dd>
<dt>MarkupAnnotator</dt>
<dd>takes the original content from a view and generates a
new view containing the extracted text with markup annotations</dd>
<dt>TikaWrapper</dt>
<dd>utility class which allows to populate a CAS from a binary
document; used by the FileSystemCollectionReader</dd>
</dl>
</subsection>
<subsection name="Lucene CAS indexer (Lucas)" id="lucas.consumer">
<p>
The Lucene CAS indexer (Lucas) is a UIMA CAS consumer that stores CAS
data in a <a href="https://lucene.apache.org">Lucene</a> index. The consumer
transforms annotation objects of a CAS into Lucene token streams
which are stored in a Lucene document. Token streams can further be processed
by token filters. Lucas comes with a set of its own token filters and
integrations for some Lucene token filters. Furthermore, you can
deploy your own token filters. The mapping between UIMA annotations and Lucene
tokens and token filtering is configured by a xml mapping file.</p>
<p><a href="d/uima-addons-current/Lucas/LuceneCASConsumerUserGuide.html">
Click here to access the user documentation</a>.
The Java source of the consumer can be accessed in the
<a href="https://svn.apache.org/repos/asf/uima/addons/trunk/Lucas">
SVN repository</a>.
</p>
</subsection>
<subsection name='Simple Server (UIMA REST Service)'
id="simple-server">
<p>
The UIMA Simple Server makes results of UIMA processing
available in a simple, XML-based format. The intended use of
the the Simple Server is to provide UIMA analysis as a REST
service. The Simple Server is implemented as a Java Servlet,
and can be deployed into any Servlet container (such as
Apache Tomcat or Jetty).</p>
<p><a href="d/uima-addons-current/SimpleServer/simpleServerUserGuide.html">
Click here to access the user documentation</a>.
The Java source of the annotator can be accessed from the
SVN repository at
<a class="external"
href="https://svn.apache.org/repos/asf/uima/addons/trunk/SimpleServer">
https://svn.apache.org/repos/asf/uima/addons/trunk/SimpleServer
</a>.
</p>
</subsection>
<subsection name='OpenCalais Annotator' id="opencalais.annotator">
<p>
The OpenCalais Annotator component wraps the
<a class="external" href="https://www.opencalais.com">OpenCalais</a>
web service and makes the OpenCalais analysis results available in UIMA. OpenCalais can detect a large variety
of entities, facts and events like for example Persons, Companies, Acquisitions, Mergers, etc.
For details about the OpenCalais analytics and the license to use the service, please refer to the
to the <a class="external" href="https://www.opencalais.com">OpenCalais</a> website.
The Java source of the annotator can be accessed in the SVN repository at
<a class="external" href="https://svn.apache.org/repos/asf/uima/addons/trunk/OpenCalaisAnnotator">
https://svn.apache.org/repos/asf/uima/addons/trunk/OpenCalaisAnnotator</a>.
</p>
</subsection>
<subsection name='Concept Mapper Annotator' id='concept.mapper.annotator'>
<p>
ConceptMapper is a powerful, highly configurable dictionary UIMA-based annotator.
</p><p>
Numerous parameters can be used to specify various aspects of the lookup algorithm, input processing and output options.
The dictionary structure is flexible, allowing any number synonyms to be associated with an entry,
and any number of attributes to be associated with entries or synonyms.
</p>
<p>ConceptMapper is separately released, and available on the downloads page.</p>
<p>
Lookup and matching against dictionary entries can be performed against
contiguous or non-contiguous blocks of text, and token order independent
lookup is also allowed (for example, the tokens "A" "B" would be considered
a match against dictionary entry "B" "A").
</p><p>
Additionally, ConceptMapper can be configured to use any tokenizer annotator,
enabling tokenization of the dictionary identically with the input text.
</p>
<p><a href="d/uima-addons-current/ConceptMapper/ConceptMapperAnnotatorUserGuide.html">
Click here to access the user documentation</a>.</p>
</subsection>
<subsection name="Configurable Feature Extractor Annotator" id="configurable.feature.extractor.annotator">
<p>
The Configurable Feature Extractor (CFE) Annotator is a multipurpose tool
that enables feature extraction from a UIMA CAS in a very generalized and
application independent way. </p>
<p>The extraction process is performed according to rules expressed using the
<bold>Feature Extraction Specification Language (FESL)</bold> that are stored
in configuration files.</p>
<p>Using CFE eliminates the need for creating customized CAS consumers and
writing Java code for every application. Instead, by using FESL rules in XML format,
users can customize the information extraction process to suit their application.
FESL's rule semantics allow the precise identification of the information that
is required to be extracted by specifying precise multi-parameter criteria.
</p>
<p><a href="d/uima-addons-current/ConfigurableFeatureExtractor/CFE_UG.html">
Click here to access the user documentation</a>.</p>
</subsection>
<subsection name="AlchemyAPI Annotator" id="alchemy.annotator">
<p>The AlchemyAPI Annotator is a wrapper for the AlchemyAPI webservices which
provide text enrichment facilities like categorization, entity extraction,
language identification, keyword extraction, concept tagging etc.
</p>
<p><a href="d/uima-addons-current/AlchemyAPIAnnotator/AlchemyAPIAnnotatorUserGuide.html">
Click here to access the user documentation</a>.</p>
</subsection>
<subsection name="Solr CAS Consumer (Solrcas)" id="solrcas.consumer">
<p> The Solr CAS Consumer (Solrcas) consumes CAS objects transforming
them into Solr documents to write to a remote or local Solr instance
in order to provide serach capabilities on top of UIMA pipelines with
the Apache Solr search server.
</p>
<p><a href="d/uima-addons-current/Solrcas/SolrcasUserGuide.html">
Click here to access the user documentation</a>.</p>
</subsection>
</section>
<section name="UIMA Sandbox components">
<p>These components are partially only available in SVN at this time.</p>
<h4>Annotators and Consumers</h4>
<ul>
<li><a href="#rdfcas.consumer">RDF CAS Consumer</a></li>
</ul>
<h4>Miscellaneous</h4>
<ul>
<li><a href="#gale.multimodal.example">GALE Multi-Modal Example</a></li>
</ul>
<p>These are described in more detail below.</p>
<br></br>
<subsection name="RDF CAS Consumer" id="rdfcas.consumer">
<p>The RDF CAS Consumer is responsible of taking a CAS view and
write it to a file in a RDF format; this is usefult to plug UIMA
pipelines with RDF backed systems (using ontologies, reasoners, etc.).
</p>
<!--p><a href="downloads/sandbox/RDF_CC/RDFCASConsumerUserGuide.html">
Click here to access the user documentation</a>.</p-->
</subsection>
<subsection name="GALE Multi-Modal Example" id="gale.multimodal.example">
<p> The GALE Multi-Modal Example contains a type-system and sample code based on a
rich multimodal application developed under the Darpa GALE project to demonstrate how to combine
analytics from multiple sources and modalities. The GALE Type System (GTS) has been designed
for applications that combine analytics from multiple sources and modalities, such as speech
recognition, language translation, entity detection, topic detection, speech synthesis, etc.
</p>
<p>
The sample code will illustrate how to wrap NLP analytics as UIMA annotators using
appropriate GTS types, as well as data-reorganization components that convert the output of each
analytic into a form suitable for the following analytics, and add
cross-reference links back to the original data.
</p>
<p> The type system descriptors can be accessed from the SVN repository at
<a class="external" href="https://svn.apache.org/repos/asf/uima/sandbox/trunk/GaleMultiModalExample">
https://svn.apache.org/repos/asf/uima/sandbox/trunk/GaleMultiModalExample
</a>.
</p>
</subsection>
</section>
</body>
</document>