• Nie Znaleziono Wyników

Identyfikacja wybranych części zdania

W dokumencie Index of /rozprawy2/10860 (Stron 192-197)

3. BUDOWA SYSTEMU TŁUMACZĄCEGO

3.6. Analiza polskiego języka pisanego i synteza do postaci języka migowego

3.6.5. Identyfikacja wybranych części zdania

W procesie analizy zdania identyfikowane są jego składowe obligatoryjne i fakultatywne. Do elementów obligatoryjnych należy orzeczenie oraz wszystkie składowe wymagane przez jego schemat konotacyjny. Zalicza się do nich: frazy nominalne podmiotu, dopełnienia bliższego i dalszego, obiekty modalne oraz wskaźniki nawiązania zdań podrzędnych. Do elementów nieobligatoryjnych należą wszystkie typy okoliczników oraz przydawki stanowiące składowe fraz nominalnych. Omówienie identyfikacji wszystkich składowych zdania z uwagi na obszerność zagadnienia nie jest tutaj możliwe, dlatego postanowiono skupić się na kwestiach najważniejszych, tj. identyfikacji orzeczenia, podmiotu i dopełnienia. Pozostałe zostaną omówione pobieżnie.

a) Identyfikacja orzeczenia

Identyfikacja orzeczenia w zdaniu realizowana jest na poziomie budowania segmentów. Zostało to schematycznie ukazane wyżej, na rys. 73 (str. 187), przedstawiającym fragment listy opisującej segmenty zdań złożonych. Zauważyć na nim można, że segmenty przechowują informację o położeniu (VerbPos) oraz przeciążeniu (IdOverload) danego czasownika. Dodatkowo, jako elementy obudowy kategorialnej orzeczenia, identyfikowane są na podstawie struktury wymagań w dynamicznej bazie przeciążeń elementy wchodzące w skład orzeczenia. Należą do nich copula wyrazowe:

niech, się, nie oraz formy słowa posiłkowego tworzone od czasownika BYĆ. Wyróżniają

się one w strukturze wymagań i dopasowań występowaniem słowa verb_aux w nazwie klucza140. Wyniki identyfikacji zapełniają struktury dopasowań, z zachowaniem symetrii kluczy względem struktury wymagań. W wypadku gdy nie zostaną odnalezione elementy określone w strukturze wymagań, segment dopasowań nie może być wypełniony i zostaje usunięty. Strukturę wymagań, dopasowań i ekwiwalencji reprezentują trzy kolekcje, które różnią się liczebnością. Kolekcja reprezentująca struktury wymagań przechowuje dane o wszystkich segmentach, natomiast struktura dopasowań zawiera tylko segmenty, w których udało się dopasować założoną liczbę wymagań konotacyjnych – pozostałe segmenty są usuwane. Najmniej liczną jest natomiast struktura ekwiwalencji, która obejmuje tylko najlepiej dopasowane segmenty – najczęściej jest to jeden segment, pozostałe zaś są usuwane. Symetria kluczy i porządek dla struktur wymagań, dopasowań i ekwiwalencji jako kolekcji może być zachowana, mimo różnic w ich liczebności, dzięki

140 Por. odpowiedni fragment wcześniejszego podrozdziału poświęcony omówieniu kluczy wymagań, dopasowań i ekwiwalencji, str. 187 i n.

polu wartości IdStructure141, które jest identyfikatorem struktury w segmencie, wspólnym dla struktur wymagań, dopasowań i ekwiwalencji.

Należy podkreślić, że wykrycie orzeczenia ustawia analizę już na etapie segmentacji, nadając jej jednocześnie strukturę hierarchiczną.

Poniżej, w celach ilustracyjnych, przedstawiono fragment kodu w języku Prolog, tworzący fragment struktury dopasowań dla wyrazu niech, który stanowi część obudowy kategorialnej orzeczenia, wyrażając tryb rozkazujący.

compare_auxiliary(imperativ, [Imperativ, Position, IdOverloadImperativ],

struct_getvalue(segments,[IdStructure, required, verb_aux, imperativ], Required), (

(

Imperativ==null, Required==null,

struct_setvalue(segments,[IdStructure, found, verb_aux, imperativ], null),! ); ( Imperativ==null, not(Required==Imperativ), remove_scheme(IdStructure),! ); ( Imperativ==Required, not(Required==null),

struct_setvalue(segments,[IdStructure, found, verb_aux, imperativ], IdOverloadImperativ), struct_setvalue(segments,[IdStructure, mask], Position),!

);

(remove_scheme(IdStructure)) ).

b) Identyfikacja podmiotu oraz dopełnień w zdaniu

