Urównoleglanie Tekstów. Dwujęzycznych. Na Poziomie Zdania



Podobne dokumenty
TEORETYCZNE PODSTAWY INFORMATYKI

Matematyczne Podstawy Informatyki

Maciej Piotr Jankowski

Teoretyczne podstawy informatyki

Programowanie w języku Python. Grażyna Koba

Efektywność algorytmów

Programowanie dynamiczne

Elementy modelowania matematycznego

Programowanie w języku C++ Grażyna Koba

Aproksymacja funkcji a regresja symboliczna

Zaawansowane algorytmy i struktury danych

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Schemat programowania dynamicznego (ang. dynamic programming)

Układy stochastyczne

Zaawansowane algorytmy i struktury danych

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

Optymalizacja ciągła

Lokalizacja Oprogramowania

Algorytm. a programowanie -

WYRAŻENIA ALGEBRAICZNE

0 + 0 = 0, = 1, = 1, = 0.

Języki programowania zasady ich tworzenia

Spacery losowe generowanie realizacji procesu losowego

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Algorytmy sortujące i wyszukujące

( x) Równanie regresji liniowej ma postać. By obliczyć współczynniki a i b należy posłużyć się następującymi wzorami 1 : Gdzie:

Zad. 3: Układ równań liniowych

Zasady programowania Dokumentacja

Transformata Fouriera. Sylwia Kołoda Magdalena Pacek Krzysztof Kolago

Rozdział 2: Metoda największej wiarygodności i nieliniowa metoda najmniejszych kwadratów

Lekcja : Tablice + pętle

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Bioinformatyka. Ocena wiarygodności dopasowania sekwencji.

Złożoność obliczeniowa zadania, zestaw 2

Metody numeryczne Wykład 4

Zadanie 1. Potęgi (14 pkt)

Statystyka matematyczna dla leśników

Rozkłady statystyk z próby

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Szukanie rozwiązań funkcji uwikłanych (równań nieliniowych)

Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)

5. Rozwiązywanie układów równań liniowych

Wprowadzenie do analizy korelacji i regresji

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Teoretyczne podstawy informatyki

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Testowanie hipotez statystycznych

Wyszukiwanie binarne

Algorytmika i pseudoprogramowanie

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

4. Postęp arytmetyczny i geometryczny. Wartość bezwzględna, potęgowanie i pierwiastkowanie liczb rzeczywistych.

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Weryfikacja hipotez statystycznych

Testowanie hipotez statystycznych. Wnioskowanie statystyczne

Sortowanie - wybrane algorytmy

Jeśli X jest przestrzenią o nieskończonej liczbie elementów:

Programowanie i techniki algorytmiczne

7. Estymacja parametrów w modelu normalnym( ) Pojęcie losowej próby prostej

1 Wprowadzenie do algorytmiki

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO

Zapisywanie algorytmów w języku programowania

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Wprowadzenie do złożoności obliczeniowej

Algorytmy i struktury danych

Przykłady zastosowań funkcji tekstowych w arkuszu kalkulacyjnym

Technologie informacyjne - wykład 12 -

Definicje. Algorytm to:

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Metody numeryczne. dr Artur Woike. Ćwiczenia nr 2. Rozwiązywanie równań nieliniowych metody połowienia, regula falsi i siecznych.

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki

Systemy liczbowe używane w technice komputerowej

Statystyka. Rozkład prawdopodobieństwa Testowanie hipotez. Wykład III ( )

INŻYNIERIA WIEDZY I SYSTEMY EKSPERTOWE

Błędy przy testowaniu hipotez statystycznych. Decyzja H 0 jest prawdziwa H 0 jest faszywa

Weryfikacja hipotez statystycznych. KG (CC) Statystyka 26 V / 1

Zadanie 1. Suma silni (11 pkt)

KADD Metoda najmniejszych kwadratów funkcje nieliniowe

Programowanie dynamiczne cz. 2

W rachunku prawdopodobieństwa wyróżniamy dwie zasadnicze grupy rozkładów zmiennych losowych:

Programowanie w VB Proste algorytmy sortowania

1. Liczby naturalne, podzielność, silnie, reszty z dzielenia

Oprogramowanie typu CAT

Testowanie hipotez statystycznych.

Zadanie 1 Zakładając liniową relację między wydatkami na obuwie a dochodem oszacować MNK parametry modelu: y t. X 1 t. Tabela 1.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Układy równań liniowych. Krzysztof Patan

Polcode Code Contest PHP-10.09

Faza strategiczna. Synteza. Analiza. Instalacja. Faza strategiczna. Dokumentacja. kodowanie implementacja. produkt konserwacja

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

Wykład 5 Dopasowywanie lokalne

RÓWNANIA NIELINIOWE Maciej Patan

Sortowanie zewnętrzne

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium Nr 4

Programowanie celowe #1

Transkrypt:

Uniwersytet im. Adama Mickiewicza w Poznaniu Wydział Matematyki i Informatyki Jarosław Lipski Urównoleglanie Tekstów Dwujęzycznych Na Poziomie Zdania Praca magisterska napisana pod kierunkiem dr Krzysztofa Jassema Poznań 2007

mojej ukochanej Marysi

Spis treści Wstęp...8 1. Pojęcia...10 1.1. Segmentacja tekstu...10 1.1.1. Definicje...10 1.1.1.1. Definicja tekstu...10 1.1.1.2. Definicja segmentu...10 1.1.1.3. Definicja procesu segmentacji tekstu...10 1.1.2. Problemy segmentacji tekstu...10 1.1.3. Zastosowania segmentacji tekstu...11 1.2. Urównoleglanie tekstów dwujęzycznych...11 1.2.1. Definicje...11 1.2.1.1. Definicja tekstu źródłowego i tekstu docelowego...11 1.2.1.2. Definicja segmentu źródłowego i segmentu docelowego...11 1.2.1.3. Definicja dopasowania...12 1.2.1.4. Definicja kategorii dopasowania...12 1.2.1.5. Definicja urównoleglenia...12 1.2.1.6. Definicja procesu urównoleglania tekstów dwujęzycznych...12 1.2.1.7. Definicja korpusu równoległego...13 1.2.2. Poziomy szczegółowości urównoleglania tekstów dwujęzycznych...13 1.2.3. Problemy przy urównoleglaniu tekstów dwujęzycznych...13 1.2.4. Miary jakości urównoleglania tekstów dwujęzycznych...14 1.2.4.1. Dokładność...14 1.2.4.2. Kompletność...14 1.2.5. Zastosowania dopasowywania tekstów dwujęzycznych...14 2. Algorytmy urównoleglania tekstów dwujęzycznych...16 2.1. Algorytm Gale'a i Churcha bazujący na długościach segmentów...16 2.1.1. Informacje wstępne...16 2.1.1.1. Ogólna charakterystyka algorytmów bazujących na długościach segmentów...16 2.1.1.2. Zalety algorytmów bazujących na długościach segmentów...16 2.1.1.2.1. Niezależność od języków tekstów...16 2.1.1.2.2. Duża wydajność...16 2.1.1.2.3. Niewielkie wymagania pamięciowe...17 3

2.1.1.3. Wady algorytmów bazujących na długościach segmentów...17 2.1.1.3.1. Niska dokładność urównoleglenia dla trudnych tekstów...17 2.1.2. Sposób działania algorytmu...17 2.1.2.1. Szkielet algorytmu urównoleglania...17 2.1.2.2. Funkcja prawdopodobieństwa p...19 2.1.2.2.1. Miara długości segmentu...19 2.1.2.2.2. Wartość funkcji p...19 2.1.2.2.3. Parametry rozkładu normalnego...20 2.1.2.2.4. Obliczanie wartości funkcji p...20 2.1.2.2.5. Wybieranie najlepszych dopasowań...21 2.1.2.3. Pseudokod algorytmu...21 2.1.2.4. Złożoność algorytmu...22 2.1.2.5. Jakość urównoleglenia...23 2.2. Algorytm Moore'a bazujący na treści segmentów...24 2.2.1. Informacje wstępne...24 2.2.1.1. Ogólna charakterystyka algorytmu Moore'a...24 2.2.1.2. Zalety algorytmów bazujących na treści segmentów...24 2.2.1.2.1. Dokładność urównoleglania...24 2.2.1.3. Wady algorytmów bazujących na treści segmentów...25 2.2.1.3.1. Zależność od języka...25 2.2.1.3.2. Mniejsza wydajność...25 2.2.1.3.3. Duże wymagania pamięciowe...25 2.2.2. Sposób działania algorytmu...25 2.2.2.1. Fazy algorytmu Moore'a...25 2.2.2.2. Faza 1. Urównoleglanie na podstawie długości segmentów...26 2.2.2.2.1. Miara długości segmentu...26 2.2.2.2.2. Rozkłady długości segmentów...27 2.2.2.2.3. Obliczanie wartości funkcji p...27 2.2.2.3. Faza 2. Filtrowanie najlepszych dopasowań...28 2.2.2.4. Faza 3. Trenowanie modeli statystycznych...28 2.2.2.4.1. Modele języka...29 2.2.2.4.2. Model translacji...29 2.2.2.4.2.1. Sposób działania modelu 1 IBM-a...29 2.2.2.4.2.2. Trenowanie modelu translacji...30 2.2.2.4.2.3. Modyfikacje sposobu trenowania modelu 1 IBM-a w algorytmie Moore'a 4

