Tu wkroczę, bo pośród mojej klienteli trafił się projekt dla jankeskiej firmy tworzącej różne technologie rozpoznawania i przetwarzania mowy. Coś a’la “czy dzisiaj będzie padać w Berlinie?” -> “Nie, nie przewiduje się dzisiaj opadów deszczu w Berlinie” -> “a jutro w Warszawie?” -> “Tak, w Warszawie zapowiadane są opady deszczu jutro o godzinie 12”. Są też inne bajery typu “puść mi n-tą piosenkę z playlisty”, ale nie wnikając.
Rozpoznawanie obrazów jest spoko - sam kiedyś w Pythonie bawiłem się w odtwarzanie obrazu algorytmem ewolucyjnym(1). Technologia ma potencjał i faktycznie da się z nią zrobić wiele. W dodatku względnie niewielkim wysiłkiem daje całkiem naturalne i zgodne z oczekiwaniami wyniki (np. rozpoznawanie pisma).
Tworzenie AI do rozpoznawania mowy to koszmar (2). Możliwości są słabe (te trzy słowa to tylko moja opinia; sam nie używałbym tego co dostarczyłem klientowi - dalej już bardziej obiektywnie), problem uchodzi za niemożliwy do rozwiązania (ludzie sami mają problemy ze zrozumieniem niektórych wypowiedzi, a co dopiero komputery) w ramach uczenia maszynowego (pełne rozwiązanie ma być możliwe w ramach tzw. silnej sztucznej inteligencji), po dziś dzień rozwiązania typu ELIZA są podstawą.
No i tak też było, jest i będzie w tym moim projekcie
Wymagania wstępne: program układający paski z niszczarki tak by odtworzyć pierwotny tekst, który skądinąd kazał zapoznać się z pierwszą publikacją Shannona na temat entropii. Rzeczywistość: dowiedzenie się, że polskie liczebniki są jednymi z bardziej skomplikowanych na świecie i środowiska akademickie sobie z nimi nie radzą (3), pisanie programów dostających na wejściu “12” a zwracających “dwanaście”, łapanie nieco wygodniejszym odpowiednikiem wyrażeń regularnych opracowanym przez klienta wszystkich możliwych sposobów zapytania “jaka jest godzina?” (np. “która jest teraz?”, “jaki mamy czas?”, …).
(1) Szukałem jakiegoś fajnego przykładu na szybko w sieci, ale lipa. Najbliższe temu co robiłem znalazłem tu i polecam dla zabawy
Przy czym w mojej wersji nie było rozwiązań takich jak pygad tylko NumPy i ręczne kodowanie wszystkiego dla nauki i zabawy z wykorzystaniem tutoriali.
(2) Daniel Jurafsky, James H. Martin: Speech and Language Processing. An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition. Z tej książki przygotowywałem się merytorycznie do projektu.
(3) Polecam na początek zainteresowanym tematem wraz z linkiem (gdzieś tam jest zaszyty) do artykułu na temat liczebników. Jeżeli autor witryny to widzi, raz jeszcze mu dziękuję, choć pod innym nickiem niż w mailu (on wie o co chodzi
), bo gdyby nie jego strona, zabijalibyśmy się o liczebniki porządkowe większe niż dwa tysiące oraz słowa typu “dziewięciomaset”. Przy okazji polecam zainteresowanym jego bibliotekę (udostępnia po otrzymaniu maila) - rewelacyjna.
P.S. i ad. 3) Odnosząc się do “obecnej sytuacji geopolitycznej” i dominujących w Polsce ocen na temat pewnego (formalnie) naszego sąsiada, doniosę tylko jako ciekawostkę, że w pewnym wschodnim kraju, który słynie z równie bogatego fleksyjnie jak nasz języka, choć bez wołacza (i wiem: боже), bardzo brakowało im tego typu rozwiązań, np. nie mają naszego narodowego Morfeusza więc musieli wszystko kodować samemu z marnym rezultatem 