Synteza mowy II: Akcent i zabawa dźwiękiem

08.03.2010 - Krzysztof Kercz
TrudnośćTrudność

Wiemy już jak przekształcić nagranie samogłoski tak, aby zabrzmiała ona intensywniej. Pozostaje nam dowiedzieć się, które samogłoski (a ogólniej - sylaby) chcemy w ten sposób zmieniać!

Miejsce akcentu w języku polskim

Akcent:

paroksytoniczny - na drugą sylabę od końca
proparoksytoniczny - na trzecią sylabę od końca

Powszechna zasada w języku polskim jest taka, że akcentowana jest druga sylaba od końca. Istnieją jednak wyjątki, które chcielibyśmy uwzględnić. Gdyby się uprzeć, można by je sobie podarować - przecież już teraz językoznawcy uznają za dopuszczalne (szczególnie w mowie potocznej) akcentowanie zawsze na drugą sylabę - nie popełnimy jednak tej zbrodni i w walce o piękno języka sprawimy, by nasz syntezator stawiał akcenty w prawidłowych miejscach. Jest jeszcze jedna motywacja: okazuje się, że przynajmniej w tej kwestii możemy być lepsi od twórców profesjonalnych syntezatorów - wspominana już słynna Ivona z wyjątkami sobie nie radzi...

Jakie słowa akcentujemy inaczej?

Wszystkie słowa pochodzenia greckiego kończące się na "-yka", "-ika" powinniśmy akcentować na trzecią sylabę od końca. Powiemy więc ma-te-MA-ty-ka, FI-zy-ka, MU-zy-ka, a nie - ma-te-ma-TY-ka, fi-ZY-ka, mu-ZY-ka. Zasada wydaje się prosta, pytanie - jak ją wyegzekwować? Jasne jest, że nie wystarczy sprawdzić końcówki wyrazów, gdyż - oprócz tego co chcemy - wyłapalibyśmy również wyrazy akcentowane normalnie, dla przykładu: "boryka" ("Zenon boryka się z przeciwnościami losu"), "chodnika" ("Przeszedłem na drugą stronę chodnika") etc. Musimy znaleźć mądrzejszy sposób.

Zauważmy, że jeśli rzeczownik w mianowniku kończy się na "-ika", "-yka", to chcemy go akcentować proparoksytonicznie (czyli na trzecią od końca sylabę). Ach, gdybyśmy tylko mieli zbiór wszystkich rzeczowników w mianowniku! Okazuje się, że marzenie to jest jak najbardziej realne - z pomocą przychodzi nam tzw. słownik morfosyntaktyczny, czyli zbiór wszelkich możliwych odmian słów wraz z informacjami o ich formach gramatycznych. Może to brzmieć trochę niejasno, dlatego zobaczmy, jak wygląda taki słownik dla języka polskiego:

(...)
matematyk	matematyk	subst:sg:nom:m1
matematyk	matematyka	subst:pl:gen:f
matematyka	matematyk	subst:sg:acc.gen:m1
matematyka	matematyka	subst:sg:nom:f
matematykach	matematyk	subst:pl:loc:m1
matematykach	matematyka	subst:pl:loc:f
matematykami	matematyk	subst:pl:inst:m1
matematykami	matematyka	subst:pl:inst:f
matematyki	matematyk	subst:pl:nom.voc:m1
matematyki	matematyka	subst:pl:nom.acc.voc:f+subst:sg:gen.dat.loc:f
matematykiem	matematyk	subst:sg:inst:m1
matematyko	matematyka	subst:sg:voc:f
matematykom	matematyk	subst:pl:dat:m1
matematykom	matematyka	subst:pl:dat:f
matematykowi	matematyk	subst:sg:dat:m1
matematyku	matematyk	subst:sg:loc.voc:m1
matematyką	matematyka	subst:sg:inst:f
matematykę	matematyka	subst:sg:acc:f
matematyków	matematyk	subst:pl:acc.gen:m1
(...)
Uwaga! Plik morfologika jest duży (prawie 200 mb), zatem wczytywanie go w całości do pamięci nie jest najlepszym pomysłem, najlepiej przetwarzajmy jedną linię na raz. W Pythonie napisalibyśmy:
for line in open('morfologik.txt'):
	word,base,tag = line.split()
	(...)

Powyższa lista to fragment pliku polskiego projektu Morfologik. Jego struktura jest prosta, każdą linię tworzą trzy składniki: słowo, forma bazowa, tag. Ten ostatni opisuje formę gramatyczną słowa, dla przykładu tag dla słowa "matematykę" - subst:sg:acc:f - oznacza: rzeczownik (subst), liczba pojedyncza (sg), biernik (acc), rodzaj żeński (f).