...31 2.2.2.4.2.4. Pseudokod algorytmu trenowania modelu translacji...31 2.2.2.5. Faza 4. Urównoleglanie na podstawie treści segmentów...32 2.2.2.5.1. Szkielet algorytmu...32 2.2.2.5.2. Funkcja prawdopodobieństwa p...33 2.2.2.5.3. Pseudokod algorytmu...34 2.2.2.6. Złożoność algorytmu...36 2.2.2.6.1. Optymalizacja wyszukiwania najlepszego urównoleglania beam search...36 2.2.2.7. Jakość urównoleglania...37 3. Program do segmentacji tekstu - split...38 3.1. Wstęp...38 3.2. Założenia programu...38 3.3. Implementacja programu...39 3.3.1. Interfejs użytkownika...39 3.3.2. Standard wymiany reguł podziału SRX...39 3.3.2.1. Struktura pliku SRX...40 3.3.2.2. Przykładowy plik SRX...40 3.3.2.3. Interpretacja przykładowego pliku...41 3.3.3. Architektura programu...41 3.3.3.1. Interfejs Splitter i klasy go implementujące...42 3.3.3.2. Klasy odpowiadające strukturze pliku SRX...43 3.4. Algorytmy segmentacji tekstu...43 3.4.1. Prosty algorytm segmentacji tekstu na zdania i paragrafy...43 3.4.1.1. Wstęp...43 3.4.1.2. Zasada działania algorytmu...43 3.4.1.3. Diagram stanów algorytmu...44 3.4.1.4. Opis działania algorytmu...44 3.4.2. Algorytm segmentacji tekstu oparty na regułach podziału...45 3.4.2.1. Wstęp...45 3.4.2.2. Dane wejściowe algorytmu...45 3.4.2.2.1. Reguły podziału zapisane w formacie SRX...45 3.4.2.2.2. Tekst wejściowy...45 3.4.2.2.3. Język tekstu wejściowego...45 3.4.2.3. Utworzenie obiektu SrxSplitter...46 3.4.2.3.1. Diagram sekwencji tworzenia obiektu SrxSplitter w języku UML...46 5

3.4.2.3.2. Opis sekwencji tworzenia obiektu SrxSplitter...46 3.4.2.4. Pobranie kolejnego segmentu z tekstu wejściowego...47 3.4.2.4.1. Diagram sekwencji operacji pobrania kolejnego segmentu z tekstu wejściowego w języku UML...47 3.4.2.4.2. Opis operacji pobrania kolejnego segmentu tekstu...47 3.4.2.5. Złożoność algorytmu...48 3.4.2.5.1. Ogólne oszacowanie złożoności czasowej algorytmu...48 3.4.2.5.2. Uzyskana wydajność algorytmu...49 3.4.2.6. Próby optymalizacji algorytmu...50 3.4.2.6.1. Zwiększenie wydajności...50 3.4.2.6.2. Zmniejszenie zużycia pamięci...51 4. Program do dopasowywania tekstów dwujęzycznych align...52 4.1. Wstęp...52 4.2. Założenia programu...52 4.3. Interfejs programistyczny...53 4.3.1. Etapy urównoleglania tekstów dwujęzycznych...53 4.3.1.1. Parsowanie...53 4.3.1.2. Segmentacja...53 4.3.1.3. Oczyszczanie...54 4.3.1.4. Urównoleglanie...54 4.3.1.5. Selekcja...54 4.3.1.6. Formatowanie...54 4.3.2. Architektura programu...54 4.3.2.1. Klasa Alignment...54 4.3.2.2. Interfejs Parser...55 4.3.2.3. Interfejs Formatter...55 4.3.2.4. Interfejs Filter...56 4.3.2.4.1. Klasa Aligner...56 4.3.2.4.1.1. Interfejs AlignAlgorithm...57 4.3.2.4.2. Klasa Modifier...57 4.3.2.4.2.1. Interfejs ModifyAlgorithm...57 4.3.2.4.2.1.1. Klasa abstrakcyjna SplitAlgorithm...57 4.3.2.4.2.1.2. Klasa abstrakcyjna MergeAlgorithm...57 4.3.2.4.2.1.3. Klasa abstrakcyjna CleanAlgorithm...57 4.3.2.4.3. Klasy wybierające część dopasowań...57 4.4. Interfejsy użytkownika...58 6

4.4.1. Interfejs Tekstowy...58 4.4.1.1. Format pliku AL...58 4.4.1.2. Standard wymiany pamięci tłumaczeń TMX...58 4.4.1.2.1. Struktura dokumentu TMX...59 4.4.1.2.2. Przykładowy plik w formacie TMX...60 4.4.1.3. Polecenia programu align...61 4.4.1.3.1. Polecenie parse...61 4.4.1.3.2. Polecenie format...62 4.4.1.3.3. Polecenie align...63 4.4.1.3.4. Polecenie modify...65 4.4.1.3.5. Polecenie select...66 4.4.1.3.6. Polecenie compare...67 4.4.1.4. Przykłady...67 4.4.1.4.1. Przykład urównoleglania algorytmem Gale'a i Churcha...67 4.4.1.4.2. Przykład urównoleglania algorytmem Moore'a...67 4.4.2. Interfejs urównoleglania w systemie hetman...68 4.4.2.1. Czym jest hetman?...68 4.4.2.2. Zastosowanie urównoleglania tekstów w systemie hetman...68 4.4.2.3. Interferjs użytkownika do urównoleglania tekstów w systemie hetman...69 4.4.2.3.1. Import dokumentu...69 4.4.2.3.2. Wybranie pliku do importu...70 4.4.2.3.3. Opcje importu...71 4.4.2.3.4. Postęp importu...72 4.4.2.3.5. Podsumowanie importu...73 4.4.2.3.6. Nowo zaimportowany dokument po imporcie...74 4.4.2.3.7. Opcja urównoleglania...75 4.4.2.3.8. Wybór dokumentów do urównoleglenia...76 4.4.2.3.9. Postęp urównoleglania...77 4.4.2.3.10. Podsumowanie urównoleglania...78 4.4.2.3.11. Widok dwukolumnowy urównoleglonego dokumentu...79 4.4.2.3.12. Tłumaczenie za pomocą pamięci tłumaczeń...80 Zakończenie...81 Bibliografia...82 7

