NLP Studio je webová aplikace, která umožňuje uživatelům připravit si vlastní textminingové experimenty pro analýzu přirozeného jazyka, aniž by museli používat programovací jazyk. K dispozici je vývojové prostředí, ve kterém může uživatel pracovat formou vizuálního programování. Připraveny jsou komponenty pro předzpracování, trénování nebo vizualizaci. Software je určen jak pro komerční tak pro výukové účely a zjednodušuje zájemcům seznámení s tématem zpracování přirozeného jazyka. Aplikace je dostupná na adrese https://mta.pef.mendelu.cz/lab/ v obou jazykových mutacích (česká i anglická).
Backend aplikace
Serverová část systému je zodpovědná za řešení úloh od uživatele. Z tohoto pohledu lze architekturu backendu rozdělit do dvou úrovní.
První úroveň představuje komunikační rozhraní s frontendem a databází. V podstatě se jedná o běžný webový server, který komunikuje pomocí rozhraní REST API. Na této úrovni aplikace přijímá a odpovídá na požadavky, ověřuje uživatele, ale také řadí úlohy do fronty.
Druhou úroveň tvoří složitější, analytická část. Ta slouží k řešení různých úloh NLP a je orientována na zpracování velkého množství dat, což je obvykle časově i výpočetně náročné. Proto jsme část aplikace, která tyto úlohy zpracovává, implementovali jako samostatný software. Analytická vybírá úlohy z fronty a řeší je na pozadí na základě zadaných parametrů. Mezistavy i konečný výsledek ukládá do databáze. První úroveň se tedy na vlastním řešení úloh prakticky nepodílí. Pokud by tak činila, rozhraní API by na požadavky odpovídalo s velkou latencí. Takové uspořádání navíc neumožňuje efektivní správu úloh nebo běh na pozadí.
Komunikační rozhraní
Rozhraní Rest API je implementováno v jazyce moderního rámce FastAPI. Jedním z hlavních důvodů pro FastAPI je, že umožňuje asynchronní zpracování požadavků HTTP. Za normálních okolností Python provádí kód sekvenčně. Například v případě protokolu HTTP to znamená, že server přijme požadavek až poté, co byl předchozí požadavek kompletně vyřízen. Asynchronní metody však mohou být dočasně pozastaveny (např. při čekání na data z databáze), čímž neblokují další, tzv. konkurenční požadavky čekající ve frontě na spuštění. Asynchronní paradigma tedy výrazně zkracuje dobu potřebnou k vyřízení požadavku a je vhodné pro prostředí souběžných úloh, jako je webový server. Úlohy zpracovává analytická část aplikace na druhé úrovni, jak jsme se zmínili v úvodu této kapitoly.
Komunikace je iniciována klientem, a to odesláním požadavku POST na koncový bod API /task. Koncový bod přijímá požadavky pro všechny typy úloh. Konkrétní specifikace a parametry jsou zasílány v těle požadavku ve formátu JSON. Tělo požadavku může obsahovat libovolný počet parametrů v závislosti na typu úlohy.
Místo přímého provedení požadavku, tj. spuštění příslušné metody, vytvoří rozhraní API nový objekt pro danou úlohu a vloží do databáze Mongo nový záznam obsahující potřebná metadata. API vrátí uživateli ID vytvořené úlohy, ale výsledek se zpracovává asynchronně na pozadí.
Samotný běh úlohy obstarává Celery, jedná se o implementaci fronty úloh, které se provádějí asynchronně na pozadí. Celery však vyžaduje transport zpráv pro odesílání a přijímání zpráv mezi klientem a tzv. workerem (vláknem, které vykonává samotný kód). Pro tyto účely jsme použili službu Redis, ve které rozhraní API ukládá záznam o úloze. To je důležité, protože rozhraní API a analytická vrstva pracují nezávisle. Redis tak funguje jako komunikační rozhraní mezi nimi.
Využití výsledku
Aplikace NLPStudio byla společností CCFR a. s. integrována do nástroje Analytical Platform jako jeden z modulů, který uživatelům umožňuje analyzovat data různých formátů a z různých zdrojů. Na základě těchto analýz se pak mohou uživatelé rozhodovat o volbě konkrétních cenných papírů a jejich zařazení do svého obchodního portfolia. NLPStudio bylo do této platformy zařazeno pod názvem DPS Lab a na uvedených stránkách jsou k dispozici podpůrné materiály ukazující možnosti využití tohoto nástroje.
Aplikace je také využívána pro výuku témat souvisejících s problematikou zpracování přirozeného jazyka na PEF MENDELU. Jedná se o předmět Text Mining v AJ a Kroužek textminingových aplikací.
Publikace
Podrobný popis aplikace lze nalézt v článku prezentovaném na konferenci ECOS 2023: PŘICHYSTAL, J. VALOVIČ, R. JAKÚBEK, T. NLP Studio, Working paper [online] https://akela.mendelu.cz/~jprich/prichystal-NLPstudio.pdf