DAUT2016/Zajęcia 6

Wprowadzenie

Dział C dotyczyć będzie praktycznych zastosowań automatów skończenie stanowych i przetworników (transduktorów) przy użyciu narzędzi OpenFST i Thrax.

Użyteczne materiały:

Instalacja

UWAGA Na komputerach wydziałowych Thrax jest zainstalowany, nie trzeba tam wykonywać poniższych kroków.

Ubuntu

Jeśli mamy prawa roota, to można zainstalować gotowe paczki

(Uwaga! Nie ręczę, czy działa, w razie problemów patrz niżej — instalacja ze źródeł)

Arch Linux

Przygotowałem gotowe paczki z OpenFST i Thraxem. Najpierw należy dodać repozytorium NLP, tzn. jako root należy do /etc/pacman.conf dopisać:

[nlp]
SigLevel = Optional TrustAll
Server = http://mrt.wmi.amu.edu.pl:8888/archlinux/$repo/os/$arch

i następnie wywołać polecania:

pacman -Sy
pacman -S thrax

Dodatkowo należy ustawić zmienną środowiskową $LD_LIBRARY_PATH, np. tak (przy każdej sesji):

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib/fst"

Instalacja ze źródeł

Zob. tutorial Compiling & Installing OpenFST and Thrax.

Jeśli pracujemy na komputerze, na którym nie mam praw administratora (np. na uczelnianych), należy jednak pamiętać, by wywołania configure opatrywać opcją --prefix=~/usr.

Rozwiązywanie zadań z działu C

Zadania:

  • jedno spośród C00-C06 (wg numeru indeksu),
  • X07 — zadanie dodatkowe.

Uwagi:

  • Zawsze należy przenieść szkielet rozwiązania z przykładowego zadania X05 (tj. pliki Makefile, run, legiatolech.grm), należy wyłącznie opracować plik .grm.
  • UWAGA: 16 stycznia zostało wrzucone właściwe rozwiązanie zadania X05, wcześniej było błędne, proszę aktualizować repozytorium.
  • (Przy przenoszeniu proszę się upewnić, że wszystkie ciągi „X05” zostały podmienione!)
  • Oczekiwane wyjście (test.exp) jest „zaśmiecone” napisami „Input/Output string: ”, proszę się tym nie przejmować, wynika to z zastosowania programu thraxrewrite-tester do testowania.
  • Warto pamiętać, że można tworzyć kaskady transduktorów (za pomocą operatora @), np. można tworzyć przybliżenie rozwiązania za pomocą jednego transduktora, a potem je poprawić innym transduktorem.
  • … ale niekiedy kaskada może wygenerować zbyt duży automat (generowanie automatu może trwać bardzo długo lub może zabraknąć pamięci)
  • można wówczas rozbić rozwiązanie na kilka plików .grm i wywołać thraxrewrite-tester kilka razy w potoku (trzeba wtedy samemu też usunąć „śmieciowe” napisy „Input/Output string: ”).