Wstęp W niniejszej pracy zajmuję się problemem urównoleglania tekstów dwujęzycznych 1 na poziomie zdania. Rozwiązanie tego problemu polega na dopasowaniu do siebie odpowiadających sobie zdań w tekstach będących wzajemnymi tłumaczeniami. Dzięki opracowaniu algorytmów dokonujących tego zadania automatycznie możliwe stało się pozyskanie dużych urównoleglonych korpusów tekstów które znajdują zastosowanie w wielu aspektach związanych z lingwistyką komputerową, szczególnie zaś w tłumaczeniu automatycznym (ang. Machine Translation) i tłumaczeniu wspomaganym komputerowo (ang. Computer Aided Translation). Ponadto szerzej omawiam w niniejszej pracy także problem podziału tekstu na zdania, który jest jednym z istotnych elementów urównoleglania. W pracy rysuje się pewien, co prawda nieostry, podział na część teoretyczną, którą tworzą pierwszy i drugi rozdział oraz część praktyczną rozdziały trzeci i czwarty. W pierwszym rozdziale zdefiniowane są podstawowe pojęcia związane z urównoleglaniem i segmentacją tekstów dwujęzycznych. Ponadto, krótko omówione są zastosowania opisywanych algorytmów. W drugim rozdziale przedstawione są od strony teoretycznej dwa algorytmy urównoleglania tekstów dwujęzycznych: algorytm Gale'a i Churcha oraz algorytm Moore'a. Omówione jest ich podłoże matematyczne, sposób działania wraz z pseudokodem oraz pokrótce analiza złożoności obliczeniowej i skuteczność działania. Wybór omawianych algorytmów nie jest przypadkowy algorytm Gale'a i Churcha jest szeroko rozpowszechnionym algorytmem bazującym wyłącznie na długościach segmentów. Zrozumienie mechaniki jego działania ułatwia znacznie zrozumienie bardziej złożonego algorytmu Moore'a, który w pierwszej fazie swego działania wykorzystuje algorytm podobny do algorytmu Gale'a i Churcha. Algorytm Moore'a jest jednym z najlepszych znanych obecnie algorytmów urównoleglania. W trzecim rozdziale opisany jest program do segmentacji tekstu split. Program realizuje dwa stworzone przeze mnie algorytmy podziału tekstu, dla których dokonana jest w tym rozdziale analiza złożoności obliczeniowej. Omówiona jest również architektura programu oraz jego interfejs programistyczny. Czwarty rozdział dotyczy programu do urównoleglania tekstów dwujęzycznych align, czyli 1 Po angielsku nazwa problemu brzmi bilingual text alignment. W języku polskim nie istnieje jednoznacznie zdefiniowany odpowiednik słowa alignment, Najczęściej stosowane jest tłumaczenie dopasowywanie, ale moim zdaniem jest to określenie zbyt szerokie, dlatego stosuje określenie używane alternatywnie urównoleglanie. 8

praktycznej implementacji idei przedstawionych w rozdziale drugim. Są w nim omówione między innymi interfejs programistyczny oraz tekstowy interfejs użytkownika. W ostatnim fragmencie pracy przedstawione jest wykorzystanie programu programu align w systemie zarządzania pamięcią tłumaczeń o nazwie hetman. 9

1. Pojęcia 1.1. Segmentacja tekstu 1.1.1. Definicje 1.1.1.1. Definicja tekstu Tekstem w niniejszej pracy nazywam dowolny skończony, zazwyczaj stosunkowo długi, ciąg znaków, mający pewne znaczenie w języku naturalnym i stanowiący pewną całość. Tekstami są na przykład artykuły, książki, strony internetowe, treści umów itd. 1.1.1.2. Definicja segmentu Segmentem w niniejszej pracy nazywam pewien wydzielony na podstawie pewnego kryterium fragment tekstu. Mówiąc o segmencie najczęściej mam na myśli zdanie, jednak może to też być akapit, rozdział, czy część zdania albo słowo. 1.1.1.3. Definicja procesu segmentacji tekstu Segmentacją w niniejszej pracy określam proces dzielenia tekstu na segmenty, podczas którego nie są pomijane żadne znaki. Wynikiem tego procesu jest lista segmentów. Zatem jeśli T jest tekstem, a t 1, t 2,..., t n listą segmentów powstałą w procesie segmentacji tego tekstu, to T =t 1 t 2... t n, gdzie operator oznacza konkatenację napisów. 1.1.2. Problemy segmentacji tekstu Problemy segmentacji tekstu zależą od przyjętego poziomu szczegółowości segmentacji. Na przykład podział tekstu na paragrafy jest stosunkowo prosty do przeprowadzenia, wystarczy bowiem dzielić tekst po znaku końca wiersza2. Podział na wyrazy jest już zadaniem trudniejszym. Jednak w przypadku niniejszej pracy najczęściej stosowanym poziomem szczegółowości segmentacji jest zdanie. Zadanie podziału tekstu na zdania z początku może wydawać się trywialne - wystarczy dzielić tekst po kropce, znaku zapytania lub wykrzykniku. Niestety, istnieje tak duża liczba innych zastosowań znaku kropki - na przykład w skrótach, liczbach, datach itd., że zachodzi potrzeba zastosowania bardziej wyrafinowanej metody. 2 Albo przed znakiem końca wiersza, zależnie od przyjętej konwencji. 10

1.1.3. Zastosowania segmentacji tekstu Segmentacja tekstu ma bardzo wiele zastosowań. Każde automatyczne przetwarzanie tekstu wymaga najczęściej jego podziału na mniejsze jednostki. Powodem umieszczenia w niniejszej pracy fragmentu o segmentacji tekstu jest jej zastosowanie przy urównoleglaniu tekstów dwujęzycznych. Segmentacja stanowi pierwszy krok urównoleglania. W zależności od poziomu szczegółowości urównoleglania dokonuje się odpowiedniej segmentacji tekstów wejściowych. Najczęściej stosowany jest podział na zdania. Przydatny jest także podział tekstu na wyrazy jako pomocniczy w niektórych algorytmach urównoleglania. W celu zwiększenia wydajności urównoleglania stosuje się niekiedy także podział na akapity. Dobrze przeprowadzona segmentacja podnosi jakość urównoleglania. Segmenty są atomowymi jednostkami dla algorytmów urównoleglania. Jeśli segmentacja jest zbyt mało dokładna powstaje zbyt mało segmentów, bo cześć z nich jest w rzeczywistości konkatenacją kilku segmentów, w efekcie czego wynik urównoleglania jest niedostatecznie dokładny. Jeśli segmentacja jest zbyt szczegółowa powstaje zbyt dużo segmentów, ponieważ część z nich będzie w rzeczywistości fragmentami segmentów, a zadanie urównoleglenia staje się trudniejsze ze względu na zbyt dużą liczbę stopni swobody. W niektórych przypadkach ze względu na ograniczenia algorytmów poprawne urównoleglenie może być w ogóle niemożliwe. Niekiedy jednak algorytm urównoleglania potrafi poradzić sobie z błędami segmentacji. 1.2. Urównoleglanie tekstów dwujęzycznych 1.2.1. Definicje 1.2.1.1. Definicja tekstu źródłowego i tekstu docelowego W niniejszej pracy używam określeń tekst źródłowy oraz tekst docelowy. Można się domyślać, że oznaczają one odpowiednio tekst i jego tłumaczenie, jednak jest to czysto umowne chodzi po prostu o pierwszy tekst i drugi tekst które mają zostać poddane urównolegleniu, niezależnie od tego, który jest tłumaczeniem którego, albo czy w ogóle są bezpośrednio wzajemnymi tłumaczeniami. Tekst źródłowy oznaczam przez S, a tekst docelowy przez T. 1.2.1.2. Definicja segmentu źródłowego i segmentu docelowego Analogicznie jak w przypadku tekstów źródłowego i docelowego, segmentem źródłowym nazywam segment pochodzący z tekstu źródłowego, a segmentem docelowym segment pochodzący z tekstu docelowego. Segmenty źródłowe oznaczam literą s, a segmenty docelowe literą t. 11

1.2.1.3. Definicja dopasowania Mianem dopasowania określam parę składającą się z listy segmentów źródłowych i odpowiadającej jej listy segmentów docelowych. Trzymając się przyjętych oznaczeń, jeśli a jest dopasowaniem, to: a= s i, s i 1,..., s i e 1, t j,t j 1,...,t j f 1. 1.2.1.4. Definicja kategorii dopasowania Kategorią dopasowania jest para liczb e i f, które określają odpowiednio ilość segmentów źródłowych i ilość segmentów docelowych biorących udział w dopasowaniu. Kategorię dopasowania oznaczam następująco: c= e f. Na przykład 2 1, czytane jako dwa do jeden, oznacza kategorię dopasowania dwóch segmentów źródłowych do jednego segmentu docelowego. 1.2.1.5. Definicja urównoleglenia W niniejszej pracy mianem urównoleglenia tekstów źródłowego i docelowego określam listę dopasowań obejmującą cały tekst źródłowy i docelowy, albo pewien fragment tych tekstów. Dodatkowo segmenty tekstów źródłowego i docelowego nie mogą być zamienione kolejnością i nie mogą być w obrębie jednego dopasowania pominięte. Formalnie można to zapisać w następujący sposób. A= a1, a2,..., ar Niech e1 f 1, e2 f 2,..., er f r oznacza urównoleglenie, niech będą kategoriami dopasowań tego urównoleglenia, niech S=s 1 s 2... sn oznacza tekst źródłowy, niech T =t 1 t 2... t m oznacza tekst docelowy. Niech dopasowanie ai składa się z następujących segmentów źródłowych i docelowych: ai= s k, s k 1,..., s k e, t l,t l 1,..., s t f. Wówczas zachodzi k i 1 k i ei, l i 1 l i f i i i i i i i l i r dla i=1,2,..., r 1, k 1 1, l 1 1, k r er n, l r f r m oraz r ei n, f i m. i =1 i =1 1.2.1.6. Definicja procesu urównoleglania tekstów dwujęzycznych Urównloleglanie tekstów dwujęzycznych, czasem zwane dopasowywaniem tekstów dwujęzycznych, jest procesem znajdywania odpowiadających sobie segmentów w tekstach będących wzajemnymi tłumaczeniami. Wynikiem tego procesu jest urównoleglenie, czyli lista dopasowań. 12

