Theses Topics 2013/2014

Note: parts of the rest of this document are written in Estonian in case working on the respective project requires knowledge of Estonian.

Introduction

GF

Grammatical Framework (GF) is a rule-based natural language processing framework with a focus on multilinguality. GF programs (or grammars) consist of an abstract module that defines which meanings can be expressed in the grammar, and a set of concrete modules that define for each concrete language (e.g. Estonian, English, ...) how these meanings are expressed as strings. The same GF grammar can be used to parse strings into their abstract representations and linearize the abstract representations as strings in some concrete language. By first parsing a string and then linearizing the parse result, a grammar can be used for machine translation between any two concrete languages implemented in the grammar. GF grammars are human readable, fast, support look-ahead editing, and can be easily embedded into web and mobile applications, see also the demos.

The GF framework comes with a resource grammar library, i.e. an implementation of the main syntactic structures (noun phrase, coordination, question, ...) for ~30 languages. Adding support for Estonian is an ongoing project, see https://github.com/GF-Estonian/GF-Estonian.

CNL

A Controlled Natural Language (CNL) is a subset of its respective natural language. The subset is defined by a formal syntax and semantics and control of ambiguity. As a result, automatic processing (machine translation, detection of semantic inconsistencies, etc.) of this subset becomes simpler than the processing of full natural language. CNLs are useful for certain NLP applications, e.g. natural language user interfaces to databases, voice commands, etc. An example of a CNL is Attempto Controlled English (ACE), the sentences of which can be automatically converted to first-order logic.

Android

Android is a mobile operating system. It is a suitable platform for developing NLP applications, because it offers open APIs for speech recognition, text-to-speech, spell checking, and keyboard applications. The openness means that any application developer can implement a new keyboard or a speech recognizer and make its services available to all the other applications on the device without them having to be modified.

Projects

Eesti keele GF-grammatika testimine ja hindamine

Selle teema projekti(de) eesmärk on testida uut eesti keele grammatikaressurssi, mis on implementeeritud GF-raamistikus, vt projekti GF-Estonian. Peamiselt tuleks hinnata selle kasutusmugavust, eesti keele sagedasemate süntaktiliste struktuuride toetust, olemasoleva sõnastiku kasulikkust ning uute sõnastike lisamise lihtsust. Võimalikud teemad:

Tark abiline

Nutitelefonis iPhone on kesksel kohal tark abiline Siri, mis mõistab telefoniomaniku juttu ja sooritab sellele vastavaid toiminguid. Sarnaseid rakendusi on loodud ka Androidile. Tüüpiliselt mõistavad need abilised ainult suuremaid keeli.

Selle projekti eesmärk on luua rakendus, mis mõistab erinevaid eestikeelseid käske ning täidab need teiste telefonis olevate rakenduste (kalender, brauser, pleier, ...) abil. Näited käskudest on:

Rakendus peaks võimaldama lihtsamat dialoogi:

Kui käsklused on keerukamad siis võib kaaluda nende süntaktilist analüüsi, mida võib teha olemasolevate kõnetuvastusgrammatikate abil või kasutades mõnd veebiteenust (nt Kinoagent).

Olemasoleva näiterakendusena võib vaadelda rakendust Arvutaja. Konkreetse projektina võib kaaluda Arvutaja edasiarendamist dialoogi võimaluse lisamisega.

Hääldamismäng

Selle projekti eesmärk on luua lihtne mäng, kus mängijal palutakse ette lugeda mingi hulk ette antud sõnu (ka fraase ja lauseid). Mängija eesmärk on sõnu hääldada korralikult, nii et eesti keele kõnetuvastaja need õigesti transkribeeriks. Iga õigesti transkribeeritud sõna eest saab punkte. Peale selle, et mängu on lõbus mängida, on sellel ka sisulisem väärtus, kuna see loob platvormi, mis võimaldab (crowdsourcing meetodil) testida, kalibreerida ja hinnata kõnetuvastaja hetkeversiooni ja/või koguda kõnekorpust.

Terviklahendusel on kaks komponenti: rakendus Android-telefonis ning veebiteenus sisendlausete genereerimiseks ning mängutulemuste haldamiseks.

Telefonis on sisuliselt ainult lihtne kasutajaliides, mis (1) näitab kasutajale ettelugemiseks sõnu, (2) kutsub välja kõnetuvastusmooduli (Kõnele-rakendus) nende sõnade lindistamiseks ja transkribeerimiseks, ning (3) võrdleb transkriptsiooni kokkulangemist esialgsete sõnadega. Telefonirakendus suhtleb veebiteenusega, mis genereerib etteantavad sõnad ning salvestab saadud tulemused.

