W (komputerowych) przestrzeniach znaczeń

Wydaje się, że semantyka leksykalna ‒ czyli szczegółowe znaczenie poszczególnych słów ‒ to wciąż problem bez definitywnego rozwiązania w przetwarzaniu języka. Jest to dosyć irytujące z punktu widzenia człowieka. Jeżeli powiem komuś, że krowy się pasą, nie zależy mi za specjalnie, żeby potrafił powiedzieć, że ‘krowy’ to tutaj rzeczownik w mianowniku liczby mnogiej, że pełni w zdaniu funkcję agensa itd., natomiast zapewne zależy mi na zrozumieniu, że chodzi o pewien konkretny rodzaj zwierzęcia, które lubi skubać trawę na łące i bywa łaciate.

Mamy dziś dość dużo narzędzi do analizy składniowej, morfologicznej, ról tematycznych w zdaniu (które dotyczą wskazywania, kto w opisywanej sytuacji pełni funkcję czynną a kto bierną, co jest okolicznością, taką jak określenie czasu (we wtorek), i tak dalej). Z semantyką leksykalną jest gorzej.

Jedno z możliwych podejść to składanie większości jednostek znaczeniowych z mniejszych czy bardziej ogólnych części. Niektórzy tradycyjni lingwiści widzieliby tutaj hierarchię pojęć sięgającą aż jednostek atomowych, z których pośrednio składałyby się wszystkie inne. Ciekawym skonkretyzowanym przykładem jest naturalny metajęzyk semantyczny. W informatyce swego czasu karierę robiły ontologie (pojęcie zaczerpnięte z filozofii), które mają uszeregować pojęcia hierarchicznie w zależności od tego, jakie cechy posiadają. Przypomina to trochę drzewa systematyczne, gdzie foka jest rodzajem ssaka, a ssak rodzajem zwierzęcia. Jakiś rodzaj takiej organizacji reprezentują słowosieci (wordnety).

Jak wiadomo, takie mniej czy bardziej formalne (przynajmniej w zamierzeniu) rozwiązania budzą protesty ludzi o bardziej kognitywistycznym podejściu. Według nich nie da się wyjaśniać znaczeń wyłącznie w „suchych” ścisłych słowach, bez zakorzenienia języka w naszym codziennym doświadczeniu. Formalne podejście byłoby skłonne na przykład twierdzić, że stołek można poznać (między innymi) po tym, że ma cztery nogi; ale nie każdy stołek ma cztery nogi, podobnie jak nie każdy ptak lata. Istniałoby więc jakieś wyobrażenie zakorzenione w naszym doświadczeniu napotykania ptaków i stołków, który pozwala nam je rozpoznawać dzięki podobieństwu do innych ptaków i stołków. Takie wyobrażenie jest zbyt rozmyte, żeby je raz na zawsze opisać, a przejmujemy je od innych ludzi przez uczestnictwo w kulturze.

Intuicyjnie taki opis znaczenia dobrze pasuje do wielu żywych stworzeń i wytworów człowieka, ale ma tę nieprzyjemną cechę, że zmusza nas do wyjścia ze zbieraniem danych poza język i tekst. Nie wystarczy sam model języka, trzeba by jeszcze dołożyć model ludzkiego wzroku, słuchu, skóry czy błędnika. Takie rzeczy są dziś już coraz wyraźniej możliwe (istnieje cała ciekawa dziedzina automatycznego generowania opisów do obrazków), jednak integracja modułów i tak dokłada mnóstwo nowych problemów i miejsc, gdzie coś można popsuć. Już nie wspominając o kosztach i nakładzie pracy zespołu badaczy.

Stąd w komputerowym przetwarzaniu języka znanych jest sporo technik, które służą temu, żeby mając duży korpus tekstów wygenerować semantykę dla użytego słownictwa. Tak się składa, że taka wytworzona semantyka przybiera zwykle postać przestrzeni punktów, w której istnieją znaczenia, a nie hierarchicznego drzewka. Proste wyjaśnienie jest takie, że łatwiej złożyć strukturę płaską, gdzie każdy punkt (słowo) poznajemy niezależnie od innych, niż strukturę hierarchiczną, gdzie każdy węzeł szczegółowy zależy od całego łańcucha bardziej ogólnych. Przestrzeń można sobie wyobrazić jako mapę, gdzie poszczególne słowa mają swoje `krainy` i im bliżej siebie mieszkają, tym bardziej powiązane ze sobą są ich znaczenia. Różnica polega na tym, że o ile mapy są zwykle rysowane w dwóch wymiarach, to przestrzeń semantyczna może mieć ich dowolnie wiele: zwykle kilkadziesiąt, kilkaset.