1.2.1.7. Definicja korpusu równoległego Korpus równoległy to zbiór tekstów wybranych na podstawie określonych kryteriów, z których każdy został przetłumaczony na jeden lub więcej języków. 1.2.2. Poziomy szczegółowości urównoleglania tekstów dwujęzycznych Teksty można urównoleglać na różnych poziomach szczegółowości, w zależności od zastosowań tworzonego korpusu równoległego. Do uzyskania określonego poziomu szczegółowości stosuje się też różne metody urównoleglania. Omówione w tej pracy algorytmy zostały stworzone z myślą o urównoleglaniu tekstów dwujęzycznych na poziomie zdania. Mogą być także z powodzeniem stosowane do urównoleglania na poziomach bardziej ogólnych, takich jak akapity czy rozdziały, ale nie nadają się do urównoleglania na poziomach bardziej szczegółowych takich jak frazy czy słowa. Wynika to z faktu że w przedstawionych w tej pracy algorytmach dopasowane są do siebie kolejne segmenty, a nie jest obsługiwany przypadek zamiany ich kolejności. Jednak odpowiadające sobie słowa bardzo często występują w innej kolejności w zdaniu źródłowym i jego tłumaczeniu po prostu zdania w różnych językach mają różny szyk. Jedyne, co w takim wypadku któryś z przedstawionych w niniejszej pracy algorytmów potrafi zrobić, to dopasować kilka segmentów źródłowych do kilku segmentów docelowych, ale w przypadku urównoleglania na poziomie słów jest to niezadowalające. 1.2.3. Problemy przy urównoleglaniu tekstów dwujęzycznych Wydawać by się mogło że problem urównoleglania jest łatwy. W końcu najczęściej 3 tłumaczy się jedno zdanie tekstu źródłowego na jedno zdanie tekstu docelowego wystarczy zatem zastosować trywialny algorytm dopasowujący jeden do jednego. Niestety taki algorytm nie sprawdzi się, jeśli wystąpi choć jedno dopasowanie należące do innej kategorii wtedy bowiem wszystkie dopasowania występujące po nim będą nieprawidłowe4. Występowanie innych dopasowań niż jeden do jednego jest spowodowane wieloma czynnikami takimi jak: swobodne tłumaczenie wynikające ze specyfiki danego języka, pominięcie segmentu wskutek pomyłki tłumacza, błąd segmentacji, różnica w tekstach źródłowym i docelowym5 itd. Konieczne jest zatem używanie algorytmów które radzą sobie w przypadku 3 Jak podają źródła, w około 90% przypadków występuje urównoleglenie jeden do jednego. 4 W przybliżeniu szansa poprawnego urównoleglenia całych dokumentów przy zastosowaniu powyższego trywialnego algorytmu jest równa pn,gdzie p oznacza prawdopodobieństwo wystąpienia dopasowania 1 1, a n oznacza liczbę segmentów w obu tekstach. 5 Na przykład tekst źródłowy mógł zostać zaktualizowany po przetłumaczeniu, a więc tekst docelowy stał się nieaktualny. 13

występowania innych kategorii dopasowań niż jeden do jednego. 1.2.4. Miary jakości urównoleglania tekstów dwujęzycznych Żeby dokładnie zmierzyć jakość urównoleglenia danych tekstów trzeba mieć do dyspozycji urównoleglenie referencyjne tych samych tekstów, najczęściej wykonane przez człowieka. Niech A= a1, a2,..., ar będzie ocenianym urównolegleniem. Niech B= b 1, b2,..., bq będzie urównolegleniem referencyjnym. Niech A B oznacza część wspólną urównolegleń A i B, czyli urównoleglenie zawierające dopasowania należące zarówno do A, jak i do B. Niech A oznacza ilość dopasowań w urównolegleniu, czyli rozmiar listy jego dopasowań. Poniżej przedstawię najszerzej stosowane miary jakości urównoleglenia, a mianowicie dokładność i kompletność. 1.2.4.1. Dokładność Dokładność (ang. precision) określa ilość poprawnych dopasowań w stosunku do wszystkich dopasowań ocenianego urównoleglenia. Stosując powyższe oznaczenia można to zapisać następująco: p= A B. A 1.2.4.2. Kompletność Kompletność (ang. recall) określa ilość poprawnych dopasowań w stosunku do wszystkich dopasowań urównoleglenia referencyjnego. Stosując powyższe oznaczenia można to zapisać następująco: A B. B r= 1.2.5. Zastosowania dopasowywania tekstów dwujęzycznych Powstały w wyniku urównoleglania korpus równoległy dopasowany na poziomie zdania ma wiele zastosowań. Może być używany bezpośrednio jako pamięć tłumaczeń w systemie tłumaczenia przez analogię. W ten sposób został on zastosowany w systemie hetman6. Urównoleglanie tekstów dwujęzycznych na poziomie zdania jest pierwszym krokiem do urównoleglania na poziomie wyrazu, utworzenia modelu tłumaczenia, czyli słownika probabilistycznego. Model tłumaczenia jest jednym ze składników niezbędnych do tłumaczenia 6 System hetman to system zarządzania pamięcią tłumaczeń. Został on szerzej opisany w rozdziale 4. 14

statystycznego7. Korpus równoległy dopasowany na poziomie zdania może być też przydatny przy tworzeniu słowników pozwala określić kontekst w jakim zdaniu określony wyraz tłumaczy się na inne zdanie. Więcej na temat zastosowań urównoleglania tekstów dwujęzycznych można znaleźć w książce Machine Translation: an Introductory Guide 8 7 Między innymi tłumaczeniem statystycznym zajmuje się system Exprimo. Jest to projekt zespołowy stworzony przez Jacka Gintrowicza, Wojtka Misiurkę, Monikę Rosińską, Michała Szymańskiego i mnie. Został w nim wykorzystany program do urównoleglania który powstał jako część niniejszej pracy. 8 Patrz [Arnold i in., 1994]. 15

2. Algorytmy urównoleglania tekstów dwujęzycznych 2.1. Algorytm Gale'a i Churcha bazujący na długościach segmentów 2.1.1. Informacje wstępne 2.1.1.1. Ogólna charakterystyka algorytmów bazujących na długościach segmentów Algorytmy bazujące na długościach segmentów opierają się na prostym spostrzeżeniu, że dłuższe segmenty w języku źródłowym odpowiadają dłuższym segmentom w języku docelowym, a krótsze segmenty w języku źródłowym odpowiadają krótszym segmentom w języku docelowym. Każdemu potencjalnemu dopasowaniu przypisywane jest prawdopodobieństwo w oparciu o stosunek długości segmentów źródłowych i docelowych biorących w nim udział. Następnie wybiera się spośród nich najbardziej prawdopodobny ciąg dopasowań. Poniższy fragment pracy powstał na podstawie artykułu A program for Aligning Sentences in Bilingual Corpora, Williama A. Gale'a i Kennetha W. Churcha9. Jest to klasyczny10 algorytm urównoleglania tekstów dwujęzycznych bazujący wyłącznie na długościach segmentów. 2.1.1.2. Zalety algorytmów bazujących na długościach segmentów 2.1.1.2.1. Niezależność od języków tekstów Zaletą algorytmów bazujących na długościach segmentów jest niezależność od języków. Nie potrzeba tutaj słowników, co najwyżej rozkładu długości zdań, ale ten da się uzyskać wprost z tekstów wejściowych. Dzięki temu można ten rodzaj algorytmów zastosować praktycznie do dowolnej pary języków, także należących do różnych rodzin11. 2.1.1.2.2. Duża wydajność Kolejną zaletą algorytmów bazujących na długościach segmentów jest ich wydajność. Obliczenia potrzebne do uzyskania prawdopodobieństwa dopasowania nie są specjalnie złożone, nie ma też potrzeby przeszukiwania słowników. 9 Patrz [Gale, Church, 1991]. 10 Artykuł Gale'a i Churcha Powstał na początku lat 90, mniej więcej w tym samym czasie co drugi artykuł opisujący bardzo podobną metodę patrz [Brown, 1991], 11 Algorytmy bazujące na długościach segmentów zastosowano np. do urównoleglania korpusu angielsko, chińskiego patrz [Wu, 1994]. 16

