Magia wyrazów

Bardzo podoba mi się rozróżnienie na słowa i wyrazy z poprzedniego wpisu. Słowa mogą być w prosty sposób wydzielone z wprowadzonego tekstu i tu zaczyna się pierwsza zasadnicza część tłumaczenia – przekształcanie w wyrazy. W języku polskim jest to chyba trochę prostsze do przeprowadzenia, bo przeważająca część wyrazów jest jednosłowna. Jako wyjątki przychodzą mi do głowy czasowniki zwrotne (ubierać się), czas przyszły (będę pisał) i tryb przypuszczający form bezosobowych (zostało by) – też czasowniki. W angielskim jest z tym trochę gorzej. Można naliczyć co najmniej kilka grup wyrazów, które są wielosłowne, na przykład bezokoliczniki (to make), rzeczowniki (a word, the word), czasowniki złożone (to wake up), czasy czasowników (I have been), odmiana rzeczowników (wielka mi odmiana – jeden dodatkowy przypadek, np. of the singleton). Pewnie można by wymienić jeszcze parę innych, ale już te wymagają napisania dość inteligentnego analizatora.

Doszedłem chyba w końcu do sedna sprawy. Zadanie sprowadza się do stworzenia słownika, który przekształca wyrazy angielskie w odpowiednie wyrazy polskie. Niestety owa odpowiedniość jest najtrudniejsza do zrealizowania w automatyczny sposób. Zresztą ludzie też mają z tym problemy, chociaż nikt za bardzo nie chce się przyznać do tego, że tłumacząc z angielskiego zazwyczaj kaleczy polską mowę, bo to po prostu nie jest łatwe. Dlatego nie stawiam sobie zadania stworzenia prawdziwego tłumacza angielsko-polskiego, a jedynie translatorka, który zachowuje poprawność polskiej gramatyki, co jest i tak dużym wyzwaniem.

Oczywiście pozostaje kwestia bazy danych – zbiornicy słów i wyrazów. Nie mam zamiaru zbytnio zaprzątać sobie tym głowy. Oczywiście jakaś baza danych jest potrzebna, ale dla potrzeb tego projektu wystarczy, aby liczyła sobie kilkaset wyrazów angielskich i ich polskich odpowiedników. Taką bazę można sporządzić ręcznie pisząc odpowiednią aplikację. To podejście pozwoli mi też przyjrzeć się każdemu wyrazowi, wyszukać wyjątki, przypadki szczególne, szukać rozwiązań, uogólnień itd.

Motywacja

Do założenia tego bloga natchnął mnie John Sonmez. Prowadzi on stronę, a nawet portal dla sfrustrowanych programistów, którzy szukają lepszej pracy i zarobków. Moja praca jest nudna, ale pewna, więc nie szukam nowej pracy, ale jakiegoś sposobu spełnienia jako programista. Java nie jest moim narzędziem codziennej pracy, więc mam nadzieję nauczyć się czegoś nowego. Być może przez to tworzony przeze mnie projekt nie będzie miał optymalnych kształtów, zwłaszcza na początku, ale nie zamierzam się tym zbytnio przejmować. Celem tego bloga i projektu jest nauka i zabawa połączona z pożytecznym spędzaniem czasu.

Zatem do dzieła!

Jestem programistą

Najtrudniej jest zacząć. A może: najtrudniej zacząć. Mała rzecz, a cieszy. Jestem programistą: I am a programmer. Przecież tak nikt nie napisze. O mowie już nie wspominam, ale na szczęście zajmuję się tylko słowem pisanym. Jak to zamienić na obiekty? Jakie zaprojektować interfejsy? To przecież nie jest po polsku: ja jestem jakowyś programista, chociaż tak wynika z bezpośredniego tłumaczenia słów. Chociaż ostatnio można odnieść wrażenie, że to coraz bardziej jest po polsku… W każdym razie właśnie takich tłumaczeń chcę uniknąć. Nie: ja jestem programista, tylko jestem programistą. Polska języka trudna, zwłaszcza dla programistów.

Słowa i zdania

Tu fachowy cytat:

W użyciu fachowym słowo to po prostu ciąg liter od spacji do spacji. Nad jego znaczeniem się nie zastanawiamy, gdyż nie jest istotne. Wyraz natomiast to albo słowo (czasem ciąg słów) rozpatrywany w określonym znaczeniu, albo cały zbiór tak rozumianych słów.

W kontekście automatycznego tłumaczenia interesują mnie angielskie wyrazy, chociaż oczywiście z punktu widzenia programu tłumaczącego są to słowa, którym program musi w jakiś sposób nadać sens wyrazów, a potem przeanalizować ich treść w kontekście zdania i odpowiednio przetransformować na wyrazy, a potem słowa polskie. Oczywiście kluczowym zagadnieniem jest znalezienie owego sposobu, który nadaje sens, odgaduje podmiot, orzeczenie, ewentualne przydawki, dopełnienia i okoliczniki, dopasowuje czas i osobę czasowników, przypadki rzeczowników i przymiotników, ewentualnie zmienia kolejność i już mamy piękne tłumaczenie angielsko-polskie.

W co ja wdepnąłem?

Zaczynam

Mam ambitny plan: napisać w Javie tłumacza angielsko-polskiego, który zna polską gramatykę. Tłumaczenia mogą nie być super bardzo sensowne, bo sens można często wyłapać dopiero z szerszego kontekstu, ale żeby przynajmniej nie kaleczyły pięknej mowy polskiej. Pomysł wziął się z faktu, że kiedy korzystam z automatycznego tłumacza od razu ręce mi opadają, kiedy widzę:

Chociaż Wiosna zapewnia integrację i wsparcie dla ogromnej liczby przedsiębiorstw i innych zewnętrznych narzędzi, to celowo zachowuje swoje obowiązkowych zależności do absolutnego minimum: nie powinno się znaleźć i pobrać (nawet automatycznie) dużą liczbę bibliotek słoiku w celu Wiosna używać do prostych zastosowań.

Tak Tłumacz Google przetłumaczył fragment dokumentacji do Springa. Chcę zrobić coś, co przetłumaczy to przynajmniej tak:

Chociaż Wiosna zapewnia integrację i wsparcie dla ogromnej liczby przedsiębiorstw i innych zewnętrznych narzędzi, to celowo zachowuje swoje obowiązkowe zależności do absolutnego minimum: nie powinna lokalizować i pobierać (nawet automatycznie) dużej liczby bibliotek słoika w celu użycia Wiosny do prostych zastosowań.

Życzę sobie powodzenia.