Identyfikacja wymaganych fraz nominalnych w zdaniu tj. typowych postaci podmiotu oraz dopełnienia odbywa się wieloetapowo i przy użyciu tych samych procedur analitycznych. Osiągnięto to dzięki ujednoliceniu zapisu struktur wymagań, dopasowań i ekwiwalencji142. Poniższe omówienie dotyczy zatem wszystkich wymaganych fraz nominalnych, z podkreśleniem pewnych różnic, którymi się one cechują.

W procesie wyszukiwania wymaganych fraz nominalnych system wywołuje regułę identyfikacji dla każdej frazy niezależnie od tego, czy schemat konotacyjnych orzeczenia jej wymaga143. Jeśli fraza nie jest wymagana, co sygnalizowane jest występowaniem w strukturze wymagań wartości null, system nie podejmuje procesu wyszukiwania. W innej sytuacji system wyszukuje wszystkie elementy w zakresie obejmowanym przez dany segment. Na tym etapie wyszukiwane są jądrowe elementy frazy, które zgodne są ze strukturą wymagań pod względem przypadka oraz znaczników semantycznych. W ten sposób wszystkie wyrazy występujące w Mianowniku względnie w Narzędniku (por. szereg: Ojciec z synem...) mogą stanowić podmiot w zdaniu, przy czym aby rzeczownik w Narzędniku mógł stanowić część podmiotu, musi być poprzedzony rzeczownikiem w Mianowniku, który jest analogiczny semantycznie (ma

141 Zob. rys. 73.

142 Dla dopełnienia bliższego przewidziano pole określające przyimek, mimo iż dopełnienie bliższe nie posiada nigdy przyimka, zob. str. 188 i n.

143 Por. wymagania konotacyjne dla schematu przedstawionego na rys. 74 na str. 189, wyżej. Wymagania dotyczące dopełnienia bliższego ustawione są na wartość null, co oznacza, że nie występuje ono w tym schemacie konotacyjnym.

ten sam znacznik semantyczny)144. Rzeczowniki stanowiące dopełnienie bliższe zawsze występują w Bierniku lub (z rzadka) w Dopełniaczu, przy czym forma dopełniaczowa wymagana jest dla segmentów z zaprzeczonym orzeczeniem.

Dla dopełnienia dalszego wyszukiwane są wszystkie przypadki rzeczownika w wyjątkiem form mianownikowych i wołaczowych. Odnalezione rzeczowniki zgodne ze strukturami wymagań fraz nominalnych pod względem przypadka i semantyki zapisywane są w strukturze dopasowań jako pary liczb określające pozycje wyrazu w zdaniu oraz identyfikatora jego przeciążenia. Jeśli element nie zostanie zidentyfikowany dla którejś z fraz, w strukturze zapisana zostanie wartość null.

Poniżej przedstawiono fragment kodu w języku Prolog, który dokonuje identyfikacji jądrowych elementów dla fraz nominalnych według wyżej opisanego schematu.

