PředmětyPředměty(verze: 945)
Předmět, akademický rok 2023/2024
   Přihlásit přes CAS
Programování pro korpusovou lingvistiku: Python a NLTK - AMLV00058
Anglický název: Programming for corpus linguistics: Python and NLTK
Zajišťuje: Ústav českého národního korpusu (21-UCNK)
Fakulta: Filozofická fakulta
Platnost: od 2023
Semestr: zimní
Body: 0
E-Kredity: 4
Způsob provedení zkoušky: zimní s.:
Rozsah, examinace: zimní s.:0/2, Z [HT]
Počet míst: neurčen / neomezen (10)
Minimální obsazenost: neomezen
4EU+: ne
Virtuální mobilita / počet míst pro virtuální mobilitu: ne
Kompetence:  
Stav předmětu: nevyučován
Jazyk výuky: čeština
Způsob výuky: prezenční
Způsob výuky: prezenční
Úroveň:  
Poznámka: předmět je možno zapsat mimo plán
povolen pro zápis po webu
Garant: Mgr. David Lukeš, Ph.D.
Vyučující: Mgr. David Lukeš, Ph.D.
Rozvrh   Nástěnka   
Anotace -
Poslední úprava: Mgr. David Lukeš, Ph.D. (03.01.2021)
Seminář je určen pro studenty humanitních, především filologických oborů se zájmem o korpusovou lingvistiku a počítačové zpracování textů. Nepředpokládá se žádná předchozí zkušenost s programováním, pouze základní uživatelská práce s PC. Absolventi kurzu se naučí pracovat s moderním, jednoduchým, leč o to užitečnějším programovacím jazykem Python a sadou nástrojů Natural Language Toolkit, která uživateli umožňuje sestavení vlastních korpusů, jejich prohledávání, vyhodnocování analýz (frekvenční seznamy, n-gramy...) a mnoho dalšího. Smyslem kurzu je ukázat, že na některých úkonech je snadnější, flexibilnější a rychlejší se s počítačem domluvit volným kombinováním příkazů v plnohodnotném (programovacím) jazyce, spíš než jen posunky (klikáním myši na položky v menu). Absolventi získají intuici i základní praktické dovednosti k tomu, aby dokázali identifikovat a následně i vyřešit úkoly, u nichž se přímo nabízí programátorský přístup. Díky němu vás do budoucna místo repetitivní ruční práce s daty čeká kreativní přemýšlení nad obecnými recepty (algoritmy), podle nichž za vás většinu dřiny udělá počítač.

V dalším semestru je možné navázat kurzem Programování pro korpusovou lingvistiku II, v němž se budeme věnovat pokročilejším metodám a podíváme se za hranice jazyka Python, abychom se naučili kombinovat svoje vlastní programy s cizími, často psanými v jiných jazycích.
Podmínky zakončení předmětu -
Poslední úprava: Mgr. Lucie Lukešová, Ph.D. (11.05.2016)

Požadavky k zápočtu: pravidelná docházka, aktivní účast na seminářích, průběžné plnění zadávaných úkolů, vypracování zápočtového úkolu.

Literatura -
Poslední úprava: Mgr. David Lukeš, Ph.D. (16.08.2018)

Bird, S., Klein, E., & Loper, E. (2014). Natural Language Processing with Python: Analyzing Text with the Natural Language Toolkit. Retrieved from http://www.nltk.org/book/

Gries, P., Campbell, J., & Montojo, J. (2013). Practical Programming: An Introduction to Computer Science Using Python 3 (2nd ed.). Dallas, Texas: Pragmatic Bookshelf.

Jurafsky, D., & Martin, J. H. (2019). Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition (3rd ed.). Retrieved from https://web.stanford.edu/~jurafsky/slp3/

Lukeš, D. (2016, January 27). How computers handle text: A gentle but thorough introduction to Unicode. Retrieved August 15, 2018, from https://dlukes.github.io/unicode.html

Matthes, E. (2015). Python Crash Course: A Hands-On, Project-Based Introduction to Programming (1st ed.). San Francisco: No Starch Press.

McEnery, T., & Hardie, A. (2011). Corpus Linguistics: Method, Theory and Practice. Cambridge University Press.

Moran, S., & Cysouw, M. (2018). The Unicode cookbook for linguists: managing writing systems using orthography profiles. Berlin: Language Science Press. Retrieved from http://langsci-press.org/catalog/book/176

Skiena, S. S. (2008). The Algorithm Design Manual. London: Springer London. https://doi.org/10.1007/978-1-84800-070-4

Sweigart, A. (2018). Cracking Codes with Python: An Introduction to Building and Breaking Ciphers. San Francisco: No Starch Press.

Vaughan, L. (2018). Impractical Python: Playful Programming Activities to Make You Smarter. San Francisco: No Starch Press.

Zinoviev, D. (2016). Data Science Essentials in Python: Collect – Organize – Explore – Predict – Value (1st ed.). Raleigh, North Carolina: Pragmatic Bookshelf.

Sylabus
Poslední úprava: Mgr. David Lukeš, Ph.D. (03.01.2021)

Kurz částečně vychází z knížky Natural Language Processing with Python (viz http://www.nltk.org/book/), která je pozvolným, souběžným úvodem do Pythonu i Natural Language Toolkit, určeným pro humanitně zaměřené studenty.

Psát programy v jazyce Python (viz https://www.python.org/) lze mnoha různými způsoby, my budeme primárně používat prostředí Jupyter (viz https://try.jupyter.org/), které umožňuje bezprostřední interakci a je tak přívětivé k začátečníkům. Navíc běží v prohlížeči, takže odpadají starosti s instalací. Zkušenějším kolegyním a kolegům ovšem nebude nijak bráněno v tom, aby používali prostředí jiné, jsou-li na ně zvyklí.

Hlavní okruhy (zde pro přehlednost tematicky sdružené, ale pořadí v rámci semestru se částečně liší, abychom vyvážili přísun nových informací s praktickým procvičováním):

1. ochutnávka, abychom věděli, k jakému cíli směřujeme

·         jak vypadají složitější programy v Pythonu

·         čeho lze s jejich pomocí dosáhnout

2. úvod do programovacího jazyka Python

·         interaktivní programování jako konverzace s počítačem o objektech v jeho paměti

·         různé typy kolekcí: textové řetězce, seznamy, slovníky, množiny, n-tice

·         řídicí struktury: for-cyklus, podmínky

·         tvorba vlastních funkcí (funkce = uložený postup, recept, který lze kdykoliv spustit)

3. základy kvantitativní analýzy jazykových dat

·         abstraktní druh jazykové jednotky (typ) vs. její konkrétní výskyt v textu (token)

·         frekvence a disperze jevů jako základní kvantifikační postupy

·         práce s předpřipravenými jazykovými daty v NLTK

·         vizualizace (wordcloud, dispersion plot)

4. zpracování surových textových dat

·         formát "čistého textu", tzv. plain text

·         kódování, zejm. Unicode a UTF-8

·         regulární výrazy

5. algoritmizace, aneb jak poskládat jednoduché dílčí úkony, které nám Python dává k dispozici, tak, aby dohromady tvořily postup, který řeší nějaký netriviální úkol

6. práce s větším množstvím dat

·         správa korpusů pomocí NLTK

·         orientace ve strukturovaných plaintextových datech: zpracování korpusu ve formátu tzv. vertikály

7. využití lingvistické anotace při analýze jazykových dat

·         lemmatizace, morfologické a syntaktické značkování

8. pokročilejší Python

 
Univerzita Karlova | Informační systém UK