2.1.1.2.3. Niewielkie wymagania pamięciowe Algorytmy bazujące na długościach segmentów zużywają także niewielką ilość pamięci w pamięci wystarczy przechowywać długości segmentów, nie trzeba przechowywać ich treści. 2.1.1.3. Wady algorytmów bazujących na długościach segmentów 2.1.1.3.1. Niska dokładność urównoleglenia dla trudnych tekstów Wadą algorytmów bazujących na długościach segmentów jest niska dokładność dopasowania dla trudnych tekstów, np. jeśli tłumaczenie jest swobodne, jeśli w tekstach następują po sobie segmenty podobnej długości albo jeśli w którymś z tekstów występują pominięcia dużych fragmentów tekstu. Niska dokładność wynika z faktu, że do znalezienia urównoleglenia używana jest tylko niewielka część informacji leksykalnej zawartej w segmentach. 2.1.2. Sposób działania algorytmu 2.1.2.1. Szkielet algorytmu urównoleglania Wyszukiwane jest urównoleglenie, które jako całość, ma największe prawdopodobieństwo, czyli którego iloczyn prawdopodobieństw kolejnych dopasowań jest najwyższy12. Algorytm opiera się na programowaniu dynamicznym13, a sposób jego działania można opisać za pomocą równania rekurencyjnego14. Niech S będzie tekstem źródłowym, a T tekstem docelowym. Niech s 1, s 2,..., s n będą segmentami tekstu źródłowego, a t 1, t 2,..., t m segmentami tekstu docelowego. Niech C={c1, c2,...,c r } będzie zbiorem kategorii dopasowań, gdzie ci = ei f i jest kategorią dopasowania dopasowującą ei segmentów źródłowych do f i segmentów docelowych. Przykładowo w przypadku mojej implementacji rozważane są domyślnie następujące kategorie dopasowań: C={ 1 0, 0 1, 1 1, 2 1, 1 2, 2 2 }, co oznacza na przykład, że jednemu segmentowi źródłowemu może odpowiadać zero 1 0, jeden 1 1 lub dwa 1 2 segmenty docelowe. Występuje też dopasowanie 2 2, kiedy kolejne zdania są wzajemnie 12 Można tu znaleźć analogię do algorytmu Viterbiego związanego z niejawnymi modelami Markowa, ale analogia ta wykracza poza zakres niniejszej pracy. Więcej informacji dotyczących niejawnych modeli Markowa można znaleźć w [Rabiner, 1989]. 13 Programowanie dynamiczne jest strategią projektowania algorytmów polegającą, podobnie jak w strategii dziel i zwyciężaj, na podziale rozwiązywanego problemu na podproblemy. Poprzez odpowiednie złożenie rozwiązań podproblemów uzyskuje się rozwiązanie głównego problemu. Programowanie dynamiczne stosuje się, gdy podproblemy nie są niezależne, tzn. gdy podproblemy mają wspólne podproblemy. W programowaniu dynamicznym zapamiętuje się wszystkie potrzebne rozwiązania podproblemów, by nie musieć ich rozwiązywać ponownie. Patrz [Cormen i in., 2001], rozdział 16. 14 Poniższe oznaczenia różnią się od używanych w artykule [Gale, Church, 1991] i stanowią ich uogólnienie, tak żeby lepiej pasowały do dalszej części pracy w szczególności do opisu algorytmu Moore'a. 17

wymieszane lub zamienione. Następnie, niech p x, y,e,f będzie funkcją określającą prawdopodobieństwo dopasowania segmentów s x, s x 1,..., s x e 1 15 do segmentów t y,t y 1,...,t y f 1. Niech P x, y będzie maksymalnym prawdopodobieństwem dopasowania segmentów s 1... s x do segmentów t 1... t y. P x, y jest obliczane rekurencyjnie poprzez maksymalizację po wszystkich kategoriach dopasowania. Warunek początkowy: P 0,0 =1 Definicja rekurencyjna gdy x 0 y 0 dla x 0, y 0, x n, y m : P x, y = max e f C : x e 0, y f 0 {P x e, y f p x e 1, y f 1, e, f } Prawdopodobieństwo szukanego, najlepszego dopasowania dla całych tekstów S i T wynosi P n, m. Żeby uzyskać samo urównoleglenie trzeba dodatkowo rekurencyjnie obliczać wartość Q x, y, określającą najbardziej prawdopodobną kategorię dopasowania na pozycji x, y : Q 0,0 =nieokreślony Q x, y = argmax e f C : x e 0, y f 0 {P x e, y f p x e 1, y f 1, e, f }. Następnie za pomocą techniki zwanej backtracking można uzyskać szukaną listę dopasowań A= a1,a2,..., au, czyli właściwe urównoleglenie. Najpierw definiuje się pomocniczą listę pozycji w tekstach D= d0, d1, d2,..., d u : d 0= n, m d k = x e, y f, gdzie x, y =d k 1, e f =Q x, y Oblicza się d k dopóki x e 0 y f 0. Dla ostatniego k spełniającego ten warunek przyjmuje się, że u=k. Następnie oblicza się urównoleglenie: ai= s x, s x 1,..., s x e 1, t y, t y 1,...,t y f 1, gdzie e f =Q x, y, a x, y =d u i 1, i=1,2,... u. 15 Gdy gdy e=0 to nie ma segmentów źródłowych w dopasowaniu; podobnie jest w przypadku segmentów docelowych f =0. 18

2.1.2.2. Funkcja prawdopodobieństwa p16 Funkcja p x, y,e,f s x, s x 1,..., s x e 1 segmentów jest funkcją określającą prawdopodobieństwo dopasowania do segmentów x 1, y 1, x e 1 n, y f 1 m, e f C. t y,t y 1,...,t y f 1 Do obliczenia przy założeniach że jej wartości trzeba wprowadzić kilka dodatkowych oznaczeń. 2.1.2.2.1. Miara długości segmentu Miara długości segmentu s jest oznaczona jako l s. W algorytmie Gale'a i Church'a długość segmentu mierzona jest w znakach, ale nie jest to jedyny sposób 17. Suma długości wszystkich branych pod uwagę w danym dopasowaniu segmentów źródłowych jest oznaczana jako ls. x e 1 l s= k =x l s k Analogicznie postępuję się z sumą długości segmentów docelowych która oznacza się jako lt. 2.1.2.2.2. Wartość funkcji p Wartość funkcji p jest wyliczana z następującego wzoru: p x, y,e,f =P e f. Przy założeniach, że e f C, P e f oznacza prawdopodobieństwo wystąpienia kategorii dopasowania e f, natomiast zależy od stosunku sumy długości segmentów źródłowych i docelowych. Zakłada się że każdy znak w tekście źródłowym generuje losową ilość znaków w tekście docelowym, że te zdarzenia są od siebie niezależne i że zmienne te mają identyczny rozkład normalny. Model probabilistyczny wyznaczają parametry: wartość oczekiwana, określająca spodziewaną ilość znaków w tekście docelowym na jeden znak tekstu źródłowego oraz wariancja ilości znaków tekstu docelowego przypadającą na znak tekstu źródłowego 2. Żeby rozkład był standardowym rozkładem normalnym, czyli miał średnią równą 0 a wariancje równą 1, przyjmuję się poniższą definicje. = l t l s l 2 s 16 W artykule [Gale, Church, 1991] definiowana jest miara dystansu, określona jako log p, gdzie zdedniowaną tutaj funkcją prawdopodobieństwa. 17 Na przykład w algorytmie Browna długość segmentów liczona jest w słowach. Patrz [Brown, 1991]. 19 p jest