My jednakowoż chcemy znaleźć po prostu rzeczowniki (subst), których forma bazowa kończy się na "-yka", -"ika" i których końcówka nie dodaje ani nie odejmuje żadnej samogłoski (tzn. liczba sylab jest taka sama jak liczba sylab w mianowniku). I tak, we fragmencie podanym wyżej, znaleźlibyśmy: matematyka, matematykach, matematyki, matematyko, matematykom, matematyką, matematykę. Hola, hola! - zakrzyknąłby ktoś, i słusznie. Zauważmy, że "matematykach" oznaczać może zarówno osoby zajmujące się matematyką w zdaniu "rozmyślałem wczoraj o tych wszystkich lwowskich matematykach" jak i matematykę ze zdania "z rozrzewnieniem wspominam te nerwy na wszystkich szkolnych matematykach" (w tym wypadku: lekcjach matematyki). Niestety okazuje się, że w zależności od kontekstu te same słowa zaakcentujemy inaczej (proste pytanie: w którym z przytoczonych zdań akcent w słowie "matematykach" padnie na trzecią sylabę?).

Oprócz enklityk, występują w języku polskim proklityki, czyli zbitki wyrazowe, w których aton występuje przed wyrazem akcentowanym, na przykład "na stole". Proklityki również mogą tworzyć jedno słowo, np."wiceszef".

Kontekst można rozpoznawać (takie zdanie nazywa się dezambiguacją), jednak wykracza to poza ramy naszego artykułu - być możemy opowiemy o tym zagadnieniu w którejś z kolejnych części. Na razie zaproponujmy proste i chyba satysfakcjonujące rozwiązanie: jeśli daną formę słowa można zaakcentować na dwa sposoby, wybierzmy ten tradycyjny dla języka, tzn. na drugą sylabę od końca, wyjątek czyniąc dla form, które równe są formie bazowej (tzn. "muzyka", "matematyka", "fizyka" itd.). Dzięki temu nasz syntezator uniknie pretensjonalności mówiąc na przykład "uwielbiam słuchać o tych fizykach", a powie pięknie "matematyka królową nauk"!

Enklityki tworzą też partykuły "-że" ("chodźże", "wracajże")oraz "-li" ("Znaszli ten kraj, gdzie cytryna dojrzewa?", "Chceszli wiedzieć, jaki demon czy bóg porwał cię w powietrze?"). Piszemy je łącznie. W jaki sposób moglibyśmy rozpoznawać takie sytuacje?

To jednak nie wszystko. Niektóre formy czasowników również są akcentowane na trzecią sylabę od końca, niektóre - nawet na czwartą! Tak naprawdę łatwiej myśleć o tym jako o enklitykach a nie wyjątkach. Cóż to takiego - enklityka? To sąsiedztwo dwóch wyrazów, z których drugi jest tak zwanym atonem, czyli słowem, w którym w ogóle nie ma akcentu (przykład: "napisz się", gdzie zaimek "się" jest nieakcentowany). Nas jednak interesują mniej oczywiste enklityki, tworzące jedno słowo. Przede wszystkim zaliczyć do nich można formy przeszłe czasowników, takie jak "zrobiliśmy" czy "zrobilibyśmy". W tym ostatnim przypadku akcent padnie na czwartą sylabę od końca, ale łatwiej nie myśleć o tym jak o wyjątku, a - o enklityce właśnie; zauważmy, że równie dobrze moglibyśmy powiedzieć "byśmy zrobili" i znaczenie zostałoby takie same - końcówka jest tak naprawdę osobnym słowem i jedynie ortografia każe nam pisać ją łącznie.

Opisany w artykule słownik Morfologik możesz pobrać stąd.

By wyłapać przypadki enklityk, nie będziemy musieli się gimnastykować tak jak w przypadku wyrazów z greki. Okazuje się, że wystarczy proste wyrażenie regularne sprawdzające końcówki wyrazów. Początek funkcji mówiącej, na którą sylabę od końca pada akcent w słowie, mógłby wyglądać w ten sposób:

1
2
3
4
5
6
7
8
9
import re #wyrażenia regularne
 
def akcent(slowo):
        if re.search(u'(ła|ło|ły|li)by(śmy|ście)$', slowo):
                return 4
        
        if ((re.search(u'(ła|ło|ły|li|[uaeyięą]ł)by(m|ś)?$', word) 
                or re.search(u'(ły|li)(ście|śmy)$', slowo))):
                return 3
5
Twoja ocena: Brak Ocena: 5 (2 ocen)

Copyright © 2008-2010 Wrocławski Portal Informatyczny

design: rafalpolito.com