phrase_identification([Left, Right], [VerbPos,IdOverload],IdStructure,

struct_getvalue(segments,[IdStructure, required, SentencePart, case],Case),

struct_getvalue(segments,[IdStructure, required, SentencePart, semantic],Semantic),

((IndirectObjectCase==null)->struct_setvalue(segments,[IdStructure, found, SentencePart, positionWord], null);

phrase_identification_([Left, Right], [VerbPos,IdOverload],IdStructure,Case,Semantic, SentencePart)).

phrase_identification_([Left, Right],

search_phrase([Left, Right], [VerbPos,IdOverload],IdStructure,[Case],[Semantic], SentencePart),!.

phrase_identification_([Left, Right], [VerbPos,IdOverload],IdStructure,[Case|Z1],[Semantic|Z2],

phrase_identification_([Left, Right], [VerbPos,IdOverload],IdStructure,[Case],[Semantic],SentencePart),

phrase_identification_([Left, Right], [VerbPos,IdOverload],IdStructure, Z1,Z2,SentencePart).

search_phrase([Left, Right], [VerbPos,IdOverload],IdStructure,[PhraseCase],[PhraseSemantic],

search_case(PhraseCase, PhraseSemantic, Left, Right), list_get(case_range,WordInCase),

struct_append(segments,[IdStructure, found, SentencePart, positionWord], WordInCase),

list_delete(case_range),!.

Ponieważ niektóre rzeczowniki mogą znaleźć się w kilku strukturach dopasowań, należy uściślić identyfikację fraz poprzez określenie występowania przyimków pomiędzy zidentyfikowanymi wyrazami. Dla podmiotu złożonego (szeregowego) pierwszym jego elementem musi być mianownik, natomiast pozostałe człony występują również w mianowniku lub w narzędniku i wtedy poprzedzone są przyimkiem z145.

W przeciwnym razie fraza traktowana będzie jako dopełnienie dalsze (jeśli będzie zgodna ze schematem konotacyjnym) względnie jako okolicznik i usunięta ze struktury dopasowań utworzonej dla podmiotu. Przy dopełnieniu bliższym algorytm wyklucza wystąpienie jakiegokolwiek przyimka w przeszukiwanym przedziale. Jeśli wobec tego znaleziony zostanie przyimek, jest to sygnałem, że dany rzeczownik na pewno nie jest dopełnieniem bliższym i jego pozycja jest usuwana ze struktury dopasowań. Dla dopełnienia dalszego występowanie danego przyimka określone jest w strukturze wymagań w kluczu [IdStructure, required, indirectObject, prefix]. Jeśli więc w strukturze wymagań pojawi się odpowiedni przyimek będzie on poszukiwany jako wzorzec146 w określonym zakresie. Jeżeli struktura wymagań nie definiuje dla dopełnienia dalszego żadnego przyimka, będzie ona przeszukiwała zakres pod kątem niewystępowania przyimka. Gdy nie nastąpi uzgodnienie przyimków ze strukturą

144 Warunek ten wyklucza np. taką interpretację dla mężczyzna z teczką, dom z balkonem itp.

145 Por. Ania i Zenek poszli do szkoły z Ania z Zenkiem poszli do szkoły.

146 Ponieważ niektóre przyimki składają się z dwu lub więcej wyrazów, w celu ich identyfikacji utworzono odpowiednie reguły poszukujące w dynamicznej bazie wiedzy wzorca w postaci z góry określonego konglomeratu wyrazów.

wymagań, dochodzi do usunięcia danego przeciążenia ze struktury dopasowań.

Przykładowe zdanie: Mamę bolał ząb, system zwróci w postaci następującej struktury wyjściowej języka Prolog zamykającej efekt procesu ustalania ekwiwalencji (w zapisie symbolicznym), por.:

[polozenie_zero_poczatek,&,&, mama, mamę,&, bolec,bolał,smutek, już, &,&, zab, ząb, polozenie_zero_koniec,&,&]

Lista ta zostaje przesłana do aplikacji głównej, która na jej podstawie generuje animację 3D zgodną z wymaganiami składni języka migowego, czego efekt przedstawiony jest poniżej.

Z konieczności animację przedstawia się w wyborze kilku klatek kluczowych dla danego gestu w formie obrazków, nie uwzględniając transjentów pomiędzy gestami. Mimo tych uproszczeń nie udało się uzyskać rozdzielczości zadowalającej dla uzyskania poglądowego przedstawienia mimiki twarzy. Mankamentowi temu stara się zaradzić powiększenie twarzy wprowadzone dla relewantnych pod tym względem klatek, por. charakterystyczną mimikę dla gestu "boleć".

Postać rozbudowanej grupy nominalnej zawierać może elementy współfunkcyjne, pozostające względem siebie w relacji współrzędnej. Powstające w ten sposób szeregi program analizuje dwutorowo, w opisany już wyżej sposób. Efekt procedury analitycznej dla takich przypadków przedstawia poniższa lista wyjściowa i wygenerowana na jej podstawie animacja do wejściowego zdania: Jutro pojadę do pracy autobusem albo

rowerem.

TranslateList = [polozenie_zero_poczatek,&,&, jutro,jutro,&, ja,&,&, jechac,jadę,&, do,do,&, praca,pracy,&, autobus,autobusem,&, albo,albo,&, rower,rowerem,&, polozenie_zero_poczatek,&,&]

c) Identyfikacja nieobligatoryjnych elementów zdania

Jak wspomniano, do nieobligatoryjnych elementów zdania należą zasadniczo nie konotowane w strukturze zdania okoliczniki i tzw. przydawki, stanowiące określenia w grupie nominalnej. Zgodnie z poczynioną na str. 192 niniejszej pracy deklaracją, przedstawienie tej tematyki będzie miało miejsce tylko w okrojonym kształcie. Poprzestajemy więc na skrótowej charakterystyce opisowej.

Po procesie identyfikacji wymaganych elementów zdania system przeszukuje dynamiczną bazę pod kątem obecności okoliczników wśród przeciążeń, które nie zostały włączone do struktury dopasowań – nie objętych maską. Wyszukiwanie okoliczników realizowane jest procedurą dopasowania do deklarowanych list; przykładowe listy dopasowań okoliczników miejsca i czasu, bardzo ważnych dla faktywizacji temporalnej i lokatywnej wypowiedzi, które przyjmują postać rozmaitych wyrażeń przyimkowych, przedstawiono na str. 62 i n.

Ostatnią ścieżką procedury analitycznej jest identyfikacja przydawek – określeń rzeczownika. Są one zapamiętywane w strukturach dopasowań poszczególnych grup nominalnych.

3.6.6. Wyodrębnianie konglomeratów (zbitek słownych,

W dokumencie Index of /rozprawy2/10860 (Stron 192-197)