Pomijając rozwiązania neuronowe, o których kiedyś pisałem (co nie oznacza, że tematowi nie przydałoby się poszerzenie), istnieją stosunkowo prostsze systemy wytwarzania przestrzeni semantycznych. Jedna z nich to LSA (Latent Semantic Analysis), której nazwę można przełożyć jako analizę ukrytej semantyki. W nazwie da się wyczytać obserwację, że w tekstach jakie czytamy semantyka się już kryje, trzeba ją tylko w odpowiedni sposób wyciągnąć. Mówiąc w uproszczeniu, poszczególne słowa umieszczamy w tej technice tym bliżej, im większe jest prawdopodobieństwo (wywnioskowane z korpusu), że wystąpią w tym samym dokumencie. Musimy oczywiście dysponować korpusem podzielonym na dokumenty, które mogą odpowiadać pojedynczym akapitom albo ciągowi zdań zaczerpniętych z jednego źródła.

Przestrzeń COALS, o jakiej będzie dalej mowa, będąca z kolei wersją przestrzeni HAL, nie potrzebuje podziału na dokumenty: traktuje cały korpus jako jeden ciąg wyrazów. Słowa są klasyfikowane opierając się na tym, jak często występują razem w jednym oknie liczącym zwykle 10 słów. (A więc dwa wyrazy zaliczają jedno współwystąpienie, jeżeli wystąpią w odległości co najwyżej 10 wyrazów). W skutek zliczenia współwystąpień dla wszystkich słów powstaje wielka tabela (po matematycznemu macierz) zawierająca liczbę trafień dla każdej możliwej pary. Taką macierz następnie poddaje się odpowiednim operacjom uogólniającym, żeby zamiast dziesiątek tysięcy kolumn (zależnie od wielkości słownictwa w korpusie) miała kilkaset. Każdy wiersz, zawierający po prostu ciąg liczb, odpowiada punktowi w wielowymiarowej przestrzeni odpowiadający danemu słowu. Szczegółowo o COALS można poczytać w tym artykule: http://tedlab.mit.edu/~dr/Papers/RohdeGonnermanPlaut-COALS.pdf

Skoro już dysponujemy przestrzenią semantyczną i punktami dla słów, można obliczać odległość między nimi. W zamierzeniu odpowiada ona temu, jak bardzo odległe od siebie są znaczenia. Teoretycznie więc, jeżeli zbadamy najbliższych sąsiadów jakiegoś słowa, powinniśmy mieć dobre wyobrażenie o jego położeniu na mapie znaczenia. Zgodnie ze słynnymi słowami brytyjskiego językoznawcy J.R. Firtha, `słowo poznasz po towarzyszach jego`. Jest w tym jakby odrobina magii, kiedy się udaje, zobaczmy na przykład najbliższych sąsiadów słów ‘dom’ i ‘życie’:

dom
piwnica 0.6924923726947477
willa 0.6937565410368466
domostwo 0.694686121389793
mieszkanie 0.6965391475198787
podwórko 0.697556148218395
chałupa 0.6988768131563077
kamienica 0.711341526545343
barak 0.7190748499253554
dworek 0.7194673968266646
domek 0.7697846135840568

życie
duchowy 0.6229118871724296
cielesność 0.6247516517207243
doczesny 0.6273468796244147
macierzyństwo 0.6390086232910122
doczesność 0.6437160161406077
człowieczeństwo 0.6520858276677
bytowanie 0.6614126699890174
trwanie 0.6632482563124633
codzienność 0.6787691806423168
egzystencja 0.7430489734921778

Są to dane zaczerpnięte z przestrzeni COALS, którą wytworzono dla zrównoważonej części Narodowego Korpusu Języka Polskiego w ramach projektu APPROVAL. Im liczba podana obok sąsiada jest mniejsza, tym mniejsza odległość i zarazem większe podobieństwo.

