Basics of programming for natural language processing (Python)

  1. 2020-10-15: Introduction to Python
  2. 2020-10-22: Introduction to Python, cont.
  3. 2020-10-29: Introduction to Python, cont.
  4. 2020-11-05: Introduction to Python, cont.
    Homework: Napisz funkcję, która zapyta użytkownika o podanie liczby oraz o tekst, a następnie wydrukuje tekst tyle razy, ile wynosi liczba podana przez użytkownika w jednym ciągu. Oblicz długość tego ciągu znaków.
    **Część zadania dla chętnych: Jeśli wydrukowany tekst będzie dłuższy lub równy 30 znakom, to wydrukuje "BRAWO!", a jeśli nie, to pojawi się komunikat "Spróbuj jeszcze raz!".
    Skorzystaj z funkcji len, np. len(tekst)
    Przykładowe działanie programu:

    >>> dlugosc_tekstu()
    Podaj liczbę: 5
    Podaj tekst: Jolanta
    JolantaJolantaJolantaJolantaJolanta
    BRAWO! 
  5. 2020-11-12: Introduction to Python, cont.
    Homework:

    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!
  6. 2020-11-19: Various tasks
    1. Napisz funkcję, która zapyta użytkownika o liczby x i y, a następnie obliczy działanie:

    2. 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ę: 4
      Pierwiastek liczby 4 wynosi 2.000.
      Podaj liczbę: 10
      Pierwiastek liczby 10 wynosi 3.162.
      Podaj liczbę: 16
      Pierwiastek liczby 16 wynosi 4.000.
      

    3. 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.
    4. 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'.

    5. 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: salamndra
      Podaj liczbę: 3
      Tekst spełnia wymagania.

    Homework: Install the NLTK on your home computers.

    ------ALBO------

    1. Uruchom wiersz poleceń:
      cmd.exe
    2. Przejdź do katalogu, w którym jest python.exe, na przykład wpisując:
      cd c:\python39
    3. Wpisz "dir", aby wydrukować zawartość folderu i sprawdzić, czy jest python.exe.
    4. Uruchom polecenie:
      python -m pip install nltk

    ------ALBO------

    1. Uruchom wiersz poleceń:
      cmd.exe
    2. Przejdź do katalogu, w którym jest python.exe, na przykład wpisując:
      cd c:\python39
    3. Wpisz "dir", aby wydrukować zawartość folderu i sprawdzić, czy jest python.exe.
    4. Uruchom polecenie:
      python -m pip install --upgrade pip
    5. Uruchom polecenie:
      python -m pip install --upgrade --force-reinstall nltk
    6. NLTK installation

  7. 2020-11-26: Solving tasks together. Installation of the NLTK, Matplotlib and NumPy
  8. 2020-12-03: Introduction to NLTK, Chapter 1

    Homework: Repeat the tasks done in class at home by yourself.

  9. 2020-12-10: NLTK book, Chapter 1: Variables, Strings, Lists, Lexical diversity
    Homework:

    1. Wypełnij jednowymiarową tablicę 20 losowymi liczbami z zakresu 10-99.
      Do wygenerowania liczb losowych potrzebujesz modułu random.

      import random

      Instrukcja random.randrange(10, 21) generuje liczby losowe z zakresu 10-20.

    2. Ile procent stanowią wyrazy 4-literowe w text5 na wszystkich tokenach.
  10. 2020-12-17: NLTK book, Chapter 1 - Computing with Language: Simple Statistics, Back to Python: Making Decisions and Taking Control
  11. 2021-01-07: NLTK book, Chapter 1 - Automatic Natural Language Understanding, revision and exercises

    Homework: Do the exercises 1-16 at the end of Chapter 1, NLTK book.

  12. 2021-01-14: 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.

  13. Homework: Do the exercises 17-24 at the end of Chapter 1, NLTK book.

  14. 2021-01-21: 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.
    
  15. 2021-01-28: 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.
    16. Napisz funkcję, która zapyta użytkownika o podanie liczby oraz o tekst, a następnie wydrukuje tekst tyle razy, ile wynosi liczba podana przez użytkownika w jednym ciągu. Jeśli wydrukowany tekst będzie dłuższy lub równy 30 znakom, to wydrukuje "BRAWO!", a jeśli nie, to pojawi się komunikat "Spróbuj jeszcze raz!".
    Skorzystaj z funkcji len, np. len(tekst)
    Przykładowe działanie programu:

    >>> dlugosc_tekstu()
    Podaj liczbę: 5
    Podaj tekst: Jolanta
    JolantaJolantaJolantaJolantaJolanta
    BRAWO!
  16. 2021-02-04: Final test I
  17. 2021-03-04: Corpus structure, NLTK, Chapter 2
    Warunki zaliczenia semestru letniego 2021
  18. 2021-03-11: Exercises on the command line

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

    • 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. In the example below, the word "echo" is looked for in the file 'DOS-exercises.txt'

      C:\Users\Jola\Documents\Teaching\>findstr "echo" Dos-exercises.txt
    • 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

    Ć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".

  19. 2021-03-18: Conditional Frequency Distributions, NLTK, Chapter 2
  20. Homework: Do exercises 1-4 from Chapter 2, NLTK book

  21. 2021-03-25: Lexical Resources, NLTK, Chapter 2
  22. Homework: Analyse and do exercises in the section 5. WordNet in Chapter 2, NLTK book

  23. 2021-04-08: INPUT/OUTPUT filehandles

    File operations: reading files and writing to files

  24. Homework: Poproś użytkownika o podanie pliku, który ma być otwarty. Wydrukuj zawartość wskazanego pliku na ekran.

  25. 2021-04-15: INPUT/OUTPUT operations

    # Znajdź i zamień
    # 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 exercises.

    # Zadanie 1
    # 1 - Poproś użytkownika o podanie długości boku trójkąta 'a' oraz wysokość trójkąta 'h', aby obliczyć pole trójkąta.
    # 2 - Oblicz pole i wydrukuj wyniki na pliku zewnętrznego.
    # 3 - Dodaj pętlę for tak, aby powtórzyć obliczenia trzy razy z innymi danymi.

    # Zadanie 2
    # Otwórz plik z danymi z zadania 1 i oblicz średnią liczb z pliku. Wynik wydrukuj na ekran.

  26. 2021-04-22: INPUT/OUTPUT operations, cont.

    Homework: Do the following exercises.

    # Zadanie 1
    # 1 - Otwórz plik tekstowy ze zdaniami.
    # 2- Wydrukuj zdania, w których znajduje się słowo Wielkanoc oraz indeks tych zdań.

    # Zadanie 2
    # 1 - Wczytaj plik z kilkoma zdaniami, które są napisane w jednej linijce. Każde zdanie kończy kropka.
    # 2- Zmodyfikuj zawartość pliku tak, aby każde zdanie było zapisane w nowej linii.
    # 3 - Zmodyfikowany tekst wydrukuj do pliku zewnętrznego.

  27. 2021-04-29: Introduction to regular expressions
    3.4 Regular Expressions for Detecting Word Patterns
  28. 2021-05-06: Introduction to regular expressions, cont.

    Homework: Do the following exercises.

    • Zadanie 1
      # Napisz wyrażenie regularne, które znajdzie różne warianty wyrazu "foreign". Skorzystaj z re_show.

       Foreign foreign forrein Foreing Foren
    • Zadanie 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, Górski?"
      # 3 - Do pliku zewnętrzego wydrukuj nazwiska z trzeciej kolumny oraz odpowiedź użytkownika.

      # Format pliku wejściowego:
      # Tomasz Górski Górski
      # Joanna Krzyżanowska Tin
      # Marcelina Nowak Kowalska

      # Format pliku wyjściowego:
      # Górski good
      # Tin bad
      # Kowalska excellent

  29. 2021-05-13: Regular expressions, cont.

    Homework: Do the following exercises.

    • Zadanie 1
      # 1 - Dany jest tekst: "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."
      # 2 - Napisz wyrażenie regularne, które znajdzie wszystkie wyrazy zawierające ciąg 'phone'. Wydrukuj te wyrazy.
      # 3 - Napisz wyrażenie regularne i zamień małe 's' na końcach wyrazów na duże 'S' i wydrukuj zmieniony tekst na ekran.
      # Przykładowe działanie programu:
      # ['Telephones', 'mobilephone', 'Mobilephones', '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.
    • Exercises 6, 23, 24, 25, NLTK book, Chapter 3.
  30. 2021-05-20: Revision exercises
    1. Wydrukuj do pliku zewnętrzenego "output.txt" w folderze "2021-05-20" swoje imię z literami jedną pod drugą (w pętli "for"). Następnie zapytaj użytkownika o jakąś liczbę i również wydrukuj ją 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 3. 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]
  31. 2021-05-27: Revision exercises
    1. Wczytaj plik tekstowy "text_for_taks6.txt" i wydrukuj trzecią linijkę oraz jej długość.
      This is a test file.
      It was created to solve task 6.
      Task 6 is to see if you can read in a text file.
      If you solve the task, you are closer to pass the test.
      Everyone wants to pass the test.
    2. Zsumuj w pętli "for" liczby od 5 do 10 i wydrukuj sumę do pliku zewnętrznego "suma.txt"
    3. Stwórz plik z listą wyrazów (poza Pythonem). Znajdź najdłuższy wyraz w tym pliku.
    4. 1 – Wczytaj plik „pandemic.txt”, który zawiera następujący tekst:
      What a tragedy! 2020 is a totally different year because of the viiiirus. Who could predict in 2019 that in 2020 students in many countries will take online tests because of pandemic of Covid-19?! The other name of this deadly Vairuuuuus is SARS-Cov-2. I hate this viiirs!
      2 – Napisz wyrażenie regularne, które znajdzie wszystkie formy zapisu wyrazu „virus”. Wydrukuj te wyrazy. → Są 3 wyrazy „virus”: viiiirus, Vairuuuuus, viiirs.
      3 – Policz i wydrukuj, ile jest wyrazów „virus” zapisanych w różny sposób w pliku.
      4 – Napisz wyrażenie regularne, które znajdzie wszystkie wyrazy/tokeny, które zawierają
      same cyfry albo kombinację liter, myślników i cyfr. Zamień te tokeny na „XXXX” i wydrukuj zmieniony tekst na ekran. Poprawnie zamieniony tekst powinien wyglądać tak :
      What a tragedy! XXXX is a totally different year because of the viiiirus. Who could predict in XXXX that in XXXX students in many countries will take online tests because of pandemic of XXXX?! The other name of this deadly Vairuuuuus is XXXX. I hate this viiirs!
    5. 1 – Zapytaj użytkownika o 5 liczb i stwórz z nich listę z liczbami.
      2 – W pętli for zsumuj te liczby i wydrukuj sumę na ekran.
      3 – Zapytaj użytkownika o podanie nazwy pliku.
      4 – Utwórz plik o nazwie podanej przez użytkownika w punkcie 3.
      5 – Wydrukuj do tego pliku sumę liczb.