Scripting languages for natural language processing (Python)

  1. 2018-10-10: Introduction to Python

    Homework: Install Python 2.7. or Python 3 and test the commands presented in the last class.

  2. 2018-10-17: Class cancelled - LingBaW conference
  3. 2018-10-24: Introduction to Python, cont.
  4. 2018-11-07: Introduction to Python, cont.

    Homework: Rozwiąż poniższe zadania.

    1. 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.
      

    2. Stwórz funkję, 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.
    3. 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'.

    4. 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: j
      Podaj hasło: j
      Podaj hasło: m
      Podaj hasło: Angelina
      Doskonale!
  5. 2018-11-14: Various tasks
    1. 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!
    2. 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: aaa
      Podaj liczbę: 3
      Tekst spełnia wymagania.

      LUB

      >>> sprawdzaj()
      Podaj tekst: Jadwiga
      Podaj liczbę: 5
      Ale pech. Spróbuj jeszcze raz.
    3. Napisz funkcję, która zapyta użytkownika o liczby x i y, a następnie obliczy działania:

    4. 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, usisz więcej pracować w domu.'

    Homework: Install Python 2.7. or Python 3 and the NLTK on your home computers.

  6. 2018-11-21: NLTK book, Chapter 1

    Homework: Install Python 2.7. or Python 3 and the NLTK on your home computers.

    1. Uruchom wiersz poleceń:
      cmd.exe
    2. Przejść do katalogu, w którym jest python.exe, na przykład wpisując:
      cd c:\python27
    3. Uruchomić polecenie:
      python -m pip install nltk
  7. 2018-11-28: NLTK book, Chapter 1

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

  8. 2018-12-05: Class cancelled - water leak
  9. 2018-12-12: NLTK book, Chapter 1

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

  10. 2018-12-19: 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.

  11. 2018-12-19: NLTK book, Chapter 1 - revision excercises
  12. 2019-01-09: Revision excercises
    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ę, która zapyta użytkownika o liczby x i y, a następnie obliczy działanie:

    Zadanie 10: 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.'

    Przykładowe działanie programu:

    >>> sprawdzaj()
    Podaj tekst: aaa
    Podaj liczbę: 3
    Tekst spełnia wymagania.

    LUB

    >>> sprawdzaj()
    Podaj tekst: Jadwiga
    Podaj liczbę: 5
    Ale pech. Spróbuj jeszcze raz.
  13. 2019-01-23: Test 1
  14. 2019-01-30: Test 2
  15. 2019-02-28: NLTK book, Chapter 2, Warunki zaliczenia; Change of dates: Final test 1 - 2019-05-30, Final test 2 - 2019-06-13
  16. 2019-03-07: NLTK book, Chapter 2 - Conditional Frequency Distributions
  17. 2019-03-14: NLTK book, Chapter 2 (3.2-3, 4.1-2)
  18. 2019-03-21: NLTK book, Chapter 2 (4.3, 4.4. 5. Wordnet). Input/Output filehandles.

    Homework: Wczytaj plik tekstowy. Oblicz długość każdej linijki i wydrukuj do pliku zewnętrznego każdą linijkę i jej długość oddzielone spacją.

  19. 2019-03-28: Input/Output filehandles, cont.
  20. 2019-04-04: Input/Output filehandles, cont.
  21. 2019-04-18: Regular expressions, NLTK book, Chapter 3.
    • 3.4. Regular Expressions for Detecting Word Patterns
    • 3.5. Useful Applications of Regular Expressions

    Homework:
    Your Turn: In the W3C Date Time Format, dates are represented like this: 2009-12-31. Replace the ? in the following Python code with a regular expression, in order to convert the string '2009-12-31' to a list of integers [2009, 12, 31]:
    [int(n) for n in re.findall(?, '2009-12-31')]

  22. 2019-04-25: Exercises on the command line
    set path=%path%;C:\python27

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

    • 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

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

  23. 2019-04-25: A trip to Poznań Supercomputing and Networking Center
  24. 2019-05-09: Regular expressions, NLTK book, Chapter 3. (3.5-7)
  25. 2019-05-16: Various 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. Stwórz listę z poniższymi wyrazami:
    programming, prgrming, Programing, to program
    Napisz wyrażenie regularne, które znajdzie różne warianty wyrazów. Skorzystaj z re_show i pętli "for".

    Zadanie 3. Wydrukuj do pliku zewnętrzenego "output.txt" w folderze "2019-05-16" 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.

    Zadanie 4. Wczytaj plik tekstowy. 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.

    Zadanie 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, 9, 10]

    Homework: Exercise 25, Chapter 3, Pig Latin.

  26. 2019-05-23: Revision tasks
    1. Wczytaj plik tekstowy i wydrukuj trzecią linijkę oraz jej długość.
    2. Zsumuj w pętli "for" liczby od 5 do 10 i wydrukuj sumę do pliku zewnętrznego "suma.txt"
    3. Napisz wyrażenie regularne, które odpowiada różnym pisowniom wyrazu "television".
      television TeeeeleWizor tlviiiiisions
    4. Stwórz plik plik z listą wyrazów (poza Pythonem). Znajdź najdłuższy wyraz w tym pliku.
    5. Exercises 31 and 32, Chapter 3, NLTK
  27. 2019-05-29: Revision tasks

    Zadanie 1
    1 – Ściągnij i wczytaj plik chairman.txt. Plik znajduje się tutaj:
    http://bachan.speechlabs.pl/files/chairman.txt
    2 - Za pomocą funkcji re_show znajdź rożne pisownie wyrazu "chairman".
    3 – Znajdź wszystkie liczby w pliku i wydrukuj.
    4 – Policz, ile jest wszystkich wyrazów/tokenów w pliku.
    5 – Stwórz i wydrukuj warunkową listę frekwencyjną dla wyrazów zaczynających się od 'a' oraz ich długości.
    Przykładowe działanie programu:

    Poznan, 2018-05-24
    Task 1
    
    I am wondering about a word {chairman} at least 6 times. Can a woman be a {Chairman}? 
    Maybe it is better to say a chairperson? {Chairrrrrmannnn}!!! Does it sound very masculine? 
    Even if I say this 1000 times for me it is neutral. I would say {charman} may also be a woman. 
    And what do you think about the word '{chaiman}'?
    ['2018', '05', '24', '1', '6', '1000']
    74
             1    2    4    5
        a    5    0    0    0
    about    0    0    0    2
     also    0    0    1    0
       am    0    1    0    0
       at    0    1    0    0

    Zadanie 2
    1 – Ściągnij i wczytaj plik programming.txt. Plik znajduje się tutaj:
    http://bachan.speechlabs.pl/files/programming.txt
    2 – Znajdź tylko te wiersze w pliku, które zawierają ciąg znaków 'program'. Wydrukuj te wiersze na ekran.
    3 – Oblicz długość wierszy z ciągiem znaków 'program' i ich długości wydrukuj jedną pod drugą do pliku results.txt.
    4 - Zsumuj długości wierszy z punktu 3 i wydrukuj na ekran.
    Przykładowe działanie programu:

    It is crazy how much Python we must learn for this test in programming!
    Everything seems easy when we solve exercises with our teacher, but when she is is not with us, programming gets us nuts.
    Not even a character - a space or an indentation makes our program produce errors.
    274

    Plik results.txt:

    71
    121
    82

    Zadanie 3
    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.
  28. 2019-05-30: Test 1
  29. 2019-06-13: Test 2