Ale jak zawsze, trzeba uważać. Znalezienie paru wybranych przykładów, w których metoda działa wyjątkowo dobrze, może prowadzić do mylnych wniosków co do jej ogólnej wartości. Pojawia się pytanie, jak się ma zdanie COALS-a do tego, jak związki międzywyrazowe określiliby ludzie (a przynajmniej lingwiści). Patrząc na powyższe przykłady, widzimy, że obok słów pojawiają się określenia ich części (meronimy, takie jak ‘dom’-‘piwnica’), rodzajów (hiponimy, takie jak ‘dom’-‘willa’, ‘dom’-‘dworek’), wyrazy bliskoznaczne (jak ‘życie’-‘bytowanie’), wreszcie jednostki leksykalne powiązane w sposób trudny do uchwycenia, skojarzeniowy (‘życie’-‘człowieczeństwo’).

Co by więc było, gdyby policzyć to bardziej masowo? Wziąłem ze wspomnianej przestrzeni 40 słów i zbadałem w każdym z nim 10 najsilniejszych relacji. Żeby wziąć jakiś zewnętrzną klasyfikację związków międzywyrazowych, posłużyłem się systemem polskiej Słowosieci. Jest ona po komputerowemu dosyć sztywna, choć może nie da się inaczej. Nie ma w niej np. synonimii jako takiej, ponieważ według lingwistów w zasadzie nie ma słów, które miałyby dokładnie to samo znaczenie (i nie byłyby one do niczego potrzebne mówiącym). Na przykład uważamy ‘życie’ i ‘egzystencję’ za bliskoznaczne, ale raczej nikt nie powie, że policjant stracił egzystencję na służbie. Wiele relacji wpada do niejasno określonego koszyka „fuzzynimii” (rozmytego powiązania?), z którego korzystałem i tak bodaj częściej, niż planowali twórcy owej klasyfikacji.

Okazało się, że rzeczywiście 1/3 związków wyrazowych albo nie da się wyraźnie przyporządkować, albo stanowi przykłady fuzzynimii. Odpowiadają za to jednak przede wszystkim słowa bardzo abstrakcyjne, takie jak `być` (starałem się wybierać słowa mające największą częstość). Ma ono wielu sąsiadów takich jak ‘choć’, ‘przecież’, ‘więc’, ‘zresztą’. Są to słowa występujące często w pobliżu orzeczeń w zdaniu, ale niemówiące nam za wiele o znaczeniu bycia. W przypadku słów o przynajmniej trochę konkretniejszym znaczeniu, tak jak ‘dom’ czy ‘życie’, sytuacja się poprawia.

Kolejne ciekawe zjawisko to zaszumianie sąsiedztwa jednostek leksykalnych przez jedną grupę kontekstów. Sporą część Narodowego Korpusu Języka Polskiego zajmują protokoły sejmowe, których język jest pełen utartych formuł. Efekt wygląda tak:

pan
szteliga 0.7725205347382895
przepraszać 0.7793126648973882
dziękować 0.7820289596661376
ziobro 0.7825930213100021
podkański 0.791963352232272
celiński 0.805677229639696
marszałek 0.809264950033163
poseł 0.8144700749740668
kurczuk 0.8251411392419384
szanowny 0.8369972285438635

Można zobaczyć, jak wręcz konkretne nazwiska posłów IV kadencji (kiedy powstały teksty) opanowują obraz słowa, które ma przecież kilka znaczeń: może być też pan zwierzęcia czy chłopa, ubrania i czasopisma dla panów.

Większość typów relacji tworzy długi ogon bez niczyjej wyraźnej przewagi. Wybija się tylko 15% sąsiedztw wynikających z hiponimii lub hiperonimii (hiperonimia to odwrotność hiponimii: ‘terier’ jest hiponimem ‘psa’, a ‘pies’ hiperonimem ‘teriera’). Reszta to relacje takie jak gradacyjność, uprzedniość czy charakteryzowanie. Kwestia dyskusyjna, na ile za taki wynik odpowiada niedoskonałość klasyfikacji. Część typów można by pewnie scalić, gdyby wyróżniać je według innych kryteriów.

Docieramy więc do starego (i niezbyt odkrywczego) wniosku, że wyniki zależą od danych (zwykle mocno wygiętych w jakąś stronę, jak z tym sejmem) i przyjętej ramy pojęciowej. Niektóre słowa mają całkiem przydatne, semantyczne sąsiedztwo, a inne zupełnie nie: i rozróżnianie tego w automatyczny sposób wydaje się dosyć nietrywialne. Kiedyś można by porównać COALS, które, przypominam, wychodzi od prostej analizy częstości, do systemów (około)neuronowych, takich jak standardowy już dzisiaj word2vec. Zobaczymy.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *