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