Basics of programming (Python) - first-year students of linguistics and information management

  1. 2023-10-05: Introduction to Python
  2. Instrukcja instalacji narzędzi

    1. Ściągnij Python, wersja 3.12.0 dla systemu 32-bit lub 64-bit.
    2. Zainstaluj python-3.12.0.exe (32-bit) lub python-3.12.0-amd64.exe (64-bit).
    3. Otwórz IDLE (Python) z menu programów.
    4. Przywitaj się ze światem komendą: print ('Hello world!')
    5. W oknie Python Shell idź do File -> Save As i skopiuj ścieżkę, w której jest plik python.exe.
    Np. C:\Users\jbach\AppData\Local\Programs\Python\Python312-64
    6. W polu z lupą na pasku narzędzi w Windows 10 wyszukaj "Uruchom" i wpisz "cmd". Otworzy się okno z wierszem poleceń.
    7. W oknie wpisz "cd", a po spacji wklej ścieżkę, którą skopiowałeś w punkcie 4. Np. cała komenda będzie wyglądała tak:

    cd C:\Users\jbach\AppData\Local\Programs\Python\Python312-64

    Zatwierdź komendę, klikając ENTER.
    Polecenie powyżej przenosi do katalogu, w którym jest plik python.exe. Możesz go zobaczyć, wpisując dir i zatwierdzając przez kliknięcie na ENTER.
    8. Zainstaluj pip komendą: python -m pip install --upgrade pip. Jeżeli masz problemy z instalacją 'pip', spróbuj rozwiązać je, korzystając z TEJ strony.
    9. Zainstaluj nltk komendą: python -m pip install nltk
    10. Zainstaluj matplotlib komendą: python -m pip install -U matplotlib
    11. Zainstaluj numpy komendą: python -m pip install -U numpy
    12. Otwórz ponownie IDLE (Python) z menu programów.
    13. Zaimportuj nltk komendą: import nltk
    14. Ściągnij korpusy i narzędzia do NLTK komendą: nltk.download()
    Pojawi się okno, z którego wybierz "Everything used in the NLTK Book" i kliknij "Download".
    15. Jeżeli nie pojawiły się błędy podczas pobierania danych, to możesz przetestować, czy wszystko jest w porządku komendą:

    from nltk.book import *

    Powinien pojawić się niebieski tekst:

    *** Introductory Examples for the NLTK Book ***
    Loading text1, ..., text9 and sent1, ..., sent9
    Type the name of the text or sentence to view it.
    Type: 'texts()' or 'sents()' to list the materials.
    text1: Moby Dick by Herman Melville 1851
    text2: Sense and Sensibility by Jane Austen 1811
    text3: The Book of Genesis
    text4: Inaugural Address Corpus
    text5: Chat Corpus
    text6: Monty Python and the Holy Grail
    text7: Wall Street Journal
    text8: Personals Corpus
    text9: The Man Who Was Thursday by G . K . Chesterton 1908

    16. Przetestuj, czy masz pakiety Matplotlib i NumPy komendą:

    text4.dispersion_plot(["citizens", "democracy", "freedom", "duties", "America"])

    Jeżeli pojawił się wykres rozproszenia, to Python i NLTK są poprawnie zainstalowane. Gratulacje!

  3. 2023-10-12: Class cancelled
  4. 2023-10-19: Introduction to Python, cont.
  5. 2023-10-26: Introduction to Python, cont.
  6. 2023-11-09: Introduction to Python, cont.
  7. 2023-11-16: Introduction to Python, cont.
    1. Napisz funkcję, która zapyta użytkownika o liczby x i y, a następnie obliczy działanie:

    2. Napisz funkcję, w której zdefiniujesz jakieś hasło, a kiedy hasło zostanie wpisane, program wydrukuje 'Doskonale!' (Skorzystaj z pętli 'while'.)
      Przykładowe działanie programu:

      Podaj hasło: jajko
      Podaj hasło: 123abc
      Podaj hasło: Kasia
      Podaj hasło: Angelina
      Doskonale!
    3. Napisz funkcję, która zapyta użytkownika w pętli 'for' trzy razy o podanie liczby, a następnie wydrukuje pierwiastki tych liczb z dokładnością do trzech miejsc po przecinku.
      Przykładowe działanie programu:

      pierwiastki_liczb()
      Podaj liczbę: 
      Pierwiastek liczby 4 wynosi 2.000.
      Podaj liczbę: 10
      Pierwiastek liczby 10 wynosi 3.162.
      Podaj liczbę: 16
      Pierwiastek liczby 16 wynosi 4.000.
      

    4. Stwórz funkcję, która zapyta użytkownika o to, jaki jest dzisiaj dzień. Następnie zapyta, która jest godzina. Na koniec wydrukuje stosowny komunikat, np. Dzisiaj jest czwartek, godzina 10:30. Skorzystaj z formatu drukowania %s.
    5. Stwórz tablicę z imionami, a następnie wydrukuj elementy tablicy w tym formacie:
      0 => Basia
      1 => Maciej
      2 => Andżela
      3 => Piotr

      Skorzystaj z funkcji 'enumerate'.

    6. Napisz funkcję, w której zapytasz użytkownika o tekst oraz liczbę. Następnie sprawdź czy litera 'a' wystąpiła w podanym tekście przynajmiej tyle razy, ile podał użytkownik. Jeśli tak, wydrukuj komunikat: 'Tekst spełnia wymagania.' Jeśli nie, to wydrukuj: 'Ale pech. Spróbuj jeszcze raz.'
      >>> sprawdzaj()
      Podaj tekst: salamandra
      Podaj liczbę: 3
      Tekst spełnia wymagania.
  8. 2023-11-23: NLTK book, Chapter 1, Section 1: Computing with Language: Texts and Words
  9. 2023-11-30: NLTK book, Chapter 1, Section 2: A Closer Look at Python: Texts as Lists of Words

    Homework: Do again at home the tasks from section 1 and section 2 which were presented in class and check if your Python and nltk settings are working on your computer at home.

  10. 2023-12-07: NLTK book, Chapter 1, Section 3: Computing with Language: Simple Statistics
  11. 2023-12-14: NLTK book, Chapter 1, Section 4: Back to Python: Making Decisions and Taking Control
  12. 2023-12-21: NLTK book, Chapter 1, Section 4: Back to Python: Making Decisions and Taking Control and Section 5: Automatic Natural Language Understanding

    Exercises with frequency distribution.

    Homework: Do the exercises 1-12 at the end of Chapter 1.

  13. # 1) Dla text3 wydrukuj 5 pierwszych najczęściej występujących wyrazów w formacie:
    # wyraz *** ilość
    # 2) Wydrukuj wyrazy, które mają 11 znaków wraz z informacją o ilości występowania w formacie:
    # ilość %%% wyraz
    # 3) Wydrukuj wyrazy, które zaczynają się od "G" - też z informacją, ile razy wystąpiły.
    # wyraz => ilość
    # 4) Zsumuj za pomocą listy frekwencyjnej wszystkie wyrazy z text3.
    # 44764
    # => 44764
    # 5) Zsumuj ilość wystąpień tylko tych wyrazów, które zaczynają się od "G", korzystając z listy frekwencyjnej.

  14. 2024-01-11: NLTK book, Chapter 2

    http://bachan.speechlabs.pl/files/New_York_Times.zip

    Zadanie 1: Załaduj korpus New_York_Times.
    Zadanie 2: Wydrukuj nazwy plików w tym korpusie.
    Zadanie 3: Zbuduj konkordans dla wyrazu 'sisters' w pliku 1.
    Zadanie 4: Wydrukuj tylko te wyrazy z pliku 1, które są pisane wielkimi literami, np. BROOKS.
    Zadanie 5: Policz, ile jest zdań w pliku 2.
    Zadanie 6: Wydrukuj 60 pierwszych znaków z pliku 3.
    >> Zadanie 7: Dodaj plik tekstowy do korpusu New_York_Times z listą wyrazową (bez polskich znaków). Wydrukuj najdłuższy wyraz z tego pliku.

  15. 2024-01-18: Revision exercises
    Zadanie 1: Ściągnij, rozpakuj i załaduj korpus do nltk.
    Zadanie 2: Wydrukuj nazwy plików w tym korpusie.
    Zadanie 3: Zbuduj konkordans dla wyrazu 'Brexit' w pliku Times_file_01.txt.
    Zadanie 4: Znormalizuj tekst z pliku Times_file_01.txt do małych liter i oblicz, ile jest typów wyrazów.
    Zadanie 5: Stwórz listę frekwencyjną wyrazów z pliku Times_file_01.txt. Następnie wydrukuj tylko te wyrazy, które pojawiły się 4 lub więcej razy. Wyświetl wyraz i liczbę wystąpień tego wyrazu w formacie: wyraz <=> liczba.
    Zadanie 6: Wydrukuj najkrótsze zdanie (lub zdania) z pliku Times_file_02.txt.
    Zadanie 7: Wydrukuj cyfry (nie liczby!) w pliku Times_file_03.txt.
    Zadanie 8: Zsumuj cyfry z zadania 7.
    Zadanie 9: Napisz funkcję, w której zapytasz użytkownika o imię oraz ilość wykonanych zadań. Jeżeli liczba jest większa od 3, to wydrukuj informację 'imię, bardzo dobrze!.', a jeśli nie to wydrukuj 'imię, musisz więcej pracować w domu.' => Za 'imię' należy podstawić to, co wpisał użytkownik, czyli np. 'Jola, bardzo dobrze!' lub 'Jola, musisz więcej pracować w domu.'
    Zadanie 10: Napisz funkcję, która zapyta użytkownika o liczby x i y, a następnie obliczy działanie:

    Zadanie 11: Napisz funkcję, która zapyta użytkownika w pętli 'for' trzy razy o podanie liczby, a następnie wydrukuje sześciany tych liczb.
    Przykładowe działanie programu:

    >>> szesciany_liczb()
    Podaj liczbę: 3
    Sześcian liczby 3 wynosi 27.
    Podaj liczbę: 5
    Sześcian liczby 5 wynosi 125.
    Podaj liczbę: 4
    Sześcian liczby 4 wynosi 64.
    
  16. 2024-01-25: Revision exercises

    1. Ściągnij, rozpakuj i załaduj korpus do nltk. Korpus znajduje się tutaj: http://bachan.speechlabs.pl/files/Corpus_test1_A.zip
    2. Wydrukuj nazwy plików w tym korpusie.
    3. Zbuduj konkordans dla wyrazu „Sala” w pliku paper1.txt.
    4. Wydrukuj tylko te wyrazy z pliku paper1.txt, które mają 10 liter.
    5. Wydrukuj tylko te wyrazy z pliku paper1.txt, które mają ciąg liter „ff”.
    6. Stwórz listę frekwencyjną wyrazów z pliku paper1.txt. Następnie wydrukuj tylko te wyrazy i tokeny, które pojawiły więcej niż 3 razy w tekście. Wyświetl wyraz i liczbę wystąpień tego wyrazu/tokenu w formacie: wyraz *** >>> *** liczba.
    7. Policz, ile jest różnych typów znaków w pliku paper2.txt.
    8. Wydrukuj tylko duże litery z pliku paper2.txt.
    9. Wydrukuj 21 ostatnich znaków z pliku paper2.txt.
    10. Policz, ile jest zdań w pliku paper3.txt.
    11. Skonkatenuj dwa pierwsze wyrazy dwóch pierwszych zdań z pliku paper3.txt, aby powstał tekst „EmilianoJames”.
    12. Wydrukuj najdłuższe zdanie z pliku paper3.txt.
    13. Wydrukuj drugi wyraz z ostatniego zdania z pliku paper3.txt.
    14. Napisz funkcję, która zapyta użytkownika o liczby x i y, a następnie obliczy działanie:


    15. Napisz funkcję, która zapyta użytkownika o Twoje ulubione danie oraz jak często jesz to danie. Jeśli jesz to danie cztery razy w tygodniu lub więcej, to wydrukuj komunikat: „Ty naprawdę kochasz DANIE!”. Jeśli jesz to danie rzadziej, to wydrukuj komunikat: „DANIE to dobre danie, ale nie najlepsze.” Za DANIE podstaw tekst, który wpisałeś/-aś, korzystając z operatora %s.

  17. 2024-02-01: Final test
  18. 2024-02-29: NLTK book, Chapter 2, Section 1.2-1.8: Accessing Text Corpora
    Warunki zaliczenia semestru letniego 2024
  19. 2024-03-07: NLTK book, Chapter 2, Section 2: Conditional Frequency Distributions
  20. 2024-03-14: NLTK book, Chapter 2, Section 3: More Python: Reusing Code and Section 4.1-2: Lexical Resources
  21. 2024-03-21: NLTK book, Chapter 2, Section 4.2-4: Lexical Resources
  22. 2024-03-28: NLTK book, Chapter 2, Section 5: WordNet and final exercises
  23. 2024-04-11: Exercises on the command line (Terminal)

    Download: exercises in ODT format, PDF format, DOS-exercises.zip folder.

    • cd - shows the present working directory/folder (pwd command in Linux)
    • tree /f - shows a tree structure of directory/folder
    • type - shows the content of a file, e.g. type file01.txt
    • dir *part_of_filename* /s => finds files which contain given text in the filename. In the example below, the command looks for the word 'encoding' in the filename.
      /s => tells the dir command to search the current directory and all sub directories.

      C:\Users\Jola\Documents\Teaching>dir *encoding* /s.

       Wolumin w stacji C to OS
       Numer seryjny woluminu: 982B-4B29
      
       Katalog: C:\Users\Jola\Documents\Teaching\Teaching2013_2014\Systemy_pisma
      
      2013-10-23  17:31            16 200 2013-10-17_encoding_systems.odp
      2013-10-23  17:31            90 664 2013-10-17_encoding_systems.pdf
                     2 plik(ów)            106 864 bajtów
      
       Katalog: C:\Users\Jola\Documents\Teaching\Teaching2015_2016\Systemy_pisma
      
      2015-10-22  12:40            16 310 2015-10-15_encoding_systems.odp
      2015-10-22  12:40           122 425 2015-10-15_encoding_systems.pdf
                     2 plik(ów)            138 735 bajtów
      
           Razem wymienionych plików:
                     4 plik(ów)            245 599 bajtów
                     0 katalog(ów)   3 477 344 256 bajtów wolnych
      
      
      
    • findstr => finds a given string (text) in a certain text file or any file.
      1. In the 1st example, the word "echo" is looked for in the file 'DOS-exercises.txt'
        C:\Users\Jola\Documents\Teaching\>findstr "echo" Dos-exercises.txt
      2. In the 2nd example, the word "Jola" is looked for in any text file with the .txt extension.
        C:\Users\Jola\Documents\Teaching\>findstr "Jola" *.txt
        new_file.txt:Jola ma kota.
        test.txt:Jola ma kota
    • xcopy /s - copy the content of the folder with the subfolders. In the example, copy folder: '2015-10-22-DOS' to 'here' marked by the dot '.' 'Here' in the example is the Desktop: 'C:\Users\Jola\Desktop'

      C:\Users\Jola\Desktop>xcopy /s c:\Users\Jola\Documents\Teaching\Teaching2015_2016\Jezyki_skryptowe\2015-10-22-DOS .
    • mkdir - creates a new directory/folder
      c:\Users\Jola\Documents\Teaching\Teaching2017_2018\Jezyki_skryptowe\2018-03-01>mkdir EXERCISES

      c:\Users\Jola\Documents\Teaching\Teaching2017_2018\Jezyki_skryptowe\2018-03-01>dir
       Wolumin w stacji C to OS
       Numer seryjny woluminu: 982B-4B29
      
       Katalog: c:\Users\Jola\Documents\Teaching\Teaching2017_2018\Jezyki_skryptowe\2018-03-01
      
      2018-03-01  10:50  <DIR>  .
      2018-03-01  10:50  <DIR>  ..
      2018-03-01  10:46  274    2018-03-01_exercises.txt
      2018-03-01  09:51  <DIR>  DOS-exercises
      2018-03-01  09:50  115 465 DOS-exercises.pdf
      2018-03-01  09:50  39 682 DOS-exercises.zip
      2018-03-01  10:50  <DIR>  EXERCISES
                      3 plik(ów)          155 421 bajtów
                      4 katalog(ów) 1 368 072 192 bajtów wolnych
    • rmdir - removes a directory/folder
    • rmdir /s - removes a directory/folder with subdirectories

    Substitute commands for Linux: Windows vs. Linux

    1. cd <=> pwd (present working directory)
    2. dir <=> ls (list directory)
    3. type <=> cat
    4. copy con <=> touch
    5. move <=> mv
    6. copy <=> cp
    7. del <=> rm
    8. tree <=> ls -R
    9. find <=> grep

    Ćwiczenia:
    1. Wydrukuj wszystkie pliki PDF, które są na Pulpicie.
    2. Stwórz nowy folder w swoich dokumentach za pomocą funkcji "mkdir".
    3. Skopiuj wszystkie pliki PDF z Pulpitu do nowego folderu w swoim nowo powstałym folderze.
    4. Wydrukuj tylko te pliki z Pulpitu, które zawierają wyraz "Praat".

  24. 2024-04-18: NLTK book, Chapter 3, Regular Expressions for Detecting Word Patterns
  25. 2024-04-25: NLTK book, Chapter 3, Useful Applications of Regular Expressions
  26. 2024-05-09: NLTK book, Chapter 3, Normalizing Text and Regular Expressions for Tokenizing Text

    Homework: Do the exercise 6, 7, 24 and 25 at the end of Chapter 3.

  27. 2024-05-16: INPUT/OUTPUT filehandles

    File operations: reading files and writing to files

  28. 2024-05-23: INPUT/OUTPUT filehandles

    Treść zadania, które było wykonane w klasie:
    # 1 - Stwórz plik tekstowy z danymi.
    # 2 - Poproś użytkownika o podanie nazwy pliku, który chce przeszukać.
    # 3 - Zapytaj użytkownika, jakiego znaku poszukuje.
    # 4 - Zapytaj użytkownika, na jaki znak zamienić szukany znak.
    # 5 - Przeszukaj plik i policz, ile razy szukany znak wystąpić w pliku
    # oraz zamień go zgodnie z życzeniem użytkownika.
    # 6 - Tekst ze zamienionymi znakami wydrukuj do pliku zewnętrznego 'output.txt'.
    # 7 - Wydrukuj liczbę wskazanych znaków na ekran.

    Homework: Do the following tasks.

    1. 1 - Poproś użytkownika o podanie liczb a i h, aby obliczyć pole trójkąta (a, h).
      2 - Oblicz pole i wydrukuj wyniki na pliku zewnętrzenego.
      3 - Powtórz te obliczenia trzy razy z innymi danymi (stwórz pętlę for).
    2. 1 - Wczytaj plik tekstowy, który ma trzy kolumny: (1) imię, (2) nazwisko rodowe, (3) nazwisko
      2 - Pobierz nazwiska z trzeciej kolumny i użyj w pytaniu, np.: "Jak się masz, Tomaszczyk?"
      3 - Do pliku zewnętrzego wydrukuj nazwiska z trzeciej kolumny oraz odpowiedź użytkownika.

      Format plik wejściowego:

      Joanna Krzyżanowska Tomaszczyk
      Tomasz Górski Górski
      Marcelina Nowak Kowalska

      Format plik wyjściowego:

      Tomaszczyk	dobrze
      Górski	źle
      Kowalska	świetnie

  29. 2024-06-06:

    Tekst do zadania "foreign":

    Foreign is a afafafa word. I like foreign films. Who is forrein in this fantastic class? 
    Foreing is not spelled this way. Foren languages are my passion.

    Tekst do zadania "phones":

    Telephones are everywhere nowadays. One can't imagine
    life without a mobilephone. Mobilephones connect people and make us feel closer.
    I posses three phones myself.
  30. 2024-06-13: Revision exercises
    1. Wydrukuj do pliku zewnętrzenego "output.txt" w folderze "2024-06-13" swoje imię z literami jedną pod drugą (w pętli "for"). Następnie zapytaj użytkownika o jakąś liczbę i dodaj do niej 20. Wydrukuj sumę do tego samego pliku.
    2. Stwórz listę z poniższymi wyrazami:
      programming, Python, prgrming, python, Programing, to program

      Napisz wyrażenie regularne, które znajdzie różne warianty wyrazu "programming". Skorzystaj z re_show i pętli "for".

    3. Masz dany tekst:
      I have television. teleWizor I like my TeeeeleWizor, and I have many tlviiiiisions

      Napisz wyrażenie regularne, które odpowiada różnym pisowniom wyrazu "telewizor". Policz, ile jest tych wyrazów.
      Przykładowe działanie programu:

      ['television', 'teleWizor', 'TeeeeleWizor', 'tlviiiiisions']
      The word 'telewizor was found 4 times.
    4. Wczytaj plik tekstowy, który zawiera poniższy tekst. Policz, ile jest wierszy w pliku. Zamień partykułę "nie" na "tak" i wydrukuj zmieniony tekst na ekran.
      Ja nie mam ochoty.
      Zapomnienie.
      Co to, to nie.
      Nie ma mnie.
    5. Wydrukuj indeksy (miejsce występowania) partykuły "nie" z pliku z zadania 4. Najpierw przeprowadź tokenizację:
      ['Ja', 'nie', 'mam', 'ochoty', '.', 'Zapomnienie', '.', 'Co', 'to', ',', 'to', 'nie', '.', 'Nie', 'ma', 'mnie', '.']

      W pętli "for" z funkcją enumerate, wskaż indeksy partykuły "nie".

      1
      11
      13
    6. Wczytaj plik tekstowy "text_for_taks6_0.txt" i wydrukuj trzecią linijkę oraz jej długość.
    7. Zsumuj w pętli "for" liczby od 5 do 10 i wydrukuj sumę do pliku zewnętrznego "suma.txt"
    8. Stwórz plik z listą wyrazów (poza Pythonem). Znajdź najdłuższy wyraz w tym pliku.