2.1.2.2.3. Parametry rozkładu normalnego Parametry i 2 są wyznaczane przez autorów empirycznie na podstawie testowego korpusu. Wartość oczekiwana jest stosunkiem długości tekstu docelowego do długości tekstu źródłowego. = l T l S Wariancje wylicza się przy założeniu że 2, czyli kwadrat różnicy długości segmentów źródłowych i docelowych w dopasowaniu, rośnie proporcjonalnie do długości segmentów źródłowych. Stałą przyrostu wyznacza się na podstawie regresji liniowej. Ostatecznie jednak w samym algorytmie nie wyznacza się parametrów dla tekstów wejściowych, przyjmując wartości uśrednione, wyliczone ręcznie z korpusu testowego, niezależne od języków. Autorzy algorytmu argumentują że i tak ich dokładne wartości nie mają wielkiego wpływu na wynik urównoleglania. Przyjmuje się zatem uśrednione wartości uzyskane z korpusu testowego to: =1, a 2 =6,8. 2.1.2.2.4. Obliczanie wartości funkcji p Aby obliczyć wartość funkcji p należy dokonać kilku przekształceń: P e f =P e f P e f t Gdzie t jest pewną stałą którą możemy pominąć gdyż jest identyczna dla wszystkich porównywanych dopasowań. P e f jest pobierane z Tabeli 1, utworzonej na podstawie danych empirycznych uzyskanych z testowego korpusu. Kategoria dopasowania e f Prawdopodobieństwo wystąpienia kategorii dopasowania P e f 1 1 0,89 1 0 albo 0 1 0,0099 2 1 albo 1 2 0,089 2 2 0,011 Tabela 1: Prawdopodobieństwa występowania kategorii dopasowań18 Natomiast drugi człon można obliczyć jako: 18 Niniejsza tabela pochodzi z artykułu [Gale, Church, 1991]. 20

P e f =2 1 P Gdzie P jest prawdopodobieństwem że pewna losowa zmienna z o standardowym rozkładzie normalnym będzie miała wartość co najmniej. 1 P = e 2 z 2 2 dz. Reasumując w algorytmie wyliczane jest bezpośrednio na podstawie sum długości segmentów tekstu źródłowego i docelowego l s, l t oraz na podstawie parametrów, 2. Następnie oblicza się P 19. Dalej, z tabeli odczytywana jest wartość P e f. Z pomnożenia tych czynników obliczana jest ostatecznie wartość funkcji prawdopodobieństwa p. 2.1.2.2.5. Wybieranie najlepszych dopasowań Omawiana metoda urównoleglania ma bardzo przydatną właściwość, mianowicie prawdopodobieństwo dopasowania czyli wartość funkcji p pozwala ocenić jakość dopasowań, i odrzucić najmniej prawdopodobne. W ten sposób odrzucając np. 20% najmniej prawdopodobnych dopasowań da się uzyskać znacznie mniej błędów urównoleglenia, a tylko nieznacznie zmniejszone wynikowe urównoleglenie. 2.1.2.3. Pseudokod algorytmu Wejście: S[1..n] T[1..m] # segmenty tekstu źródłowego # segmenty tekstu docelowego Wyjście: A[1..u] # urównoleglenie lista dopasowań Stałe: C[1..r] # kategorie dopasowań, struktury z polami e,f Algorytm: # Inicjalizacja P[0..n, 0..m] # tabela prawdopodobieństw Q[0..n, 0..m] # tabela kategorii dopasowań # Główny algorytm P[0, 0] := 1 Q[0, 0] := null x := 0 19 Istnieje wiele sposobów na przybliżenie tej wartości przez komputer, autorzy stosują przybliżenie na podstawie [Abramowitz, Stegun, 1964]. 21

y := 1 while x <= n while y <= m maxp := -1 maxc.e := 0 maxc.f := 0 for i := 1 to r e := C[i].e f := C[i].f if (x e >= 0) AND (y f >= 0) do p := P[x e, y f] * p(x e + 1, y f + 1, e, f) if (p > maxp) do maxp := p maxc.e := e maxc.f := f P[x, y] := maxp Q[x, y] := maxc y := y + 1 y := 0 X := x + 1 # Backtracking tworzenie ciągu dopasowań D[0..n+m] # tabela pozycji w tekstach, struktury z polami x,y; # wielkość tej tabeli nie przekracza n+m i := 0 x := n y := m while (x > 0) OR (y > 0) do D[i].x := x D[i].y := y c := Q[x, y] x := x c.e y := y c.f i := i + 1 u := i - 1 A[1..u] # urównoleglenie - ciąg dopasowań; każde dopasowanie # to para S: lista segmentów źródłowych # i T: lista segmentów docelowych for i := 1 to u x := D[u i + 1].x y := D[u i + 1].y e := Q[x, y].e f := Q[x, y].f A[i].S[1..e] # Inicjalizacja list segmentów A[i].T[1..f] for k := 1 to e A[i].S[k] := S[x + k 1] for k := 1 to f A[i].T[k] := T[y + k 1] 2.1.2.4. Złożoność algorytmu W przybliżeniu złożoność czasowa20 algorytmu wynosi: 20 Mowa tutaj o pesymistycznym przypadku stąd notacja O. Więcej szczegółów na temat badania złożoności i notacji asymptotycznych można znaleźć w [Cormen i in., 2001], rozdział 2. 22

T n, m =O n m r, gdzie n,m są ilościami segmentów w tekstach źródłowym i docelowym, a r ilością kategorii dopasowań. Wynika to z faktu że trzeba obliczać prawdopodobieństwo dopasowania (wartość funkcji p) każdego segmentu źródłowego z każdym segmentem docelowym dla każdej kategorii dopasowania, co oznacza n m r operacji. Inaczej to ujmując, trzeba wypełnić całą tabelę P i, j, i=0..n, j=0..m, na każdej jej pozycji rozważając r dopasowań. Ilość kategorii dopasowań r jest niewielką21 stałą dlatego można ją pominąć we wzorze, i przyjąć następującą złożoność czasową: T n, m =O n m Podobnie wygląda złożoność pamięciowa, ponieważ dominującym czynnikiem jest tutaj wielkość tabeli P. Dla dużych tekstów jest to złożoność nieakceptowalna. Żeby ją poprawić stosuje się urównoleglanie wieloetapowe na różnych poziomach szczegółowości, na początku urównoleglając np. na poziomie paragrafu, a potem dopiero zdania. Zazwyczaj dopasowanie na wyższych poziomach składa się wyłącznie z dopasowań kategorii 1 1, więc do jego uzyskania wystarczy prosty algorytm urównoleglania jeden do jednego. Jeśli jednak liczby segmentów źródłowych i docelowych na wyższym poziomie są różne można zastosować zwyczajny algorytm urównoleglania, albo dla większej pewności dokonać ręcznego urównoleglenia ze względu na to że pomyłka np. na poziomie paragrafu spowoduje od razu dużo błędów na poziomie zdania. 2.1.2.5. Jakość urównoleglenia Autorzy algorytmu piszą że ich metoda dla dosłownie przetłumaczonego korpusu raportów ekonomicznych złożonych przez Union Bank of Switzerland (UBS) dla języków angielskiego, francuskiego i niemieckiego daje średnio 95,8% poprawnych dopasowań. Po odrzuceniu 20% najmniej prawdopodobnych dopasowań uzyskano 99,3% poprawnych dopasowań spośród wszystkich nieodrzuconych dopasowań. Bardziej wiarygodne wydają się prace porównawcze Alexandra Rosena22 dla korpusów czesko angielskiego i czesko francuskiego, Grzegorza Krynickiego23 dla korpusu polsko angielskiego oraz Anila Kumara Singh-a i Samara Husaina24 dla korpusu w języku angielskim i języku hindi. Na ich podstawie można wysnuć wniosek że urównoleglanie algorytmem Gale'a i 21 22 23 24 Dla mojej implementacji r =6. Patrz [Rosen, 2005]. Patrz [Krynicki, 2006]. Patrz [Singh, Husain, 2005]. 23