Veebiteenus genereerib etteantud teema ja raskusastmega sõnu, ning säilitab kõikide kasutajate tulemused, mille põhjal saab arvutada edetabeleid ja statistikat. Veebiteenuse tegemiseks võiks kasutada nt Google App Engine'it (programmeerimine Javas või Pythonis).

Grammar-based keyboard for Android

Many Android keyboard apps enhance the text input by predicting the next words using a statistical (n-gram) language model automatically learned during the previous usage of the keyboard. In some applications however only a fixed set of words and phrases make sense and thus a rule-based and fixed vocabulary language model would be more suitable.

The goal of this project is to develop an Android app that implements the Android text entry API (see Creating an Input Method), and that integrates the GF parser, which comes with the predictive parsing capability and can thus propose at every position in the sentence the syntactically legal completions, for a given grammar. The app should allow the user to specify the used grammar in GF's PGF format.

The new keyboard app can build on some existing open-source Android keyboard app, but should probably redesign its UI. GF parsing can be integrated via the existing C and Java runtimes for PGF.

(Estonian) WordNet browser

The goal of this project is to complete the software wn-browse.js, i.e. by using modern web technologies (HTML5, jQuery/Angular.js, browser-based storage) create a user-friendly (ideally offline) mobile app for browsing the (Estonian) WordNet. The application should integrate a query language, that would go beyond keyword-based search, and allow for searching the WordNet using semantic relations and distances, and possibly links to WordNets in other languages.

Voice action grammars for Russian, German, etc.

The Grammars-project develops voice action grammars for mobile applications. The grammars currently support Estonian and English, and the respective voice actions can be used in the Arvutaja app for Android.

The goal of this project is to add support for a new concrete language and provide linearizations to all the existing abstract functions in the grammars.

Rakendusgrammatika ja kõnetuvastus

Selle projekti eesmärk on luua GF rakendusgrammatika (application grammar) mingi konkreetse rakenduse jaoks (roboti juhtimine, kalkulaatori kasutamine, sündmuste lisamine kalendrisse, aadressiotsing kaardirakenduses), mida saaks lisaks kasutada kõnetuvastusgrammatikana (nt Küberneetikainstituudi kõnetuvastusserveris).

Üheks võimalikuks teemaks on eesti keele ajaväljendite grammatika kirjeldamine koos automaatse teisendusega mingile kanoonilisele kujule ("kaheksateistkümnes november kell pool üks hommikul" -> "2011-11-18 00:30"). Sellist grammatikat saaks nt kasutada koos eesti keele kõnetuvastusega Androidi kalendri- ja meelespearakendustes (vt ka ülalpool kirjeldatud Targa abilise teemat).

Piiratud eesti keel ja OWL

Projekti eesmärk on semantilise veebi keelele OWL piiratud eestikeelse (controlled Estonian) liidese loomine. Liides peaks olema kahesuunaline, st võimaldada OWL lausete automaatset teisendamist eesti keelde, ning eestikeelsete lausete (mingist formaalselt defineeritud fragmendist) automaatset teisendamist OWL keelde. Töö peaks kirjeldama eesti keelele omaseid mitmesusi ning seda kuidas valitud fragment neid väldib. Samuti peaks töö kirjeldama sellise liidese võimalikke rakendusi.

Tehnilise lahendusena võib kaaluda valitud eesti keele fragmendi teisendamist kõigepealt ACE keelde (nt projektis ACE-in-GF loodud grammatika abil), ning siis OWL keelde (juba olemasoleva ACE->OWL tarkvara abil).

Bidirectional translator from ACE to SPARQL

SPARQL is a popular query language for RDF datasets with a standard syntax that looks verbose and too remote from natural language and can therefore scare off potential users. For example, instead of reading/writing

SELECT ?title
WHERE
{
  <http://example.org/book/book1> <http://purl.org/dc/elements/1.1/title> ?title .
}

users might prefer to read/write (a semantically equivalent) pseudo-natural language question:

What is a dc:title of ex:book1?

The task of the project is to propose a fragment of English (ideally based on ACE) and implement a tool that allows for a bidirectional translation between (a reasonably large subset of SPARQL) and this English fragment. Such a tool would allow one to formulate SPARQL-compatible semantic web queries (e.g. on DBpedia) in a fragment of natural English, and explain the meaning of existing SPARQL queries.

Suggested programming language is Prolog, but other languages are fine as well.

Similar project: SQUALL (Semantic Query and Update High-Level Language).

Similar project: SPARTIQULATION: Verbalizing SPARQL queries.

SWRL verbalizer

SWRL is a rule language for expressing semantic web ontologies, e.g. it is used as an extension of the OWL ontology language in ontology editors like Protégé.

The task of this project is to extend an existing ACE-based OWL verbalizer to also verbalize SWRL rules.

Programming language: Prolog

Kaarel Kaljurand 2013-09-25