UWAGA! Używamy plików cookies, by ułatwić korzystanie z naszego serwisu. Jeśli nie chcesz, by pliki cookies były zapisywane na Twoim dysku zmień ustawienia swojej przeglądarki. Co to są pliki cookies?

Czy wiesz, że ...
Mathematica to nie tylko matematyka

Analizy lingwistyczne

Operacje lingwistyczne

Operacje lingwistyczne w środowisku Wolfram Language to nie tylko wbudowane słowniki wielojęzykowe, ale również  badanie struktury tekstu i zależności między wyrazami. W połączeniu z wbudowanymi procedurami manipulacji na ciągach znakowych, operacjami na listach, procedurami wizualizacji oraz wymiany danych z zewnętrznymi źródłami informacji tworzy to unikalną platformę do zastosowań w zakresie operacji na języku naturalnym.

Program posiada wbudowane słowniki wielu języków, a procedury typu WordTranslation czy TextTranslation pozwalają na tłumaczenia poszczególnych wyrazów czy fraz tekstu. Wbudowane słowniki zawierają zestawy słów dla wielu języków.  Procedury rozpoznawania języka (LanguageIdentify) w połączeniu z funkcjami sortowania alfabetycznego AlphabeticOrder pozwalają poprawnie porządkować alfabetycznie słowa w różnych językach.

Mathematica i “Pan Tadeusz”

Przykładem niech będą pokazane poniżej operacje, które wykorzystując funkcje Wolfram Language dokonują analizy tekstu poematu Adama Mickiewicza “Pan Tadeusz”.