Churcha, daje średnio dokładność25 rzędu 87 %, a kompletność rzędu 82%. 2.2. Algorytm Moore'a bazujący na treści segmentów 2.2.1. Informacje wstępne 2.2.1.1. Ogólna charakterystyka algorytmu Moore'a Algorytmy bazujące na treści segmentów korzystają ze słowników. Każdemu potencjalnemu dopasowaniu przypisywane jest prawdopodobieństwo, że segmenty docelowe są tłumaczeniami segmentów źródłowych. W algorytmie Moore'a wylicza się prawdopodobieństwo tłumaczenia korzystając z metod statystycznego tłumaczenia automatycznego26. Dodatkowo, nowatorskim pomysłem jest automatyczne generowanie słownika probabilistycznego27 na podstawie tekstów wejściowych, dzięki czemu nie potrzebuje on zewnętrznych słowników (choć mogą one w niektórych wypadkach poprawić jakość urównoleglenia). Ten fragment pracy powstał głównie na podstawie artykułu Fast and Accurate Sentence Alignment of Bilingual Corpora, Roberta C. Moore'a28 oraz implementacji29 w Perlu stworzonej przez autora algorytmu. Idee zawarte w tym artykule zostały rozwinięte w dalszych artykułach Moore'a30. 2.2.1.2. Zalety algorytmów bazujących na treści segmentów 2.2.1.2.1. Dokładność urównoleglania Algorytmy te, dzięki użyciu całej informacji lingwistycznej zawartej w tekstach, dają dużą dokładność urównoleglania, zbliżoną do jakości urównoleglania przez człowieka. 25 Miary jakości dokładność i kompletność zostały zdefiniowane w rozdziale 1. 26 Statystyczne tłumaczenia automatyczne to rodzaj tłumaczenia automatycznego w którym tłumaczenie jest dokonywane na podstawie zbudowanych z dużego korpusu równoległego modeli statystycznych, takich jak model translacji, modele języka i inne. Patrz [Knight, 1999]. 27 Słownik probabilistyczny to rodzaj słownika w którym dla każdego słowa podana jest lista jego tłumaczeń wraz z prawdopodobieństwami tłumaczenia. Patrz rozdział 1. 28 Patrz [Moore, 2002]. 29 Patrz [Moore implementacja]. 30 Patrz [Moore, 2004], [Moore, 2005]. 24

2.2.1.3. Wady algorytmów bazujących na treści segmentów 2.2.1.3.1. Zależność od języka Tradycyjnie do wad tego typu algorytmów można zaliczyć zależność od słowników a więc i języków tekstów. Algorytm Moore'a jednak radzi sobie z tym problemem przez generowanie słownika z tekstów źródłowych. Dla małych tekstów wejściowych może to jednak nie działać zadowalająco. 2.2.1.3.2. Mniejsza wydajność Kolejną wadą algorytmów bazujących na treści segmentów jest ich wydajność. Obliczenia potrzebne do uzyskania prawdopodobieństwa dopasowania są dość złożone, ponieważ wymagają przeszukiwania słowników. Algorytm Moore'a w celu optymalizacji stosuje urównoleglanie dwuprzebiegowe: w pierwszym przebiegu dokonuje się urównoleglania algorytmem bazującym na długościach segmentów, w drugim przebiegu natomiast dokonuje się właściwego urównoleglania, biorąc jednak pod uwagę wyłącznie dopasowania, które w pierwszym przebiegu uzyskały znaczące prawdopodobieństwo. Dodatkowo stosuje się technikę zawężania przeszukiwanej przestrzeni rozwiązań nazywaną przez Moore'a beam search, opisaną na końcu tego rozdziału. 2.2.1.3.3. Duże wymagania pamięciowe Całe segmenty tekstu źródłowego i docelowego oraz słowniki muszą być przechowywane w pamięci, co razem może powodować znaczne jej zużycie. 2.2.2. Sposób działania algorytmu 2.2.2.1. Fazy algorytmu Moore'a Algorytm Moore'a działa w kilku dość złożonych fazach. Poniżej naszkicuję każdą z nich. 1. Stosowany jest algorytm urównoleglania bazujący na długości segmentów. Może być to na przykład opisany wcześniej algorytm Gale'a i Churcha. W algorytmie Moore'a zastosowany jest, zmodyfikowany w celu uproszczenia, algorytm Browna31. 2. Z uzyskanego w poprzedniej fazie urównoleglenia są wybierane dopasowania należące do kategorii dopasowań 1 1, z których wybierane są dopasowania o prawdopodobieństwie powyżej pewnego progu32, albo jest wybierana pewna dana część33. Celem jest uzyskanie stosunkowo dobrze urównoleglonego małego korpusu tekstu. 31 Patrz [Brown, 1991]. 32 W implementacji Moore'a próg ten wynosi 99%. 33 W mojej implementacji częścią tą jest 80%. 25

3. Na podstawie uzyskanego korpusu równoległego trenowane są statystyczne modele języka dla obydwu języków oraz statystyczny model translacji z języka źródłowego na język docelowy. 4. Dokonywane jest ostateczne urównoleglenie, podczas którego przy obliczaniu prawdopodobieństwa dopasowania, poza stosunkiem długości segmentów, bierze się pod uwagę także prawdopodobieństwo, że zdania docelowe są tłumaczeniami zdań źródłowych, obliczane za pomocą metod zaczerpniętych ze statystycznego tłumaczenia automatycznego i przy wykorzystaniu wytrenowanych wcześniej modeli. 2.2.2.2. Faza 1. Urównoleglanie na podstawie długości segmentów W pierwszej fazie urównoleglania stosowany jest algorytm urównoleglania bazujący na długości segmentów. Schemat jego działania jest identyczny jak w algorytmie Gale'a i Churcha opisanym wcześniej. Znaczące różnice polegają jedynie na sposobie liczenia wartości funkcji prawdopodobieństwa dopasowania p x, y,e,f. Po pierwsze, przyjmuje się inną miarę długości segmentu liczoną w słowach a nie w znakach. Po drugie przyjmuje się założenie że stosunek długości segmentów ma rozkład Poissona34, a nie rozkład normalny, jak w algorytmie Gale'a i Churcha. Nie powoduje to znacznych różnic w wynikach urównoleglania, algorytm jest jednak szybszy i bardziej intuicyjny. 2.2.2.2.1. Miara długości segmentu Miarą długości segmentu s jest oznaczona jako l s. W algorytmie Moore'a długość segmentu mierzona jest w słowach. Żeby ją obliczyć niezbędna jest tokenizacja35. W tym celu można posłużyć się splitterem36 z regułami podziału na poziomie słowa. Dokładna tokenizacja jest ważna w dalszych fazach takich jak trenowanie modelu czy obliczanie prawdopodobieństw tłumaczenia. W implementacji oryginalnej37 słowami są tylko ciągi składające się z liter i cyfr, a wszystkie pozostałe znaki są traktowane jako znaki podziału, a ich ciągi nie są traktowane jako słowa. Podobnie jak w opisie algorytmu Gale'a i Chucha, sumę długości segmentów źródłowych biorących udział w rozpatrywanym dopasowaniu oznaczam jako l s, a sumę długości segmentów docelowych jako l t. 34 Rozkład Poissona to rozkład dyskretny przedstawiający liczbę wystąpień zjawiska w danym czasie, w określonej liczbie prób, jeśli wystąpienia te są niezależne od siebie. 35 Pisząc tokenizacja mam na myśli podział tekstu na słowa. 36 Można posłużyć się na przykład splitterem opisanym w rozdziale 3. 37 Patrz [Moore implementacja]. 26

2.2.2.2.2. Rozkłady długości segmentów Żeby obliczyć prawdopodobieństwo dopasowania potrzebne są rozkłady długości segmentów w tekście źródłowym i docelowym38 oraz stosunek średnich długości segmentów źródłowych i docelowych. Długości segmentów liczone są za pomocą zdefiniowanej wcześniej miary. Prawdopodobieństwo wystąpienia segmentu źródłowego s o długości k =l s oznaczam jako r s k. Rozkład prawdopodobieństwa źródłowego oblicza się dzieląc ilość segmentów o danej długości przez łączną ilość segmentów w tym tekście. Jako R s x, e oznaczam prawdopodobieństwo wystąpienia segmentów źródłowych s x, s x 1,..., s x e 1 o długościach l s x, l s x 1,..., l s x e 1, liczone jako iloczyn prawdopodobieństw wystąpienia każdego z segmentów o określonej długości: R s x, e =r s l s x r s l s x 1... r s l s x e 1. Analogicznie prawdopodobieństwo wystąpienia segmentu docelowego t o długości l=l t oznaczam r t l, jako a prawdopodobieństwo wystąpienia segmentów docelowych t y,t y 1,...,t y f 1 o długościach l t y, l t y 1,..., l t y f 1 oznaczam jako Rt y, f. Średnią długość segmentu w tekście źródłowym L s liczy się następująco: n l si. L s= i=1 n Średnią długość segmentu w tekście docelowym Lt liczy się analogicznie. 2.2.2.2.3. Obliczanie wartości funkcji p Wartość funkcji p x, y,e,f jest wyliczana następująco. Jeśli e=0 to prawdopodobieństwo oblicza się jako iloczyn prawdopodobieństwa wystąpienia segmentów docelowych t y,t y 1,...,t y f 1 o określonej długości Rt y, f i prawdopodobieństwa wystąpienia kategorii dopasowania P 0 f : p x, y,0,f =Rt y,f P 0 f. Analogicznie postępuje się gdy f =0. W pozostałych zaś przypadkach prawdopodobieństwo jest iloczynem prawdopodobieństwa wystąpienia długości segmentów 38 Rozkłady długości segmentów można by nazwać modelami długości segmentów analogicznie do modeli języków występujących w dalszej części rozdziału. 27

