3. BUDOWA SYSTEMU TŁUMACZĄCEGO
3.5. Główna baza danych
W systemie tłumaczącym zbudowanym w ramach niniejszej pracy zaimplementowano dwie relacyjne bazy danych: baza wiedzy językowej oraz główna baza danych. Obydwie zostały ujęte na rysunkach 14 i 15 (podrozdz. 3.1.1. i 3.1.2.), które przedstawiają architekturę systemu tłumaczącego. W bazie wiedzy językowej przechowywany jest słownik języka polskiego mieszczący w sobie zakres leksykalny
Współczesny słownik języka polskiego (Dunaj 2007). Zawarto w niej wszystkie jednostki
znaczeniowe leksemów ujętych w tym słowniku, wraz z ich odmianą fleksyjną, cechami gramatycznymi, semantycznymi oraz składniowymi. Struktura bazy wiedzy językowej jest złożona, jej opis wymagałby obszernego komentarza, na który nie ma miejsca w niniejszej pracy; najważniejsze informacje dotyczące bazy wiedzy językowej zawarto w podrozdz. 3.2.3. i rozdz. 3.4.
Więcej miejsca poświęca się natomiast omówieniu głównej bazy danych systemu tłumaczącego. Przechowuje ona dane dotyczące gestów języka migowego oraz ich animacji w technologii 3D. W trakcie tworzenia systemu tłumaczącego powstały dwie wersje głównej bazy danych: robocza i docelowa. Wersja robocza jest obszerniejsza, zawiera bowiem dodatkowo dane dotyczące sesji nagraniowych przeprowadzonych systemem motion capture; zob. podrozdz. 3.2.2. niniejszej pracy dotyczący rejestracji i obróbki gestów zarejestrowanych systemem motion capture.
A) Wersja robocza głównej bazy danych
Na strukturę głównej bazy danych w wersji roboczej składają się cztery encje:
SLOWNIK_GESTOW, UKLAD_DLONI, MIMIKA_TWARZY, JEZYK, SESJA i MIGI_EMT.
Encja SLOWNIK_GESTOW
Tabela służy do reprezentacji danych składających się na słownik języka migowego i zawiera następujące kolumny:
• ID_GESTU – klucz główny;
• NAZWA_LEKSEMU_GESTU – leksykograficzna nazwa gestu;
• BLENDER_NAZWA_MIGU – unikalna nazwa gestu, która stanowi klucz łączący
bazę wiedzy językowej z główną bazą danych. Nazwy gestów przechowywane w tej kolumnie służą w procesie ustalenia ekwiwalencji. Struktura wyjściowa zwrócona w procesie tłumaczenia przez serwer translacji, zawiera kilka składowych dla każdej przetłumaczonej jednostki. Jedną ze składowych stanowi klucz tekstowy BLENDER_NAZWA_MIGU, który wskazuje, jaki obiekt binarny przechowujący odpowiednie koordynaty 3D, ma być pobrany z głównej bazy danych w celu oddania danej jednostki sensu w postaci animacji gestu w technologii 3D.
• OPIS_TEKSTOWY – opis tekstowy gestu języka migowego w formie zdań języka
polskiego;
• ANIMACJA_KOSCI – w kolumnie przechowywana jest animacja 3D danego gestu
w formie klatek kluczowych składających się z przestrzennych wartości kątowych kości modelu128 (zob. podrozdz. 3.3.10.1.);
• UKLADY_DLONI – kolumna przechowująca schematy zmian układów dłoni,
charakterystycznych dla danego gestu;
• MIMIKA_TWARZY – przechowuje nazwę mimiki, jeśli dany gest nacechowany jest
mimiką twarzy129. Kolumna ta pełni rolę klucza obcego, który tworzy relację z tabelą MIMIKA_TWARZY;
128 Z wyjątkiem kości dłoni, które animowane są oddzielnie.
129 Do niektórych gestów języka migowego przywiązana jest mimika twarzy. Gesty te najczęściej reprezentują słowa, które niosą z sobą pewne emocje np. "boli", "lubię", "nie lubię", "kocham" itp.
• WIELOSKLADNIKOWY – jeśli gest składa się z dwu lub więcej gestów, to w polu
tym przechowywana jest sekwencja gestów składowych w postaci nazw
BLENER_NAZWA_MIGU jako gestów składowych. W takim przypadku pole ANIMACJA_KOSCI nie jest używane (powinno być puste). Zapobiega to
redundancji w bazie i rozwiązuje problem gestów złożonych. Dla każdego z pobranych składowych BLENER_NAZWA_MIGU sprawdzane jest czy nie są one złożone z innych gestów. Jeśli występuje taka sytuacja zamiast
BLENER_NAZWA_MIGU dołączane są jego składowe. Procedura ta działa
rekursywnie, aż do uzyskania łańcucha nazw składających się z BLENER_NAZWA_MIGU, które nie są wieloskładnikowe. Powstały w ten sposób łańcuch reprezentuje pojedynczy gest złożony z wielu składowych gestów130.
• ZNACZENIE_MIGU – opis znaczenia migów stosowany dla gestów cechujących
się polisemią;
• ID_JEZYKA – klucz obcy dla relacji z tabelą JEZYK.
Encja JEZYK
W głównej bazie danych rozróżniono podział języka migowego na PJM i SJM, który niesie z sobą różnice w znakach ideograficznych. Tabela posiada następujące kolumny:
• ID_JEZYKA – klucz główny;
• NAZWA_JEZYKA – nazwa języka lub systemu językowego. Wyróżnia się SJM
(System językowo migowy), PJM (Polski język migowy) lub PJM_SJM (gdy gest jest wspólny dla SJM i PJM).
Encja UKLAD_DLONI
Tabela zawiera klatki kluczowe wszystkich układów dłoni języka migowego; opisano je w podrozdz. 2.3.6. i 3.3.10.2. niniejszej pracy. W tabeli wyróżnić można następujące kolumny:
• NAZWA_UKLADU – unikalna nazwa układu dłoni,
• ANIMACJA_KOSCI – klatka kluczowa danego układu dłoni w postaci
przestrzennych wartości kątowych kości dłoni.
Encja MIMIKA_TWARZY
Tabela przechowuje klatki kluczowe wszystkich odkształceń twarzy, poprzez które realizowana jest animacja ruchu ust i emocje awatara (zob. podrozdz. 3.3.10.3.). Posiada ona kolumny:
• NAZWA_ODKSZTALCENIA – unikalna nazwa mimiki twarzy,
• ODKSZTALCENIE_MIMIKI – klatka kluczowa danej mimiki twarzy. Przechowuje
pozycje werteksów twarzy tworzące odpowiednie odkształcenie siatki twarzy.
130 "egzorcysta" = "ksiądz" + "egzorcyzm", natomiast "egzorcyzm" = "wypędzać" + "diabeł", zatem "egzorcysta" = "ksiądz" + "wypędzać" + "diabeł"
Encja SESJA
W tabeli pamiętane są sesje motion capture. Tabela składa się z następujących kolumn:
• ID_SESJI – klucz główny;
• NAZWA_SESJI – nazwa sesji, powinna być identyczna z nazwą pliku wyjściowego
wyeksportowanego z oprogramowania, używanego przez system motion capture do rejestracji danych. W tym przypadku jest to duży plik tekstowy o rozszerzeniu
EMT przechowujący całą sesję, który zostanie następnie automatycznie pocięty
w procesie obróbki.
Encja MIGI_EMT
Tabela przechowuje dane źródłowe dotyczące animacji gestu. Jest ona bezpośrednio powiązana z tabelami SLOWNIK_GESTOW i SESJA. Składają się na nią następujące kolumny:
• ID_EMT – klucz główny;
• CUT_EMT – w kolumnie przechowywana jest zawartość pliku EMT dla
pojedynczego gestu zarejestrowanego systemem motion capture. Są to surowe dane źródłowe w postaci tekstowej, które należy poddać dalszej obróbce. Po zakończeniu obróbki dane wynikowe zapisywane są do kolumny
ANIMACJA_KOSCI w tabeli SLOWNIK_GESTOW, jako gotowa animacja gestu;
• START_TIME – pierwsza ramka animacji docelowej (dotyczy danych źródłowych
poddanych obróbce)131;
• STOP_TIME – ostatnia ramka animacji docelowej;
• ID_GESTU – klucz obcy określający relację z tabelą SLOWNIK_GESTOW.
• ID_SESJI – klucz obcy definiujący relację z tabelą SESJA. B) Wersja docelowa głównej bazy danych
Struktura głównej bazy danych w wersji docelowej cechuje się mniejszą złożonością, zob. rys. 65 poniżej, przedstawiający diagram encji głównej bazy danych w wersji docelowej. Porównując go z diagramem w wersji roboczej, pokazanym na rys. 64, zauważyć można, że dla bazy docelowej usunięto tabele SESJA i MIGI_EMT oraz kolumnę VIDEO_TEMP w tabeli SŁOWNIK_GESTOW.
131 Proces automatycznego pocięcia gestów w sesji nie ustala właściwego początku i końca animacji dla gestu. Parametry te są ustalane w procesie obróbki gestów i pamiętane w bazie danych w razie potrzeby korekty lub ponownej obróbki.
Zredukowana część struktury dotyczy procesu akwizycji danych i nie jest wykorzystywana w procesie translacji i wizualizacji. Z rys. 65 widać, że tabele
SLOWNIK_GESTOW i UKLAD_DLONI są złączone relacją pośrednią. Ze względów
praktycznych nie zastosowano pomiędzy nimi tabeli asocjacyjnej. Analizując wyniki procesu translacji w języku Prolog, łatwiej je interpretować, gdy mają one formę tekstową, nie liczbową. Dlatego w procesie translacji zamiast unikalnego identyfikatora gestu
ID_GESTU używa się unikalnej nazwy gestu BLENDER_NAZWA_MIGU. Podobnie jest
z tabelami UKLAD_DLONI i MIMIKA_TWARZY. Relację wielości dla kolumny
UKLADY_DLONI w tabeli SLOWNIK_GESTOW tworzy łańcuch tekstowy przechowujący
jeden lub więcej układów dłoni odseparowanych od siebie znakiem średnika, a układy dłoni dla danego gestu uzyskuje się, dokonując parsowania tego łańcucha.