W opracowaniu tym demonstrowane są wybrane możliwości programu Mathematica w zakresie przetwarzania, wizualizacji i analizy tekstu. Treść poematu Adama Mickiewicza wykorzystana w tym opracowaniu pochodzi z domeny publicznej i nie jest objęta majątkowym prawem autorskim. Utwór opracowany został w ramach projektu Wolne Lektury przez fundację Nowoczesna Polska (http://wolnelektury.pl).

Struktura poematu w środowisku Wolfram Language

Sprawdzimy strukturę poematu Adama Mickiewicza zapisanego w środowisku Wolfram Language. Sprawdźmy zawartość zmiennej ksiegi. Zmienna ta zdefiniowana jest w tym notatniku i zawiera całą treść dwunastu ksiąg poematu oraz epilogu.

Jaki jest charakter zmiennej ksiegi?
Możemy to sprawdzić za pomocą funkcji Head, która najogólniej rzecz ujmując, podaje jaki jest typ zmiennej zdefiniowanej w środowisku Wolfram Language.

MathematicaIPanTadeusz_1.png

MathematicaIPanTadeusz_2.png

Zmienna ta to lista. Jaka jest jej długość, czyli ile ksiąg liczy poemat?

MathematicaIPanTadeusz_3.png

MathematicaIPanTadeusz_4.png

Całość to zatem trzynastoelementowa lista.Takiego wyniku należało się spodziewać, dwanaście ksiąg plus epilog.

Taraz sprawdzimy jaki charakter ma każdy element naszej zmiennej ksiegi. Funkcja Head w tym kontekście pozwala sprawdzić charakter każdego elementu listy zmiennej ksiegi.

MathematicaIPanTadeusz_5.png

MathematicaIPanTadeusz_6.png

Nasze ksiegi to lista list.
Sprawdźmy pierwszy element tej listy. Funkcja Short pozwoli nam skrócić zapis.

MathematicaIPanTadeusz_7.png

MathematicaIPanTadeusz_8.png

Elementem tym jest treść pierwszej księgi poematu. Sprawdźmy pierwsze cztery elementy pierwszej księgi.

MathematicaIPanTadeusz_9.png

    Litwo! Ojczyzno moja! ty jesteś jak zdrowie:
Ile cię trzeba cenić, ten tylko się dowie,
Kto cię stracił. Dziś piękność twą w całej ozdobie
Widzę i opisuję, bo tęsknię po tobie.

Otrzymaliśmy znany wszystkim początek poematu Adama Mickiewicza.
Długość listy pierwszej księgi poematu to liczba trzynastozgłoskowych wierszy.
W dalszej części sprawdzimy czy poeta nie pomylił się i czy faktycznie każdy wiersz poematu jest trzynastozgłoskowy.

MathematicaIPanTadeusz_10.png

MathematicaIPanTadeusz_11.png

Pierwsza księga “Pana Tadeusza” liczy 985 wierszy.

Cała treść poematu przechowywana jest w strukturze listy. W naszym przykładzie “Pan Tadeusz” jest listą list. Listy to podstawowy element środowiska Wolfram Language. Występują one zarówno jako wejście komend oraz jako wynik operacji. Struktura listy może być dowolnie zagnieżdżona. Nasza elektroniczna kopia “Pana Tadeusza” to lista złożona z 13 podlist odpowiadających księgom poematu. Każda księga to lista wierszy danej księgi, jeden wiersz to jeden element listy.

Treść poematu

Cała treść poematu zapamiętana jest w zmiennych zdefiniowanych w środowisku Wolfram Language w pliku Wolfram Notebook. Pokazany poniżej panel pozwala wyświetlić niezależnie treść każdej księgi lub spis jej zawartości.

MathematicaIPanTadeusz_12.gif

Uwaga: Wersja interaktywna tego panelu będzie udostępniona wkrótce na podstronie Portalu dla Użytkowników.

Księgi Pana Tadeusza w liczbach

Zobaczymy teraz ile wierszy liczy każda księga i cały poemat, ile wyrazów jest w każdej księdze i jakie wyrazy występują najczęściej.

Wiemy już, że pierwsza księga ma 985 wierszy, bo pierwszy element listy ma długość 985. Ile wierszy mają pozostałe księgi poematu? Możemy to łatwo sprawdzić używając funkcji Map[...]. Mapowanie funkcji to zastosowanie jej do każdego elementu listy. Aby sprawdzić ile wierszy ma każda księga, należy wykonać mapowanie zmiennej ksiegi funkcją Length, czyli Map[Length,ksiegi] lub w skrócie:

MathematicaIPanTadeusz_13.png

MathematicaIPanTadeusz_14.png

Wszystkie księgi “Pana Tadeusza” mają razem 9715

MathematicaIPanTadeusz_15.png

MathematicaIPanTadeusz_16.png

Adam Mickiewicz najbardziej napracował się nad księgą czwartą, a był bardziej zwięzły w księdze siódmej. To, że epilog jest najkrótszy, to jest zrozumiałe. Ma tylko 130 wierszy.

Utwórzmy zmienną poemat w pokazany poniżej sposób.

MathematicaIPanTadeusz_17.png

MathematicaIPanTadeusz_18.png

MathematicaIPanTadeusz_19.png

Teraz nasz poemat jest listą zmiennych typu String, czyli ciągiem znaków. Możemy teraz sprawdzić ile znaków liczy każda księga poematu. Księgę z postaci listy wierszy zamieniliśmy na ciąg znaków.

MathematicaIPanTadeusz_20.png

MathematicaIPanTadeusz_21.png

Księgi poematu mają od około 25 tysięcy do 45 tysięcy znaków każda.
Możemy teraz łatwo sprawdzić ile ma ich cały poemat.

MathematicaIPanTadeusz_22.png

MathematicaIPanTadeusz_23.png

Nieco ponad 439 tysięcy znaków musiał napisać Adam Mickiewicz, aby powstał Pan Tadeusz.

Trzeba dodać, że wyliczona liczba 439018 znaków zawiera kropki, przecinki, wykrzykniki i inne znaki interpunkcyjne oraz znaki końca linii. Możemy je pominąć i zobaczyć jak wtedy wyglądałby poemat, ale zapewne stałby się mniej czytelny.

Operacja poniżej pokazuje, że Wieszcz postawił w poemacie ponad 9 tysięcy przecinków.

MathematicaIPanTadeusz_24.png

MathematicaIPanTadeusz_25.png

“Pan Tadeusz” jako “chmura słów”.

Zobaczymy teraz w formie tak zwanej chmury wyrazów (World Cloud) jakich wyrazów jest najwięcej w poemacie.

Najpierw sporządzimy listę częstości wyrazów i posortujemy ją według liczby wystąpień wyrazów. Usuniemy (funkcja StringDelete) główne znaki interpunkcyjne, gdyż stojąc za wyrazem zwiększałyby jego długość i razem stanowiłyby nowe wyrazy. Wybierzemy też wyrazy o długości większej niż trzy znaki, aby pominąć proste spójniki, zaimki i przyimki (argument funkcyjny (StringLength@#>3)&). Za pomocą funkcji ToLowerCase zamieniliśmy pisownię na małe litery, aby wyraz pisany z małej i z dużej litery był potraktowany jako ten sam wyraz.

MathematicaIPanTadeusz_26.png

Otrzymaliśmy zmienną wyrazyCzestosc, której 100 pierwszych elementów widzimy poniżej.

MathematicaIPanTadeusz_27.png

MathematicaIPanTadeusz_28.png

Widzimy, że najczęściej używanym słowem jest słowo “lecz”, a najczęściej wymienianą postacią jest Sędzia, wymieniany 127 razy i 37 razy w drugim lub czwartym przypadku (sędziego). Tytułowy bohater tylko 105 razy w pierwszym przypadku, ale 47 razy w dopełniaczu lub bierniku (Tadeusza).

Poniżej pokazane są wszystkie formy “Tadeusza” jakie znalazły się w poemacie.

MathematicaIPanTadeusz_29.png

MathematicaIPanTadeusz_30.png

Razem jest ich 175.

MathematicaIPanTadeusz_31.png

MathematicaIPanTadeusz_32.png

Chmura słów przedstawia wyrazy pisane czcionką, której wielkość zależy od częstości występowania danego wyrazu.

MathematicaIPanTadeusz_33.png

MathematicaIPanTadeusz_34.gif

Najczęściej użytym przez Mickiewicza słowem dłuższym niż trzyliterowe jest słowo “lecz”. Bardzo często występuje “jest”, “rzekł”, “tylko”, “jako”, “mnie”.

Histogram długości słów w poemacie

Przy tworzeniu chmury słów braliśmy pod uwagę wyrazy mające więcej niż trzy litery, aby wyeliminować proste spójniki, przyimki czy zaimki. Teraz weźmiemy pod uwagę wszystkie wyrazy, włącznie z jednoliterowymi, dlatego z poprzednio stosowanej komendy usunięta została selekcja wyrazów za pomocą komendy Select. Zrezygnowaliśmy tym razem z zamiany na pisownię z małej litery i zachowana został oryginalna pisownia wyrazów.

MathematicaIPanTadeusz_35.png

Poemat rozłożony na poszczególne wyrazy można oglądnąć poniżej, wyraz po wyrazie, pominięte zostały wszelkie znaki nie będące literami i wyświetlonych zostało w formie przewijanej listy pierwszych 1000 wyrazów poematu.

MathematicaIPanTadeusz_36.png

MathematicaIPanTadeusz_37.png

Nie podawaliśmy jeszcze ile wyrazów liczy poemat, a okazuje się, że jest ich pokaźna liczba, prawie 68 tysięcy w treści 12 ksiąg i epilogu. Dokładna liczba podana jest poniżej.

MathematicaIPanTadeusz_38.png

MathematicaIPanTadeusz_39.png

Listę wyrazów zamienimy teraz na listę długości wyrazów, aby móc wyznaczyć histogram długości wyrazów w treści ksiąg Pana Tadeusza. Fragment tej listy widzimy poniżej, jak wiemy z poprzednich obliczeń liczy ona 67 tysięcy 633 elementy.

MathematicaIPanTadeusz_40.png

Poniżej, za pomocą funkcji Take pokazane zostały długości pierwszych 200 wyrazów.

MathematicaIPanTadeusz_41.png

MathematicaIPanTadeusz_42.png

Histogram długości wyrazów przedstawia się następująco.

MathematicaIPanTadeusz_43.png

MathematicaIPanTadeusz_44.gif

Jeśli losowo wybrać z poematu słowo, to najbardziej prawdopodobne jest, że będzie ono miało pięć lub sześć liter, ale niewiele rzadziej w losowaniu możemy otrzymać wyraz trzyliterowy lub siedmioliterowy.

Jeśli już patrzymy na Pana Tadeusza okiem matematyka, to warto sprawdzić jaka jest wartość średnia, wariancja i odchylenie standardowe długości słów w tekście poematu. Wartości tych parametrów podane są poniżej. Ponieważ lista podająca długości poszczególnych wyrazów jest listą liczb całkowitych, więc domyślnie wyniki tych obliczeń byłyby ułamkami zwykłymi, dlatego aby otrzymać przybliżenie dziesiętne zastosowana została funkcja N.

MathematicaIPanTadeusz_45.gif

MathematicaIPanTadeusz_46.png

MathematicaIPanTadeusz_47.png

MathematicaIPanTadeusz_48.png

Najczęstsze dwuliterowe frazy

Tym razem zagadnienie z dziedziny kryptologii, gdyż jednostki dwuliterowe często występują w różnych systemach szyfrowania. Tutaj jedynie sprawdzimy jakie jednostki dwuliterowe najczęściej występują w tekście ksiąg Pana Tadeusza.

Poniższy diagram pokazuje efekt analizy tekstu poematu. Po najechaniu myszą na symbol koła o różnych średnicach na skrzyżowaniu wiersza i kolumny wyświetlona zostaje dwuliterowa jednostka oraz ile razy wystąpiła w treści poematu. Wielkość koła jest proporcjonalna do liczby wystąpień.

Próg selekcji, który domyślnie ma wartość 1 pozwala ograniczyć wyświetlanie kół do przypadków, gdy krotność wystąpienia jednostki dwuliterowej jest większa od wybranego progu. Ustawiając wartość progu w okolicach 5000 zauważymy, że najczęstszymi jednostkami dwuliterowymi są “ni” (5900 wystąpień) oraz “ie” (ponad 10 tysięcy wystąpień). Koła dla tych jednostek są największe, co przy niewielkim zróżnicowaniu ich średnic byłoby trudne do zaobserwowania, gdyby nie możliwość zmiany progu selekcji.

MathematicaIPanTadeusz_49.gif

Uwaga: Wersja interaktywna tego panelu będzie udostępniona wkrótce na podstronie Portalu dla Użytkowników.

Zwróćmy uwagę, że wśród najrzadszych jednostek dwuliterowych są takie jak “ńb” (3 wystąpienia), “żł” (2 wystąpienia) czy “źż” (3 wystąpienia). Możemy łatwo sprawdzić w jakich wyrazach występują te dwuliterowe sekwencje.

Poniżej podane są wyrazy, w których występują te unikalne jednostki dwuliterowe.

MathematicaIPanTadeusz_50.png

MathematicaIPanTadeusz_51.png

MathematicaIPanTadeusz_52.png

MathematicaIPanTadeusz_53.png

MathematicaIPanTadeusz_54.png

MathematicaIPanTadeusz_55.png

Trzynastozgłoskowiec

Czy faktycznie każdy werset Pana Tadeusza jest trzynastozgłoskowcem?
Czy Mickiewicz gdzieś się nie pomylił?
Sprawdzimy to teraz.

Należy uprzedzić, że pojęcie zgłoski (sylaby) nie doczekało się w zasadzie jeszcze jednoznacznej definicji, ale niewątpliwie cechą wspólną różnych prób sformalizowania tego pojęcia jest fakt traktowania zgłoski jako elementu segmentacji potoku mowy. Również na przestrzeni lat podejście do zjawiska zgłoski ulegało modyfikacji, szczególnie w zakresie tzw. dwugłosek czyli dyftongów, których przykładem w języku polskim jest np. “au”.

Liczba zgłosek to liczba sylab i wyznacznikiem ich są samogłoski, ale trzeba pamiętać, że czasem dwie samogłoski stanowią o jednej zgłosce. Ma to miejsce w połączeniu z samogłoską “i” stanowiącą zmiękczenie poprzedzającej spółgłoski lub w tak zwanych dyftongach, gdzie dwie samogłoski stanowią jedną głoskę. Należy mieć na uwadze również fakt, że od powstania Pana Tadeusza minęło już ponad 180 lat, a język i pojęcie zgłoski to twory żywe, ulegające zmianom na przestrzeni lat.

Sprawdźmy księgę pierwszą.
Ponieważ nasza procedura polegać będzie na liczeniu samogłosek w wersie wiersza, więc najpierw za pomocą funkcji StringReplace wyeliminujemy dwugłoski, funkcja Select pozwoli pominąć wiersze puste, a liczbę samogłosek po korekcie związanej z dwugłoskami wyznaczy procedura StringCount. Zmienne o nazwach samogloski i dwugloski musiały być oczywiście wcześniej zdefiniowane.

MathematicaIPanTadeusz_56.png

Zmienna liczbaZglosek podaje w formie listy liczbę zgłosek w każdym wersie pierwszej księgi poematu. Jej skróconą postać widzimy poniżej.

MathematicaIPanTadeusz_57.png

MathematicaIPanTadeusz_58.png

Sprawdźmy teraz czy są wersy o liczbie zgłosek innej niż 13.

MathematicaIPanTadeusz_59.png

MathematicaIPanTadeusz_60.png

Okazuje się, że są.
Dyrektywa poniżej podaje wykaz wersów, w których liczba zgłosek jest inna niż 13. W tabelarycznym układzie podany jest numer wersetu w księdze pierwszej, liczba zgłosek w tym wersecie oraz jego treść.

MathematicaIPanTadeusz_61.png

526 12 Czarował; tak były czary przeciw czarów.
656 14 O autorów pytała Tadeusza zdania
899 14 W Marengo, w Ulm, w Austerlitz. Zwycięstwo i Zabor
970 12 I słowa liturgii takim wyrzekł tonem

Widzimy, że za niektóre rozbieżności odpowiedzialne są dyftongi (dwugłoski) “au” (werset 656 i 899). Nasza uproszczona procedura liczenia zgłosek nie uwzględnia faktu, że dyftong “au” jest różnie traktowany w różnych wyrazach, czasem jest to jedna zgłoska, a czasem odpowiada za dwie zgłoski. Wersety w których wykryliśmy 12 zgłosek pozostawiamy interpretacji specjalistów od struktur fonologicznych oraz teorii literatury, a w szczególności wersyfikacji.

Dla przypomnienia!
Epilog Pana Tadeusza pisany jest jedenastozgłoskowcem. Poniżej widzimy liczbę zgłosek pierwszych 20 wersetów epilogu. Dalej, podobnie jak w księdze pierwszej są pewne odstępstwa, ale interpretacja tego faktu nie jest przedmiotem tego opracowania.

MathematicaIPanTadeusz_62.png

MathematicaIPanTadeusz_63.png

Niniejsze opracowanie nie może być traktowane jako efekt analizy lingwistycznej tekstu, a jedynie jako prezentacja możliwości programu Mathematica w tym zakresie, jako potencjalnego narzędzia wspomagającego pracę specjalistów z zakresu lingwistyki.