Teksty, korpusy, modele językowe, czyli przetwarzanie języka naturalnego w praktyce 1500-SDN-TKMJCPJNWP
Zasadniczym celem zajęć będzie praktyczne wprowadzenie uczestników w zagadnienia dotyczące językoznawstwa komputerowego i przetwarzania języka naturalnego, które pozwoli im nabyć umiejętności tworzenia i przetwarzania korpusów tekstów z dodanymi własnymi warstwami anotacyjnymi. Anotacja korpusu polega na wzbogaceniu zbioru surowych danych tekstowych o dodatkowe informacje lingwistyczne, np. charakterystyka poszczególnych segmentów tekstów pod kątem ich przynależności do części mowy. Istniejące narzędzia korpusowe pozwalają na automatyczną anotację danych tekstowych pod kątem informacji z poziomu fleksji oraz składni, niekiedy zaś także z poziomu semantyki oraz pragmatyki. Umiejętność tworzenia własnych warstw anotacyjnych może pozwolić uczestnikom zajęć przezwyciężyć naturalne ograniczenia ogólnodostępnych narzędzi wynikające z ich ogólnego przeznaczenia i przygotować rozwiązanie skrojone na miarę ich projektów badawczych.
W ramach pierwszego bloku zajęć uczestnicy poznają podstawy programowania w języku Python, pakiety tego języka umożliwiające przetwarzanie języka naturalnego i danych tekstowych (np. spaCy, Stanza, pandas, ollama), a także zasoby danych (tzw. datasety) wykorzystywane do tworzenia narzędzi pozwalających na budowania korpusów tekstów i automatyczną ich analizę i anotację (takich jak np. Korpusomat czy SketchEngine).
Drugi blok tematyczny zostanie poświęcony metodologii i praktyce anotowania tekstów, czyli tworzenia własnych zasobów danych, oraz technikom uczenia maszynowego (np. uczenie maszynowe i głębokie, z nadzorem i bez nadzoru, różne odmiany zadań związanych z klasyfikacją tekstów). Zasoby przygotowane przez uczestników – w aplikacji Label Studio – zostaną wykorzystane do wytrenowania własnych modeli uczenia maszynowego (LLM-ów), opartych na najnowszych architekturach sieci neuronowych, które pozwalają na osiągnięcie relatywnie wysokiej skuteczności nawet na podstawie niewielkich zbiorów treningowych.
Trzeci blok tematyczny będzie dotyczył podstaw badań korpusowych i będzie nastawiony na stworzenie własnego korpusu – z wykorzystaniem silnika wyszukiwania BlackLab – z warstwami anotacji opracowanymi na wcześniejszych etapach. Korpusy tekstów stanowią naturalną podstawę dla badań ilościowych i jakościowych z zakresu językoznawstwa, literaturoznawstwa czy socjologii. Zakres wykorzystania korpusów nie ogranicza się jednak tylko do tych dziedzin – mogą być one także przydatne badaczom należącym do innych dyscyplin, np. służyć do tworzenia korpusów artykułów z danej dyscypliny badawczej i przeglądu literatury. Na podstawie odpowiednio przygotowanego korpusu osoby uczestniczące w zajęciach będą w stanie formułować zapytania, tworzyć zestawienia statystyczne i tworzyć wizualizacje wyników przydatne w prowadzonych przez siebie badaniach.
Metody i przykłady przedstawione na zajęciach będą dotyczyły głównie języka polskiego, jednakże na ogół bez większych przeszkód uczestnicy będą mogli znaleźć ich odpowiedniki lub przenieść je na grunt innych języków (np. angielskiego, niemieckiego, francuskiego czy włoskiego).
Od uczestników nie wymaga się wcześniejszej znajomości języków programowania i posiadania umiejętności programistycznych, oczekuje się jednak motywacji do ich poznania i opanowania.
Zajęcia zakładają i dopuszczają szeroki zakres wykorzystania technik generatywnej sztucznej inteligencji. W ramach zajęć sformułujemy kodeks honorowy i zasady wskazujące precyzyjnie obszary, w których korzystanie z technik AI będzie wskazane i pożądane, a w których odradzane lub wręcz zabronione jako sprzeczne z celem zajęć. W szczególności będzie to dotyczyło rozróżnienia między trybem nauki, w którym AI może nam posłużyć jako osobisty asystent, a trybem weryfikacji wiedzy, w którym osoby uczestniczące w zajęciach będą musiały wykazać się samodzielnością i opanowaniem materiału bez zewnętrznej pomocy.
Koordynatorzy przedmiotu
Rodzaj przedmiotu
Efekty uczenia się
Wiedza (zna i rozumie)
WG_01 podstawy teoretyczne i technologiczne narzędzi służących do przetwarzania i analizy danych tekstowych
WG_01 podstawy programowania w Pythonie, pakiety tego języka służące do automatycznego przetwarzania i analizy danych tekstowych
WG_03 metodologię badań językoznawstwa komputerowego i przetwarzania języka naturalnego w kontekście badań humanistycznych i interdyscyplinarnych
WK_01 fundamentalne dylematy współczesnej cywilizacji związane z tworzeniem i wykorzystaniem modeli językowych, także w praktyce badawczej i kontekście akademickim
Umiejętności (potrafi)
K_U01 potrafi komunikować się na tematy specjalistyczne z zakresu przetwarzania języka naturalnego w stopniu umożliwiającym aktywne uczestnictwo w międzynarodowym środowisku naukowym
UW_01 potrafi z wykorzystaniem technik programistycznych pozyskiwać i przetwarzać dane tekstowe na potrzeby analiz jakościowych i ilościowych
UW_01 potrafi przeprowadzić anotację zbioru tekstów, uwzględniając wymogi metodologiczne i konsekwencje dla skuteczności trenowanych modeli uczenia maszynowego
Kompetencje społeczne (jest gotów do)
KK_03 do uznawania znaczenia wiedzy z dziedziny przetwarzania języka naturalnego w rozwiązywaniu problemów poznawczych i praktycznych oraz stosowania metod przetwarzania języka naturalnego do realizacji własnych celów badawczych
Kryteria oceniania
Uczestnictwo w zajęciach (dopuszczalne dwie nieobecności).
Uzyskanie co najmniej 60% punktów z testów i zadań na platformie Kampus.
Zrealizowanie projektu indywidualnego lub grupowego polegającego m.in. na zebraniu i zaanotowaniu danych (stworzenie mikrokorpusu), wytrenowaniu na ich podstawie modelu sztucznej inteligencji oraz opracowanie narzędzia korpusowego z własną warstwą anotacji.
Literatura
Alammar, J., Grootendorst, M. (2024) Hands-on Large Language Models. Language Understanding and Generation, Sebastopol, CA: O’Reilly Media.
Altinuk, D. (2021) Mastering spaCy: An end-to-end practical guide to implementing NLP applications using the Python ecosystem. Birmingham: Packt Publishing.
Does, J. de, Niestadt, J., Depuydt, K. (2017), Creating research environments with BlackLab, w: J. Odijk, A. van Hessen (eds.), CLARIN in the Low Countries, s. 151–165, London: Ubiquity Press.
Hobson, L., Cole, H., Hannes, H. (2021) Przetwarzanie języka naturalnego w akcji. Rozumienie, analiza i generowanie tekstu w Pythonie na przykładzie języka angielskiego. Warszawa: PWN.
Kinsley, H., Kukieła, D. (2020) Neural Networks from Scratch in Python. Sentdex, Kinsley Enterprises.
Pustejovsky, J., Stubbs, A. (2013) Natural Language Annotation for Machine Learning. Sebastopol, CA: O’Reilly Media.
Sweigart, A. (2020) Automatyzacja nudnych zadań z Pythonem. Nauka programowania. Gliwice: Helion.
Tkachenko, M., Malyuk, M., Holmanyuk, A., Liubimov, N. (2020–2026), Label Studio: Data labeling software. https://github.com/HumanSignal/label-studio