{"id":589,"date":"2023-01-25T09:36:32","date_gmt":"2023-01-25T09:36:32","guid":{"rendered":"https:\/\/nlp.pef.mendelu.cz\/?page_id=589"},"modified":"2025-06-18T08:16:53","modified_gmt":"2025-06-18T08:16:53","slug":"nlp-studio-cz","status":"publish","type":"page","link":"https:\/\/nlp.pef.mendelu.cz\/index.php\/nlp-studio-cz\/","title":{"rendered":"NLP Studio"},"content":{"rendered":"\n<p><a href=\"https:\/\/nlp.pef.mendelu.cz\/index.php\/nlp-studio\/\">English version<\/a><\/p>\n\n\n\n<p>NLP Studio je webov\u00e1 aplikace, kter\u00e1 umo\u017e\u0148uje u\u017eivatel\u016fm p\u0159ipravit si vlastn\u00ed textminingov\u00e9 experimenty pro anal\u00fdzu p\u0159irozen\u00e9ho jazyka, ani\u017e by museli pou\u017e\u00edvat programovac\u00ed jazyk. K dispozici je v\u00fdvojov\u00e9 prost\u0159ed\u00ed, ve kter\u00e9m m\u016f\u017ee u\u017eivatel pracovat formou vizu\u00e1ln\u00edho programov\u00e1n\u00ed. P\u0159ipraveny jsou komponenty pro p\u0159edzpracov\u00e1n\u00ed, tr\u00e9nov\u00e1n\u00ed nebo vizualizaci. Software je ur\u010den jak pro komer\u010dn\u00ed tak pro v\u00fdukov\u00e9 \u00fa\u010dely a zjednodu\u0161uje z\u00e1jemc\u016fm sezn\u00e1men\u00ed s t\u00e9matem zpracov\u00e1n\u00ed p\u0159irozen\u00e9ho jazyka. Aplikace je dostupn\u00e1 na adrese <a href=\"https:\/\/mta.pef.mendelu.cz\/lab\/\">https:\/\/mta.pef.mendelu.cz\/lab\/<\/a> v obou jazykov\u00fdch mutac\u00edch (\u010desk\u00e1 i anglick\u00e1).<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"523\" src=\"https:\/\/nlp.pef.mendelu.cz\/wp-content\/uploads\/2024\/06\/nlp_studio-1024x523.png\" alt=\"\" class=\"wp-image-625\" srcset=\"https:\/\/nlp.pef.mendelu.cz\/wp-content\/uploads\/2024\/06\/nlp_studio-1024x523.png 1024w, https:\/\/nlp.pef.mendelu.cz\/wp-content\/uploads\/2024\/06\/nlp_studio-300x153.png 300w, https:\/\/nlp.pef.mendelu.cz\/wp-content\/uploads\/2024\/06\/nlp_studio-768x392.png 768w, https:\/\/nlp.pef.mendelu.cz\/wp-content\/uploads\/2024\/06\/nlp_studio-1536x784.png 1536w, https:\/\/nlp.pef.mendelu.cz\/wp-content\/uploads\/2024\/06\/nlp_studio-2048x1045.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Uk\u00e1zka pracovn\u00edho prost\u0159ed\u00ed s komponentami<\/figcaption><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\">Backend aplikace<\/h2>\n\n\n\n<p>Serverov\u00e1 \u010d\u00e1st syst\u00e9mu je zodpov\u011bdn\u00e1 za \u0159e\u0161en\u00ed \u00faloh od u\u017eivatele. Z tohoto pohledu lze architekturu backendu rozd\u011blit do dvou \u00farovn\u00ed.<\/p>\n\n\n\n<p>Prvn\u00ed \u00farove\u0148 p\u0159edstavuje komunika\u010dn\u00ed rozhran\u00ed s frontendem a datab\u00e1z\u00ed. V podstat\u011b se jedn\u00e1 o b\u011b\u017en\u00fd webov\u00fd server, kter\u00fd komunikuje pomoc\u00ed rozhran\u00ed REST API. Na t\u00e9to \u00farovni aplikace p\u0159ij\u00edm\u00e1 a odpov\u00edd\u00e1 na po\u017eadavky, ov\u011b\u0159uje u\u017eivatele, ale tak\u00e9 \u0159ad\u00ed \u00falohy do fronty.<\/p>\n\n\n\n<p>Druhou \u00farove\u0148 tvo\u0159\u00ed slo\u017eit\u011bj\u0161\u00ed, analytick\u00e1 \u010d\u00e1st. Ta slou\u017e\u00ed k \u0159e\u0161en\u00ed r\u016fzn\u00fdch \u00faloh NLP a je orientov\u00e1na na zpracov\u00e1n\u00ed velk\u00e9ho mno\u017estv\u00ed dat, co\u017e je obvykle \u010dasov\u011b i v\u00fdpo\u010detn\u011b n\u00e1ro\u010dn\u00e9. Proto jsme \u010d\u00e1st aplikace, kter\u00e1 tyto \u00falohy zpracov\u00e1v\u00e1, implementovali jako samostatn\u00fd software. Analytick\u00e1 vyb\u00edr\u00e1 \u00falohy z fronty a \u0159e\u0161\u00ed je na pozad\u00ed na z\u00e1klad\u011b zadan\u00fdch parametr\u016f. Mezistavy i kone\u010dn\u00fd v\u00fdsledek ukl\u00e1d\u00e1 do datab\u00e1ze. Prvn\u00ed \u00farove\u0148 se tedy na vlastn\u00edm \u0159e\u0161en\u00ed \u00faloh prakticky nepod\u00edl\u00ed. Pokud by tak \u010dinila, rozhran\u00ed API by na po\u017eadavky odpov\u00eddalo s velkou latenc\u00ed. Takov\u00e9 uspo\u0159\u00e1d\u00e1n\u00ed nav\u00edc neumo\u017e\u0148uje efektivn\u00ed spr\u00e1vu \u00faloh nebo b\u011bh na pozad\u00ed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Komunika\u010dn\u00ed rozhran\u00ed<\/h2>\n\n\n\n<p>Rozhran\u00ed Rest API je implementov\u00e1no v jazyce modern\u00edho r\u00e1mce FastAPI. Jedn\u00edm z hlavn\u00edch d\u016fvod\u016f pro FastAPI je, \u017ee umo\u017e\u0148uje asynchronn\u00ed zpracov\u00e1n\u00ed po\u017eadavk\u016f HTTP. Za norm\u00e1ln\u00edch okolnost\u00ed Python prov\u00e1d\u00ed k\u00f3d sekven\u010dn\u011b. Nap\u0159\u00edklad v p\u0159\u00edpad\u011b protokolu HTTP to znamen\u00e1, \u017ee server p\u0159ijme po\u017eadavek a\u017e pot\u00e9, co byl p\u0159edchoz\u00ed po\u017eadavek kompletn\u011b vy\u0159\u00edzen. Asynchronn\u00ed metody v\u0161ak mohou b\u00fdt do\u010dasn\u011b pozastaveny (nap\u0159. p\u0159i \u010dek\u00e1n\u00ed na data z datab\u00e1ze), \u010d\u00edm\u017e neblokuj\u00ed dal\u0161\u00ed, tzv. konkuren\u010dn\u00ed po\u017eadavky \u010dekaj\u00edc\u00ed ve front\u011b na spu\u0161t\u011bn\u00ed. Asynchronn\u00ed paradigma tedy v\u00fdrazn\u011b zkracuje dobu pot\u0159ebnou k vy\u0159\u00edzen\u00ed po\u017eadavku a je vhodn\u00e9 pro prost\u0159ed\u00ed soub\u011b\u017en\u00fdch \u00faloh, jako je webov\u00fd server. \u00dalohy zpracov\u00e1v\u00e1 analytick\u00e1 \u010d\u00e1st aplikace na druh\u00e9 \u00farovni, jak jsme se zm\u00ednili v \u00favodu t\u00e9to kapitoly.<\/p>\n\n\n\n<p>Komunikace je iniciov\u00e1na klientem, a to odesl\u00e1n\u00edm po\u017eadavku POST na koncov\u00fd bod API \/task. Koncov\u00fd bod p\u0159ij\u00edm\u00e1 po\u017eadavky pro v\u0161echny typy \u00faloh. Konkr\u00e9tn\u00ed specifikace a parametry jsou zas\u00edl\u00e1ny v t\u011ble po\u017eadavku ve form\u00e1tu JSON. T\u011blo po\u017eadavku m\u016f\u017ee obsahovat libovoln\u00fd po\u010det parametr\u016f v z\u00e1vislosti na typu \u00falohy.<\/p>\n\n\n\n<p>M\u00edsto p\u0159\u00edm\u00e9ho proveden\u00ed po\u017eadavku, tj. spu\u0161t\u011bn\u00ed p\u0159\u00edslu\u0161n\u00e9 metody, vytvo\u0159\u00ed rozhran\u00ed API nov\u00fd objekt pro danou \u00falohu a vlo\u017e\u00ed do datab\u00e1ze Mongo nov\u00fd z\u00e1znam obsahuj\u00edc\u00ed pot\u0159ebn\u00e1 metadata. API vr\u00e1t\u00ed u\u017eivateli ID vytvo\u0159en\u00e9 \u00falohy, ale v\u00fdsledek se zpracov\u00e1v\u00e1 asynchronn\u011b na pozad\u00ed.<\/p>\n\n\n\n<p>Samotn\u00fd b\u011bh \u00falohy obstar\u00e1v\u00e1 Celery, jedn\u00e1 se o implementaci fronty \u00faloh, kter\u00e9 se prov\u00e1d\u011bj\u00ed asynchronn\u011b na pozad\u00ed. Celery v\u0161ak vy\u017eaduje transport zpr\u00e1v pro odes\u00edl\u00e1n\u00ed a p\u0159ij\u00edm\u00e1n\u00ed zpr\u00e1v mezi klientem a tzv. workerem (vl\u00e1knem, kter\u00e9 vykon\u00e1v\u00e1 samotn\u00fd k\u00f3d). Pro tyto \u00fa\u010dely jsme pou\u017eili slu\u017ebu Redis, ve kter\u00e9 rozhran\u00ed API ukl\u00e1d\u00e1 z\u00e1znam o \u00faloze. To je d\u016fle\u017eit\u00e9, proto\u017ee rozhran\u00ed API a analytick\u00e1 vrstva pracuj\u00ed nez\u00e1visle. Redis tak funguje jako komunika\u010dn\u00ed rozhran\u00ed mezi nimi. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vyu\u017eit\u00ed v\u00fdsledku<\/h2>\n\n\n\n<p>Aplikace NLPStudio byla spole\u010dnost\u00ed <a href=\"https:\/\/www.ccfr.cz\/\" target=\"_blank\" rel=\"noreferrer noopener\">CCFR a. s.<\/a> integrov\u00e1na do n\u00e1stroje <a href=\"https:\/\/www.analyticalplatform.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Analytical Platform<\/a> jako jeden z modul\u016f, kter\u00fd u\u017eivatel\u016fm umo\u017e\u0148uje analyzovat data r\u016fzn\u00fdch form\u00e1t\u016f a z r\u016fzn\u00fdch zdroj\u016f. Na z\u00e1klad\u011b t\u011bchto anal\u00fdz se pak mohou u\u017eivatel\u00e9 rozhodovat o volb\u011b konkr\u00e9tn\u00edch cenn\u00fdch pap\u00edr\u016f a jejich za\u0159azen\u00ed do sv\u00e9ho obchodn\u00edho portfolia. NLPStudio bylo do t\u00e9to platformy za\u0159azeno pod n\u00e1zvem <a href=\"https:\/\/www.analyticalplatform.com\/data-processing-software\/\" target=\"_blank\" rel=\"noreferrer noopener\">DPS Lab<\/a> a na uveden\u00fdch str\u00e1nk\u00e1ch jsou k dispozici podp\u016frn\u00e9 materi\u00e1ly ukazuj\u00edc\u00ed mo\u017enosti vyu\u017eit\u00ed tohoto n\u00e1stroje.<\/p>\n\n\n\n<p>Aplikace je tak\u00e9 vyu\u017e\u00edv\u00e1na pro v\u00fduku t\u00e9mat souvisej\u00edc\u00edch s problematikou zpracov\u00e1n\u00ed p\u0159irozen\u00e9ho jazyka na PEF MENDELU. Jedn\u00e1 se o p\u0159edm\u011bt Text Mining v AJ a Krou\u017eek textminingov\u00fdch aplikac\u00ed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Publikace<\/h2>\n\n\n\n<p>Podrobn\u00fd popis aplikace lze nal\u00e9zt v \u010dl\u00e1nku prezentovan\u00e9m na konferenci <a href=\"https:\/\/ecos.mendelu.cz\/ecos-2023\" target=\"_blank\" rel=\"noreferrer noopener\">ECOS 2023<\/a>: P\u0158ICHYSTAL, J. VALOVI\u010c, R. JAK\u00daBEK, T. NLP Studio, Working paper [online] <a rel=\"noreferrer noopener\" href=\"https:\/\/akela.mendelu.cz\/~jprich\/prichystal-NLPstudio.pdf\" target=\"_blank\">https:\/\/akela.mendelu.cz\/~jprich\/prichystal-NLPstudio.pdf<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>English version NLP Studio je webov\u00e1 aplikace, kter\u00e1 umo\u017e\u0148uje u\u017eivatel\u016fm p\u0159ipravit si vlastn\u00ed textminingov\u00e9 experimenty pro anal\u00fdzu p\u0159irozen\u00e9ho jazyka, ani\u017e [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-589","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/nlp.pef.mendelu.cz\/index.php\/wp-json\/wp\/v2\/pages\/589","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nlp.pef.mendelu.cz\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nlp.pef.mendelu.cz\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nlp.pef.mendelu.cz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nlp.pef.mendelu.cz\/index.php\/wp-json\/wp\/v2\/comments?post=589"}],"version-history":[{"count":19,"href":"https:\/\/nlp.pef.mendelu.cz\/index.php\/wp-json\/wp\/v2\/pages\/589\/revisions"}],"predecessor-version":[{"id":671,"href":"https:\/\/nlp.pef.mendelu.cz\/index.php\/wp-json\/wp\/v2\/pages\/589\/revisions\/671"}],"wp:attachment":[{"href":"https:\/\/nlp.pef.mendelu.cz\/index.php\/wp-json\/wp\/v2\/media?parent=589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}