Czytelnia / Technologie tłumaczeniowe

3. Struktura Rozproszonych Pamięci Tłumaczeń

Struktura Rozproszonych Pamięci Tłumaczeń zależy w znacznym stopniu od otoczenia, w którym będzie używana.
W grupie każdy z tłumaczy korzysta ze stanowiska pracy podłączonego do sieci, w której znajdują się inne stanowiska tłumaczeniowe. To znaczy, że każde takie stanowisko będzie pełniło funkcję zarówno klienta jak i serwera Rozproszonych Pamięci Tłumaczeń. Stanowi to strukturę bardzo podobną do innych programów wymiany danych typu P2P.

Patrząc na Rozproszone Pamięci Tłumaczeń jako na usługę dostarczaną przez uniwersytet, producenta oprogramowania do tłumaczenia lub inną jednostkę, dostawca usługi pełni jedynie funkcję serwera Rozproszonych Pamięci Tłumaczeń, podczas gdy klientami mogą być klienci RPT lub członkowie struktury P2P. Na ryc. 2 przedstawiono strukturę klient/serwer.

Implementacja oprogramowania tych dwóch usług ma różne znaczenie. Implementacja typowej struktury typu klient-serwer polega na wykorzystaniu protokołów zdalnego wywołania procedury (np. RPC, Java RMI, Corba czy WebServices). Implementacja tego typu jest
nieodpowiednia dla struktury P2P.

Biorąc pod uwagę to, że każda z maszyn będzie klientem i serwerem działającym na stanowisku pracy, nie jest rzeczą powszechną posiadanie demonów w maszynach służących do pracy. Dlatego w niniejszym artykule proponujemy implementację opartą na usłudze sieciowej dla struktury klient/serwer,

4. Definicja usług Rozproszonych Pamięci Tłumaczeń

Zasada dotycząca usług sieciowych oparta jest na pewnego rodzaju Interfejsie Programów Użytkowych (API) używanym w Internecie. Każdy serwer usług sieciowych definiuje interfejs za pomocą Języka Opisu Usług Sieciowych (WSDL) (Christensen i in., 2001) używanego przez klientów.

Interfejs ten jest zbiorem definicji funkcji: argumentów, ich typów danych oraz zwrotnych typów danych, które funkcja musi wrócić. W tej części zdefiniujemy funkcje lub metody, które serwer usług sieciowych powinien implementować.

4.1. Zapytanie o języki

Idealny serwer usług sieciowych powinien nie być niczyją własnością: w większości przypadków serwery nie mogą śledzić użytkowników oraz przechowywać informacji o nich. Mając powyższe na uwadze, każda wiadomość powinna być niezależna. Dlatego też wiadomość z zapytaniem o tłumaczenie konkretnego zdania powinna zawierać nie tylko zdanie do tłumaczenia, ale także informacje o języku, w którym jest napisane to zdanie oraz informacje o języku, na który chcemy je przetłumaczyć. 

Taka wiadomość może być wystarczająca ale w niektórych przypadkach może ona doprowadzić do tego, że klienci będą zadawać pytania o tłumaczenie na języki, których nie obejmuje serwer w swoich pamięciach tłumaczeniowych.
Aby uniknąć lawiny tego typu wiadomości, ważne jest zdefiniowanie wiadomości z zapytaniem do serwera o daną parę językową:

lang_pair(L1,L2) → B


Komunikat lang_pair przesyłany jest wraz z dwoma kodami języków. Serwer odsyła natomiast wiadomość o logicznej wartości oznaczającej jego wiedzę (bądź jej brak) na temat danej pary języków.

Należy zwrócić uwagę na to, iż rozpatrujemy zwrotne pamięci tłumaczeń: jeśli serwer umie tłumaczyć z języka L1 na L2, to wówczas umie też tłumaczyć z L2 na L1.