Opened 9 years ago

Closed 9 years ago

#30 closed task (done)

Připravit rozhraní pro generování překladových pamětí

Reported by: Vít Baisa Owned by: xbusta1
Priority: major Milestone:
Component: NLPlab Keywords: tm
Cc: Ales Horak, pary, Miloš Jakubíček, Vít Baisa Due Date:

Description

Webová stránka, do které si uživatel nahraje svou překladovou paměť (TMX), nastaví parametry (metoda, prahy, ...), skript to přechroustá a nabídne uživateli ke stažení výslednou (rozšířenou TMX).

Change History (12)

comment:1 Changed 9 years ago by Miloš Jakubíček

Pepo, jestli nevíš, jak jednoduše na to, tak odpověď je run.cgi a VítekB Ti řekne detaily ;)

comment:2 in reply to:  1 Changed 9 years ago by xbusta1

Replying to xjakub:

Pepo, jestli nevíš, jak jednoduše na to, tak odpověď je run.cgi a VítekB Ti řekne detaily ;)

Ahoj, už jsem o tom s Vítkem kdysi mluvil, nějaký nástin je tady https://nlp.fi.muni.cz/projekty/skrivanek_nda/www/index.cgi?action=input
momentálně přesně nevím, jak nejlépe spustit jednotlivé metody s nahranými daty, je vhodné spustit "make" pomocí "subprocess" modulu v pythonu.

comment:3 Changed 9 years ago by Vít Baisa

Mrkni sem:

http://stackoverflow.com/questions/20114390/python-call-makefile-compiling-and-capture-makes-output

Udělal by to tak (pro jednoduchost), že se odešle formulář, který spustí v .cgi ten make pomocí subprocess. V Makefile bude pravidlo, které zbuilduje data, která chceš vrátit na výstupu. Když budeš spouštět ten subprocess, tak dopředu musíš vědět název souboru, který má být na výstupu (vygeneruješ si jméno). To jméno pošleš prohlížeči na stránce a na té stránce budeš pravidelně spouštět AJAX (s parametrem jméno toho výsledného souboru), který bude znovu volat .cgi, které jenom bude kontrolovat, zda ten daný soubor existuje. Pokud ne, stránka zobrazí "čekejte prosím", pokud ano, nabídne se na stránce ke stažení.

Detaily případně osobně.

comment:4 Changed 9 years ago by xbusta1

Chtěl bych se zeptat, jak řešit následující dvě situace:

1) pro vygenerování překladových pamětí (tmx souborů) pro nahraný dokument je spouštěn MAKEFILE pomocí CGI, ale Apache nemá přístup do adresáře s daty od Skřivánka

2) skripty se spouští na stroji 'athena', který asi není určen pro složitější výpočty

comment:5 Changed 9 years ago by Ales Horak

ad 1) je vic moznosti, nejjednodussi je mozna setgid wrapper. udelas maly programek v C, ktery si nastavi spravnou skupinu a spusti prislusny make. nasel jsem priklad takoveho programku:

/* 
 * program setegid.c
 * 
 * Zmente paramtry funkce execle, aby volaly vas skript se spravnymi parametry.
 *
 * Kompiluje se:
 *  cc -o setegid setegid.c
 *
 * po kompilaci:
 *  chgrp skrivaneknda setegid
 *  chmod g+s setegid
 */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>

#define COMMAND "/usr/bin/make"
#define COMMAND_PAR1 "-C"
#define COMMAND_PAR2 "/nlp/projekty/skrivanek_nda/..."

int main(int argc, char **argv)
{
    gid_t effect;

    effect=getegid();
    if( setregid(-1, effect)==-1) {
        perror("setregid");
        exit(1);
    }

    execle(COMMAND,COMMAND,COMMAND_PAR1,COMMAND_PAR2,NULL,NULL);

    return(0);
}

instrukce jsou v komentarich, je potreba spravne nastavit PAR2 na adresar s Makefile. z CGI se pak spousti tento prikaz misto make.

ad 2) nejjednodussi je asi spoustet ssh spravny_stroj /nlp/projekty/skrivanek/..., ne?

comment:6 Changed 9 years ago by xbusta1

Generování TM už nějak funguje, prosím o komentáře. (https://nlp.fi.muni.cz/projekty/skrivanek_nda/www/index.cgi)

comment:7 Changed 9 years ago by Vít Baisa

  1. Nastav tam .htaccess, ať to není volně přístupné, uživ. jméno a heslo se pak pošle Skřivánkovi. HonzaB ti kdyžtak pomůže.
  2. Co používáš za editor, že všechny řádky končí miliónem mezer?
  3. Trošku jsem uhladil to HTML.

comment:8 Changed 9 years ago by Ales Horak

jakou pamet to zpracovava? co za format dokumentu to chce na vstupu? zere to DOC? nebo TXT v nejakem danem kodovani? obecne by mely byt vstupy 2 - pamet a dokument, ne? a vystup by mela byt jedna nova TMX, ne 3 podle metod (pripadne ty 3 pro info _plus_ jedna celkova).

jak se to chova pri paralelnich dotazech? neprepisuje si to pracovni soubory? kdyz to dlouho trva, tak by bylo dobre vypisovat nejake info o postupu - treba vypisovat pocet radku nejakeho narustajiciho logu nebo primo jeho obsah nebo tak neco.

kdyz nastane chyba, tak se to uzivatel dozvi? zda se mi, ze ne - dal jsem na vstup DOC a porad jen "Processing..."

Version 0, edited 9 years ago by Ales Horak (next)

comment:9 Changed 9 years ago by xbusta1

Zpracovává tu největší překladovou paměť od Skřivánka, tedy již předzpracovanou (vygenerované subsegmenty v souboru: /nlp/projekty/skrivanek_nda/git/moses_files/skriv/model/phrase-table).

Na vstupu to chce plain text v utf-8.

Generování subsegmentů trvá poměrně dlouho, proto tam není možnost nahrát překladovou paměť. Nicméně to mohu dodělat, v tom případě by mne zajímalo v jakém formátu bude TM a jak to bude s jazyky, pouze cs-en, či směr en-cs či další jazyky.

Tu celkovou rozšířenou překladovou paměť tam dodělám. U paralelních dotazů se to přepisovalo, už to upravuji.

comment:10 Changed 9 years ago by Ales Horak

ok, takze:

  • pozadavky na vstupni dokument dopiš do formulare
  • pamet nabidni pres ten select, tj. pridani nove pameti bude mozne jen pres poslani nam. nachystej k tomu make prikaz (pokud uz neni), ktery pro zadanou TMX vygeneruje prislusnou phrase-table. tu pak bude stacit rucne pridat do selectu (nebude se to menit moc casto, spis se bude experimentovat s dokumenty).

comment:11 Changed 9 years ago by xbusta1

Prosím o doplnění, jestli jsem na něco zapomněl.
-- upravit text u rozhraní
-- lépe popsat výstup
-- komentovat průběh výpočtu
-- TMX musí obsahovat pouze nejdelší spojené subsegmenty

comment:12 Changed 9 years ago by xbusta1

Resolution: done
Status: newclosed
Note: See TracTickets for help on using tickets.