Specifikace: Rozpoznávání jazyka

Cíl programu:

Rozpoznání jazyka vstupního textu bez předchozí znalosti (hardcoded) jakéhokoliv jazyka.

Vztah daného tématu k inspiraci ze seznamu:

Oproti tématu na stránkách nebude tento program předpokládat jakoukoliv
předchozí znalost jazyka, syntaxe, či jeho původu a zaměří se na zpracování
velkého množství dat (např. v rozsahu knih), které bude možno recyklovat.

Popis interakce programu s uživatelem:

Na 1. vstupu se bude nacházet soubor v daném formátu (JSON/XML), ve kterém bude
velké množství textu (např. část knihy), který bude označkovaný názvem jazyka.
Tento vstup se zpracuje a vygeneruje se databáze četnosti a dalších objektů,
které bude program dále potřebovat ke svému běhu.

Na 2. vstupu bude samotný text, který je třeba rozpoznat (na základě dat z 1.
vstupu).

Uživatelské rozhrání:

Bude se jednat o konzolovou aplikaci, jejíž přepínače budou ctít návrh již
používaných unixových nástrojů. Tj. uvnitř programu nebude menu s položkami,
ale komunikace bude probíhat skrze přepínače a konzolové argumenty. Těchto
argumentů bude ~6, tj. program nabídne různorodé možnosti přístupu, např.
ukládání již zpracované databáze. Jeden přepínač bude nápověda.

Programovací jazyk a jiné nástroje:

Program bude naprogramován v jazyce Python 3. Jinými kandidáty byly C++, C#
a Java. C++ nabízí rychlost, ale bylo vyřazeno kvůli náročnosti linkování
potřebných knihoven. Minimálně by byl potřeba Boost a konfigurace podpory pro
různé platformy (např. pomocí CMake) není zcela triviální.

C# zdálivě řeší problémy s konfigurací, avšak pro podporu více platforem je
potřeba využití Mono, což má stále nevyřešené problémy co se týče implementace
Regexu, který bude při zpracování velkého množství textu potřeba.

Java je (dle názoru) vhodná pro rozsáhlejší projekty a tudíž ne pro tento.

Python má své výhody i nevýhody, ale pro tento projekt bude postačující. Můžeme
těžit z jeho rozsáhlé knihovny, která implementuje spoustu užitečných funkcí.