Czytelnia / Technologie tłumaczeniowe

5. Szczegóły implementacji

W celu przetestowania i sprawdzenia użyteczności, stworzyliśmy dwa serwery i dwóch klientów. Jeden klient i jeden serwer zostały implementowany w języku Perl, module SOAP::Lite, pozostałe zaś w PHP z NuSOAP.
Klienta i serwer w języku Perl opracowywano w ramach projektu Natura w miejscowości Braga, Portugalia. Serwer i klient PHP opracowywano na wydziale lingwistyki komputerowej na Uniwersytecie w Vigo, Hiszpania. W ten sposób mogliśmy przetestować te dwie technologie oraz ich działanie.

5.1. Implementacja serwera

Podstawowym celem implementacji serwera jest oczekiwanie na wiadomości i odpowiadanie na nie. Podstawowy problem nie stanowi implementacja usługi sieciowej ale sposób w jaki traktowana jest pamięć tłumaczeń, aby udzielić odpowiedzi w dopuszczalnym czasie.

5.1.1 Indeksowanie Pamięci Tłumaczeń

Indeksowanie Pamięci Tłumaczeń nie jest łatwe. Znając problemy z indeksowaniem pliku XML, nie będzie możliwe wykorzystywanie do tego celu formatu TMX. Z tego powodu proponujemy użycie indexera tekstu o nazwie Glimpse (Manber and Wu, 1994).

Glimpse indeksuje tekst, tworząc przy tym bardzo szybkie indeksy. Pozwolą one na szukanie dwóch wyrazów α i β w plikach, w których indeksy stwierdziły ich obecność. Indeksując wiele małych plików, szybciej otrzymujemy indeksy.

Indeksy te są zazwyczaj duże (zazwyczaj dwa razy większe od indeksowanych plików) i potrzebują dużo czasu na wprowadzenie do pamięci. Aby rozwiązać te problem, dystrybucją indexera Glimpse zajmuje się serwer. Wprowadza on w jednym czasie indeksy i pozostaje w pamięci przyjmując zapytania.

Implementacja naszego serwera wykorzystuje tę cechę. Kiedy usługa sieciowa otrzymuje zapytanie (conc lub equiv), wysyła zapytanie do serwera glimpse, czekając jednocześnie na odpowiedź i wysyłając ją ponownie w formie usługi sieciowej do klienta. Struktura ta pokazana jest na rysunku 3.

5.1.2. Implementacja funkcji podobieństwa

W chwili obecnej jest to jeden z największym problemów naszej implementacji. Wykorzystując indexer glimpse, mamy wybór: otrzymać precyzyjne dopasowanie (nie oferuje wielu możliwości na znalezienie zdania, którego potrzebujemy) bądź szukać zbioru wyrazów (zasadniczo podzielić zdania na wyrazy i otrzymać w pamięci tłumaczeń jak najwięcej wyrazów z tego zbioru – nie uwzględniając kolejności tych wyrazów).

Do rozwiązania tego problemu będziemy potrzebowali opracowania specjalnego indexera do tego zadania. Funkcja ta miałaby na celu znalezienie podobnego zdania, w którym pewne wyrazy by się różniły i pojawiłyby się również nowe wyrazy. W tym celu powinniśmy zdefiniować progi dotyczące ilości wyrazów, które mogłoby się różnić oraz ilości nowych wyrazów, które mogłoby się pojawić.

Bez względu na to jak prosto brzmi definicja, skuteczna implementacja tego typu funkcji nie jest prosta.