<?xml version="1.0" encoding="UTF-8"?>

  <!--
    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

    http://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.
  -->

<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<book lang="en">

  <title>
    Apache UIMA AlchemyAPI Annotator Documentation
  </title>

  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
    href="../../target/docbook-shared/common_book_info.xml" />

  <preface>
    <title>Introduction</title>
    <para>
      The AlchemyAPI Annotator is a set of annotators that wrap the
      AlchemyAPI
      ( <ulink url="http://www.alchemyapi.com">http://www.alchemyapi.com</ulink>)
      services provided by
      Orchestr8 ( <ulink url="http://www.orchestr8.net">http://www.orchestr8.net</ulink> ).
    </para>
    <para>
      To use AlchemyAPI Annotator, choose which service you want to
      put
      inside your UIMA pipeline,
      then find the corresponding AE
      descriptor, put your API Key as value of the 'apikey' parameter,
      eventually modify the parameters' defaults and you're done. 
    </para>
  </preface>

  <chapter id="sandbox.alchemyapi.services">
    <title>Wrapped services</title>
    <para>
      This chapter describes the AlchemyAPI services wrapped inside
      AlchemyAPI Annotator.
    </para>
    <section id="sandbox.alchemyapi.categorization">
      <title>Categorization</title>
      <para>
        AlchemyAPI's Categorization service can be used to categorize
        text, HTML, or
        web-based
        content, assigning the
        most likely topic
        category
        (news,
        sports,
        business, etc.)
        <table>
          <caption>Category Types</caption>
          <tbody>
            <tr>
              <td>Arts and Entertainment</td>
              <td>Arts (Drawing, Sculpting, etc.) and Entertainment
                (Movies, Music, etc.) News and Discussion. </td>
            </tr>
            <tr>
              <td>Business</td>
              <td>Business and Finance News, SEC filings, etc. </td>
            </tr>
            <tr>
              <td>Computers and Internet</td>
              <td>Information Technology (Computers, Internet, Mobile
                Phones, etc.) News and Discussion. </td>
            </tr>
            <tr>
              <td>Culture and Politics</td>
              <td>Political News and Discussion, and Culture /
                Society-related issues. </td>
            </tr>
            <tr>
              <td>Gaming</td>
              <td>Gaming (Computer Games, Video Games, Board Games)
                News
                and Discussion.</td>
            </tr>
            <tr>
              <td>Health</td>
              <td>Health (Medications, Treatments, Diseases, etc.)
                News.
              </td>
            </tr>
            <tr>
              <td>Law and Crime</td>
              <td>Legal and Crime-related News and Discussion. </td>
            </tr>
            <tr>
              <td>Religion</td>
              <td>Religious News and Discussion.</td>
            </tr>
            <tr>
              <td>Recreation</td>
              <td>Recreational Activities (Boating, etc.) </td>
            </tr>
            <tr>
              <td>Science and Technology</td>
              <td>Science (Physics, Astronomy, etc.) News and
                Discussion.</td>
            </tr>
            <tr>
              <td>Sports</td>
              <td>Sports News and Commentary.</td>
            </tr>
            <tr>
              <td>Weather</td>
              <td>Weather News and Discussion.</td>
            </tr>
          </tbody>
        </table>
        Supported languages are:
        <emphasis>English, French, German, Italian, Portuguese, Russian,
          Spanish, Swedish</emphasis>
        .
      </para>
      <para>
        The information extracted on the category of (for example)
        the passed text document is stored inside a FeatureStructure of
        type org.apache.uima.alchemy.ts.categorization.Category, with
        text and score.
      </para>
    </section>
    <section id="sandbox.alchemyapi.keywordExtraction">
      <title>Keyword Extraction</title>
      <para>
        AlchemyAPI's Keyword Extraction service can be used to extract
        topic keywords
        from
        HTML, text, or web-based contents.
        Supported
        languages are:
        <emphasis>English, French, German, Italian, Portuguese, Russian,
          Spanish, Swedish</emphasis>
      </para>
      <para>
        Each keyword is put inside a
        org.apache.uima.alchemy.ts.keywords.KeywordFS Feature Structure
        with the extracted keyword as text feature.
      </para>
    </section>
    <section id="sandbox.alchemyapi.languageDetection">
      <title>Language Detection</title>
      <para>
        AlchemyAPI's Language Detection service can be used to extract
        language from a text,
        HTML, or
        web-based content. AlchemyAPI
        identifies more of 95
        languages.
        Supported languages:
        <itemizedlist>
          <listitem>
            <para>Afrikaans ISO-639-3: afr</para>
          </listitem>
          <listitem>
            <para>Albanian ISO-639-3: sqi</para>
          </listitem>
          <listitem>
            <para>Amharic ISO-639-3: amh</para>
          </listitem>
          <listitem>
            <para>Amuzgo Guerrero ISO-639-3: amu</para>
          </listitem>
          <listitem>
            <para>Arabic ISO-639-3: ara</para>
          </listitem>
          <listitem>
            <para>Armenian ISO-639-3: hye</para>
          </listitem>
          <listitem>
            <para>Azerbaijani ISO-639-3: aze</para>
          </listitem>
          <listitem>
            <para>Basque ISO-639-3: eus</para>
          </listitem>
          <listitem>
            <para>Breton ISO-639-3: bre</para>
          </listitem>
          <listitem>
            <para>Bulgarian ISO-639-3: bul</para>
          </listitem>
          <listitem>
            <para>Catalan ISO-639-3: cat</para>
          </listitem>
          <listitem>
            <para>Cebuano ISO-639-3: ceb</para>
          </listitem>
          <listitem>
            <para>Central K'iche' ISO-639-3: qut</para>
          </listitem>
          <listitem>
            <para>Central Mam ISO-639-3: mvc</para>
          </listitem>
          <listitem>
            <para>Chamorro ISO-639-3: cha</para>
          </listitem>
          <listitem>
            <para>Cherokee ISO-639-3: chr</para>
          </listitem>
          <listitem>
            <para>Chinese ISO-639-3: zho</para>
          </listitem>
          <listitem>
            <para>Comaltepec Chinantec ISO-639-3: cco</para>
          </listitem>
          <listitem>
            <para>Comaltepec Chinantec ISO-639-3: cco</para>
          </listitem>
          <listitem>
            <para>Croatian ISO-639-3: hrv</para>
          </listitem>
          <listitem>
            <para>Cubulco Achi' ISO-639-3: acc</para>
          </listitem>
          <listitem>
            <para>Czech ISO-639-3: ces</para>
          </listitem>
          <listitem>
            <para>Dakota ISO-639-3: dak</para>
          </listitem>
          <listitem>
            <para>Danish ISO-639-3: dan</para>
          </listitem>
          <listitem>
            <para>Dutch ISO-639-3: nld</para>
          </listitem>
          <listitem>
            <para>English ISO-639-3: eng</para>
          </listitem>
          <listitem>
            <para>Esperanto ISO-639-3: epo</para>
          </listitem>
          <listitem>
            <para>Estonian ISO-639-3: est</para>
          </listitem>
          <listitem>
            <para>Faroese ISO-639-3: fao</para>
          </listitem>
          <listitem>
            <para>Fijian ISO-639-3: fij</para>
          </listitem>
          <listitem>
            <para>Finnish ISO-639-3: fin</para>
          </listitem>
          <listitem>
            <para>French ISO-639-3: fra</para>
          </listitem>
          <listitem>
            <para>Fulfulde Adamawa ISO-639-3: fub</para>
          </listitem>
          <listitem>
            <para>Georgian ISO-639-3: kat</para>
          </listitem>
          <listitem>
            <para>German ISO-639-3: deu</para>
          </listitem>
          <listitem>
            <para>Greek ISO-639-3: ell</para>
          </listitem>
          <listitem>
            <para>Guerrero Nahuatl ISO-639-3: ngu</para>
          </listitem>
          <listitem>
            <para>Gujarti ISO-639-3: guj</para>
          </listitem>
          <listitem>
            <para>Haitian Creole ISO-639-3: hat</para>
          </listitem>
          <listitem>
            <para>Hausa ISO-639-3: hau</para>
          </listitem>
          <listitem>
            <para>Hawaiian ISO-639-3: haw</para>
          </listitem>
          <listitem>
            <para>Hebrew ISO-639-3: heb</para>
          </listitem>
          <listitem>
            <para>Hiligaynon ISO-639-3: hil</para>
          </listitem>
          <listitem>
            <para>Hindi ISO-639-3: hin</para>
          </listitem>
          <listitem>
            <para>Hungarian ISO-639-3: hun</para>
          </listitem>
          <listitem>
            <para>Icelandic ISO-639-3: isl</para>
          </listitem>
          <listitem>
            <para>Indonesian ISO-639-3: ind</para>
          </listitem>
          <listitem>
            <para>Irish ISO-639-3: gle</para>
          </listitem>
          <listitem>
            <para>Italian ISO-639-3: ita</para>
          </listitem>
          <listitem>
            <para>Jacalteco ISO-639-3: jac</para>
          </listitem>
          <listitem>
            <para>Japanese ISO-639-3: jpn</para>
          </listitem>
          <listitem>
            <para>Kabyle ISO-639-3: kab</para>
          </listitem>
          <listitem>
            <para>Kaqchikel ISO-639-3: cak</para>
          </listitem>
          <listitem>
            <para>Kirghiz ISO-639-3: kir</para>
          </listitem>
          <listitem>
            <para>Kisongye ISO-639-3: sop</para>
          </listitem>
          <listitem>
            <para>Korean ISO-639-3: kor</para>
          </listitem>
          <listitem>
            <para>Latin ISO-639-3: lat</para>
          </listitem>
          <listitem>
            <para>Latvian ISO-639-3: lav</para>
          </listitem>
          <listitem>
            <para>Lithuanian ISO-639-3: lit</para>
          </listitem>
          <listitem>
            <para>Low Saxon ISO-639-3: nds</para>
          </listitem>
          <listitem>
            <para>Macedonian ISO-639-3: mkd</para>
          </listitem>
          <listitem>
            <para>Malay ISO-639-3: msa</para>
          </listitem>
          <listitem>
            <para>Maltese ISO-639-3: mlt</para>
          </listitem>
          <listitem>
            <para>Maori ISO-639-3: mri</para>
          </listitem>
          <listitem>
            <para>Micmac ISO-639-3: mic</para>
          </listitem>
          <listitem>
            <para>Mòoré ISO-639-3: mos</para>
          </listitem>
          <listitem>
            <para>Ndebele ISO-639-3: nde</para>
          </listitem>
          <listitem>
            <para>Nepali ISO-639-3: nep</para>
          </listitem>
          <listitem>
            <para>Norwegian ISO-639-3: nor</para>
          </listitem>
          <listitem>
            <para>Ojibwa ISO-639-3: oji</para>
          </listitem>
          <listitem>
            <para>Pashto ISO-639-3: pus</para>
          </listitem>
          <listitem>
            <para>Persian ISO-639-3: fas</para>
          </listitem>
          <listitem>
            <para>Polish ISO-639-3: pol</para>
          </listitem>
          <listitem>
            <para>Portuguese ISO-639-3: por</para>
          </listitem>
          <listitem>
            <para>Q'eqchi' ISO-639-3: kek</para>
          </listitem>
          <listitem>
            <para>Romanian ISO-639-3: ron</para>
          </listitem>
          <listitem>
            <para>Romani ISO-639-3: rom</para>
          </listitem>
          <listitem>
            <para>Russian ISO-639-3: rus</para>
          </listitem>
          <listitem>
            <para>Serbian ISO-639-3: srp</para>
          </listitem>
          <listitem>
            <para>Shona ISO-639-3: sna</para>
          </listitem>
          <listitem>
            <para>Shuar ISO-639-3: jiv</para>
          </listitem>
          <listitem>
            <para>Slovak ISO-639-3: slk</para>
          </listitem>
          <listitem>
            <para>Slovenian ISO-639-3: slv</para>
          </listitem>
          <listitem>
            <para>Spanish ISO-639-3: spa</para>
          </listitem>
          <listitem>
            <para>Swahili ISO-639-3: swa</para>
          </listitem>
          <listitem>
            <para>Swedish ISO-639-3: swe</para>
          </listitem>
          <listitem>
            <para>Tagalog ISO-639-3: tgl</para>
          </listitem>
          <listitem>
            <para>Thai ISO-639-3: tha</para>
          </listitem>
          <listitem>
            <para>Todos Santos Cuchumatan Mám ISO-639-3: mvj</para>
          </listitem>
          <listitem>
            <para>Turkish ISO-639-3: tur</para>
          </listitem>
          <listitem>
            <para>Ukrainian ISO-639-3: ukr</para>
          </listitem>
          <listitem>
            <para>Urdu ISO-639-3: urd</para>
          </listitem>
          <listitem>
            <para>Uspanteco ISO-639-3: usp</para>
          </listitem>
          <listitem>
            <para>Vietnamese ISO-639-3: vie</para>
          </listitem>
          <listitem>
            <para>Welsh ISO-639-3: cym</para>
          </listitem>
          <listitem>
            <para>Wolof ISO-639-3: wol</para>
          </listitem>
          <listitem>
            <para>Xhosa ISO-639-3: xho</para>
          </listitem>
          <listitem>
            <para>Zarma ISO-639-3: ssa</para>
          </listitem>
        </itemizedlist>
      </para>
    </section>
    <section id="sandbox.alchemyapi.rankedEntitiesExtraction">
      <title>Ranked Entities Extraction</title>
      <para>
        AlchemyAPI's Ranked Entities Extraction service can be
        exploited
        for identifying people, companies,
        organizations,
        cities,
        geographic features, and other typed
        entities within your
        HTML,
        text, or web-based content.

        To see the complete list of supported
        entity types see here:
        <ulink url="http://www.alchemyapi.com/api/entity/types.html">
          http://www.alchemyapi.com/api/entity/types.html</ulink>

        This service also expose 'entity disambiguation' mechanism to
        resolve detected companies, locations, and people to a unique
        "instance".
        Such thing is stored inside the 'disambiguation'
        feature of all the FeatureStructures inside the package
        org.apache.uima.alchemy.ts.entity, except for AlchemyAnnotation.

        This service also provides comprehensive support for RDF and
        Linked Data.
        This is done filling some features like 'dbpedia',
        'geonames' and other linked data nodes' information.

        In the end
        also advanced quotations extraction is integrated into all
        named
        entity extraction API calls, enabling the identification
        of
        utterances ("quotations") within unstructured text, this will be
        stored inside 'quotations' feature.
      </para>
    </section>
    <section id="sandbox.alchemyapi.microformatsExtraction">
      <title>Microformats Extraction</title>
      <para>
        This AlchemyAPI's service handles Microformats data
        standards and is capable of extracting
        hCard, adr, geo, and rel-*
        formatted content from web pages.

        The information is stored
        inside a Feature Structure called
        MicroformatFS under
        org.apache.uima.alchemy.ts.microformats
        package.
      </para>
    </section>
    <section id="sandbox.alchemyapi.annotatedEntitiesExtraction">
      <title>Annotated Entities Extraction</title>
      <para>
        This service is somehow an enhancement of the Ranked
        Entities
        Extraction service, with annotation of piece of text
        relating to
        extracted entities.

        <note>
          <para>Annotator and descriptor still
            live but the service
            underneath is not available for free API
            keys.</para>
        </note>
      </para>
    </section>
  </chapter>
  <chapter id="sandbox.alchemyapi.parametersConfiguration">
    <title>Configuring parameters</title>
    <para>
      This chapter describes how to configure AlchemyAPI Annotator
      analysis engines' parameters.
    </para>
    <section id="Common+Parameters">
      <title>Common Parameters</title>
      <para>
        <itemizedlist>
          <listitem>
            <para>
              <emphasis>apikey</emphasis>
              : this parameter contains the (free or not) API key string
              needed to be able to call AlchemyAPI services.
            </para>
          </listitem>
          <listitem>
            <para>
              <emphasis>output</emphasis>
              : this parameter contains one of xml,json,rdf,rel-tag
              respectively to specify the desired output in XML, JSON,
              RDF
              or MicroFormat formats.
              Beware that each AE wrapping an
              AlchemyAPI service has a set of supported output formats
              that is a subset of the previous list.
            </para>
          </listitem>
        </itemizedlist>
      </para>
    </section>
    <section id="Specific+Parameters">
      <title>Service Specific Parameters</title>
      <para>
        <emphasis>Entity Extraction Text</emphasis>
        :
        see
        <ulink url="http://www.alchemyapi.com/api/entity/textc.html">here</ulink>
      </para>

      <para>
        <emphasis>Text Categorization</emphasis>
        :
        see
        <ulink url="http://www.alchemyapi.com/api/categ/textc.html">here</ulink>
      </para>

      <para>
        <emphasis>Text Keyword/Term Extraction</emphasis>
        :
        see
        <ulink url="http://www.alchemyapi.com/api/keyword/textc.html">here</ulink>
      </para>

      <para>
        <emphasis>HTML Micrformats Extraction</emphasis>
        :
        see
        <ulink url="http://www.alchemyapi.com/api/mformat/htmlc.html">here</ulink>
      </para>

      <para>
        <emphasis>URL Micrformats Extraction</emphasis>
        :
        see
        <ulink url="http://www.alchemyapi.com/api/mformat/urls.html">here</ulink>
      </para>
    </section>
  </chapter>
</book>