ULAPI's Features

The Ultralingua Application Programming Interface (ULAPI) is a collection of tools to help programmers add sophisticated multi-lingual language features to their applications. ULAPI's services are accessible via a web-based REST interface, a C++ library, and a Python library.

See below for information on the languages and language pairs supported by ULAPI.

  • Dictionary look-up. Specify a word in a source language, and obtain translations and definitions in one or more target languages. Each translation comes with detailed part-of-speech information. This works for multi-word phrases as well (e.g. "take over" or "put down") if the phrase has a corresponding entry in the dictionary.

    Example: Look up "dog" in English-to-French, and get "chien [noun, masculine]", "chienne [noun, feminine]", and "pitou [noun, masculine, dialect=Quebec, tone=Colloquial]".

  • Stemming (also known as lemmatization). Specify a word and obtain a complete list of its root forms.

    Example: Stem "rakes" in English to get (word=rakes, root=rake, part-of-speech=noun, number=plural) and (word=rakes, root=rake, part-of-speech=verb, tense=present, person=third, number=singular). ULAPI stemming works for compound forms as well as single-word forms, so "will have thrown" will stem to "throw".

  • Verb conjugation. Specify a verb in a language, and obtain a complete list of its conjugated forms. Alternatively, you can specify the tense, person, and number of the conjugation you desire.

    Example: Conjugate "dormir" ("to sleep") in Spanish and get a long list of forms like (tense=present, person=first, number=singular: "duermo"), etc.

  • Pluralization and singularization. Specify a word and obtain its singular and/or plural form(s).

    Example: Pluralize the English word "forum" to get both "forums" and "fora". Singularize "patches" to get "patch".

  • Number translation. Specify a number to get the word form of that number.

    Example: "123" in German gives you "hundertdreiundzwanzig".

  • Word structure analysis (also known as morphological analysis). Specify a word and obtain an analysis of the word's structure base on each of its root forms.

    Example: the word "bakers" is the plural form of the noun "baker", which is in turn the "one who does something" form of the verb "bake".

  • Word inflection (also known as morphological synthesis). Specify a word and obtain a list of all its derived forms, including detailed part of speech information.

    Example: the complete inflection of the French adjective "bleu" include "bleu", "bleus", "bleue", and "bleues", along with superlative and comparative forms like "la plus bleue" (the most blue, feminine, singular).

  • Part-of-speech tagging. Provide a sentence or sentence fragment to obtain a list of the most likely parts of speech for each word, in context.

    Example: the sentence "William drinks two drinks at night" gives you "William/[noun, singular, proper] drinks/[verb, third-person, singular, present tense] two/[adjective] drinks/[noun, plural] at/[preposition] night/[noun, singular]".


ULAPI datasets

At this writing, all the features described above are supported for English, French, Spanish, German, Portuguese, and Italian. Lookup, conjugation, and limited stemming are also available in Dutch, Russian, and Latin, with more features under development.

Many features (e.g. lookup and stemming) require a dictionary dataset to provide word information, such as part of speech, translations, etc. See our list of dictionary datasets.