źródłowych i prawdopodobieństwa łącznej długości zdań docelowych pod warunkiem łącznej długości zdań źródłowych P l t l s oraz prawdopodobieństwa wystąpienia kategorii dopasowania P e f : p x, y,e,f =Rs x, e P l t l s P e f. Idea obliczania P l t l s polega na tym, że każde słowo w języku źródłowym tłumaczy się na pewną liczbę słów w języku docelowym zgodnie z rozkładem Poissona. Zatem l t ma rozkład Poissona, którego wartością oczekiwaną jest iloczyn łącznej długości segmentów źródłowych w tym dopasowaniu l s i stosunku średniej długości segmentu docelowego Lt do średniej długości segmentu źródłowego L s : =l s Lt Ls Zatem zgodnie z rozkładem Poissona P l t l s wynosi: lt e P l t l s =. l t! Prawdopodobieństwo wystąpienia kategorii dopasowań P e f jest pobierane z Tabeli 1. zdefiniowanej w opisie algorytmu Gale'a i Churcha, utworzonej na podstawie danych empirycznych uzyskanych z testowego korpusu. 2.2.2.3. Faza 2. Filtrowanie najlepszych dopasowań Najpierw spośród dopasowanych segmentów wybierane są tylko te należące do kategorii 1 1. Następnie spośród nich wybierane są najlepsze dopasowania na podstawie prawdopodobieństwa ich wystąpienia (czyli wartości funkcji p dla tych dopasowań, dlatego musi być ona podczas urównoleglania przechowywana). Można wybrać dopasowania z prawdopodobieństwem powyżej jakiegoś progu, albo wybrać pewną część najlepszych dopasowań zwykle 80% najbardziej prawdopodobnych dopasowań powstałych w wyniku urównoleglania bazującego na długości segmentu jest poprawnych. 2.2.2.4. Faza 3. Trenowanie modeli statystycznych Do obliczania prawdopodobieństw tłumaczenia w ostatniej fazie algorytmu Moore'a stosuje się metody znane z automatycznego tłumaczenia statycznego. Chociaż można by zastosować najbardziej zaawansowaną postać tych metod, w przykładowej implementacji Moore'a (a także w mojej implementacji) zastosowano ich uproszczoną wersję. Motywuje się to wydajnością i prostotą 28

kodu, ale w przyszłości można ten fragment algorytmu rozbudować. W tej fazie tworzy się dwa rodzaje modeli: modele języka osobne dla tekstu źródłowego i docelowego oraz model translacji z języka źródłowego na język docelowy. 2.2.2.4.1. Modele języka Modelem języka w algorytmie Moore'a jest prosty model prawdopodobieństw występowania unigramów39, czyli słów. Przez pls v oznaczam prawdopodobieństwo wystąpienia słowa źródłowego v, a p lt w prawdopodobieństwo wystąpienia słowa docelowego w. Model języka źródłowego pozwala na obliczenie prawdopodobieństwa wystąpienia segmentu źródłowego s = v 1, v 2,..., v k jako iloczyn prawdopodobieństw słów w nim występujących, gdzie v i oznaczają słowa a k =l s : k P ls s = pls v i. i=1 Analogicznie, model języka docelowego pozwala na obliczenie prawdopodobieństwa P lt t segmentu docelowego t = w 1,w 2,..., w l. Modele języka źródłowego i docelowego buduje się licząc częstotliwości występowania danego słowa w tekście odpowiednio źródłowym i docelowym. 2.2.2.4.2. Model translacji Model translacji, inaczej słownik probabilistyczny, pozwala określić prawdopodobieństwo, że dane słowo docelowe jest tłumaczeniem danego słowa źródłowego. W algorytmie Moore'a zastosowano znany z literatury model 1 IBM-a40 z pewnymi niewielkimi modyfikacjami. 2.2.2.4.2.1. Sposób działania modelu 1 IBM-a Generalnie w modelach IBM-a przyjmuje się że segment docelowy t jest generowany przez segment źródłowy s = v 1, v 2,..., v k w następujący sposób: najpierw wybierana jest długość segmentu docelowego l. Następnie dla każdej pozycji w zdaniu docelowym j=1, 2,..., l wybierane jest generujące je słowo z s (łącznie ze słowem pustym v0 ). Ostatecznie dla każdej pary składającej się z pozycji w segmencie docelowym j i generującego słowa z segmentu źródłowego v i wybierane jest słowo docelowe w j. W modelu 1 przyjmuje się, że wszystkie 39 Lepsze rezultaty dają modele bigramów w których liczy się prawdopodobieństwo wystąpienia danego słowa pod warunkiem że poprzednim słowem było dane słowo. Można budować modele n-gramowe, dla większych n, ale zajmują one coraz więcej miejsca w pamięci i są coraz mniej wydajne. 40 Patrz [Brown, 1993], [Knight, 1999]. 29

możliwe długości segmentu docelowego l, do pewnej górnej granicy, są jednakowo prawdopodobne i prawdopodobieństwo to wynosi. W algorytmie Moore'a pomija się jednak tą stałą, ponieważ długości segmentów są brane pod uwagę poprzez wyprowadzony wcześniej rozkład długości segmentów. Dalej, wybór każdego ze słów generujących w zdaniu źródłowym jest jednakowo prawdopodobny. Następnie prawdopodobieństwo pt w j v i wygenerowania słowa docelowego w j zależy wyłącznie od słowa źródłowego v i. Zatem prawdopodobieństwo wygenerowania segmentu t przez segment s wynosi: l k 1 P t t s = p t w j vi. l k 1 j=1 i=0 2.2.2.4.2.2. Trenowanie modelu translacji Model taki trenuje się (czyli estymuje nieznane parametry pt w j v i ) stosując algorytm typu EM41. Treningu takiego dokonuje się w iteracjach, przy czym wejściem do kolejnej iteracji jest model z poprzedniej iteracji. W algorytmie Moore'a do uzyskania pożądanego efektu przeprowadza się 4 iteracje. W zerowej iteracji przyjmuje się że prawdopodobieństwo tłumaczenia dowolnego słowa na dowolne wynosi 1. W każdej kolejnej iteracji dla każdej pary segmentów źródłowego i docelowego42 z korpusu treningowego dokonywana jest następująca procedura: Dla każdego słowa w j z segmentu docelowego liczona jest suma prawdopodobieństw w modelu z poprzedniej iteracji p to w j v i, że słowo to jest tłumaczeniem każdego z słów v i, i=0,1,2,..., k z segmentu źródłowego rozszerzonego o słowo puste v 0. Następnie prawdopodobieństwo tłumaczenia każdego ze słów v i, i=0, 1, 2,..., k z segmentu źródłowego na słowo docelowe wj w trenowanym modelu ptn w j v i jest powiększane o iloraz prawdopodobieństwa tego tłumaczenia w modelu z poprzedniej iteracji pto w j v i przez uzyskaną wcześniej sumę prawdopodobieństw. ptn w j v i = p to w j v i k pto w j vh. h=0 41 Algorytm EM (od ang. Expectation Maximization) jest algorytmem pozwalającym wyestymować najbardziej prawdopodobne wartości brakujących parametrów dla pewnych danych. Jest to algorytm iteracyjny i składaja się z dwóch kroków. W pierwszym kroku wyliczane jest prawdopodobieństwo dla wartości brakujących, a w drugim kroku maksymalizuje się prawdopodobieństwo tak, jak gdyby nie było wartości brakujących i otrzymuje się nowe wartości. Kroki te są powtarzane tak długo, aż zmiana parametrów będzie zaniedbywalnie mała. 42 Czyli dla każdego dopasowania. W praktyce do trenowania stosowane są tylko dopasowania należące do kategorii (1-1). 30