Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2011-kl-lab9.doc
Скачиваний:
16
Добавлен:
12.11.2019
Размер:
1.65 Mб
Скачать

4.5 Інші бібліотеки

На сьогодні розроблено багато інших бібліотек Python, перелік яких можна знайти за адресою http://pypi.python.org/. Багато бібліотек забезпечують інтерфейс з іншим програмним забезпеченням, таким як реляційні бази даних (наприклад mysql-python) та великими колекціями документів (наприклад PyLucene). Інші бібліотеки забезпечують доступ до файлів у таких форматах як: PDF, MSWord, та XML (pypdf, pywin32, xml.etree), RSS (наприклад feedparser), та файлів електронної пошти (наприклад imaplib, email).

Порядок виконання роботи

  1. Ознайомитися з теоретичними відомостями.

  2. Виконати приклади, які використовуються в теоретичних відомостях.

  3. Виконати наступні вправи.

  1. Створити список слів і зберегти їх в змінній sent1. Здійснити операцію присвоювання sent2 = sent1. Змінити один з елементів в sent1 і перевірити чи змінився sent2. Результат письмово пояснити.

  2. Створити список слів і зберегти їх в змінній sent1. Здійснити операцію присвоювання sent2 = sent1[:].Змінити один з елементів в sent1 і перевірити чи змінився sent2. Результат письмово пояснити.

  3. Створити список списків слів [ [‘’,’’,’’… ], [[‘’,’’,’’… ], [[‘’,’’,’’…],…] (наприклад текст складається з речень, які складаються з стрічок). Здійснити операцію присвоювання text2 = text1[:], та здійснити операцію присвоювання нового значення одному зі слів (text1[1][1] = 'Monty'). Перевірити як ці операції вплинули на text2. Результат письмово пояснити.

  4. Завантажити функцію Python deepcopy() ( from copy import deepcopy). Прочитати документацію про цю функцію. Перевірити яким чином ця функція створює нові копії об’єктів.

  5. Створити список списків пустих стрічок використовуючи множення списків, наприклад word_table = [[''] * n] * m. Що станеться, якщо встановити одне зі значень такого списку, наприклад word_table[1][2] = "hello"? Пояснити письмово отримані результати. Створіть аналогічний список використовуючи функцію range() і продемонструйте що такий список позбавлений такого недоліку при присвоєнні значення одному з його елементів.

  6. Написати програму для створення двовимірного масиву word_vowels елементами якого є набори. Прграма повинна обробити список слів і додати результати обробки до word_vowels[l][v] де l – довжина слова, v – кількість голосних у слові.

  7. Написати функцію novel10(text), яка виводить на екран нові слова що вперше зустрілися в останніх 10% тексту.

  8. Написати програму, яка обробляє речення представлене у вигляді стрічки, розділяє його на окремі слова і підраховує частоту вживання окремих слів. Програма повинна виводити на екран впорядковані за абеткою та в окремих рядках всі слова та їх частоти.

     

    >>> letter_vals = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':80, 'g':3, 'h':8,'i':10, 'j':10, 'k':20, 'l':30, 'm':40, 'n':50, 'o':70, 'p':80, 'q':100, 'r':200, 's':300, 't':400, 'u':6, 'v':6, 'w':800, 'x':60, 'y':10, 'z':7}

  9. Гематрія – метод виявлення прихованого змісту слів на основі порівняння чисел, які відповідають словам. Слова з однаковими числами мають однаковий зміст. Число слова визначається сумуванням чисел, як відповідають його літерам. Написати функцію gematria() для сумування числових значень літер в слові згідно наступних значень letter_vals:

    1. Гематрія – метод виявлення прихованого змісту слів на основі порівняння чисел, які відповідають словам. Слова з однаковими числами мають однаковий зміст. Число слова визначається сумуванням чисел, як відповідають його літерам. Здійснити аналіз корпусу (наприклад nltk.corpus.state_union). Для кожного з текстів визначити скільки слів мають номер 555 та 777. (Використовувати letter_vals з попередньої задачі)

    2. Гематрія – метод виявлення прихованого змісту слів на основі порівняння чисел, які відповідають словам. Слова з однаковими числами мають однаковий зміст. Число слова визначається сумуванням чисел, як відповідають його літерам. Написати функцію decode() для обробки тексту, яка випадковим чином замінює слова на їх Гематрія-еквіваленти. Чи вдалося виявити "прихований зміст" тексту? (Використовувати letter_vals з попередньої задачі)

  1. Написати функцію shorten(text, n) обробки тексту , для вилучення n найбільш частотних слів в тексті. Яким чином змінилась читабельність тексту, після вилучення цих слів?

  2. Написати list comprehension для сортування списку синсетів WordNet за близькістю до заданого синсету. Наприклад, дані синсети minke_whale.n.01, orca.n.01, novel.n.01, та tortoise.n.01, потрібно їх відсортувати згідно їх path_distance() від right_whale.n.01.

  3. Написати функцію, яка обробляє список слів (з дублюванням слів) і повертає список слів (без дублювання) відсортований в порядку спадання їх частоти.

  4. Написати функцію, яка приймає текст і словник , як аргументи і повертає набір слів, які є у тексті але відсутні у словнику. Аргументи повинні бути представлені, як списки стрічок. Чи може функція мати один рядок при використанні set.difference()?

  5. Імпортувати функцію itemgetter() модуля operator зі стандартної бібліотеки Python ( from operator import itemgetter). Створити список words , який містить декілька слів. Спробувати виконати: sorted(words, key=itemgetter(1)), та sorted(words, key=itemgetter(-1)). Пояснити письмово роботу функції itemgetter().

  6. В NLTK реалізовано алгоритм Левінштейна для порівняння стрічок. Спробуйте скористатись цим модулем nltk.edit_dist(). Яким чином в цьому модулі використовується динамічне програмування? Який підхід використовується знизу-вверх чи зверху-вниз? Пояснити письмово.

4. Підготувати і оформити звіт.

Варіант

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Номери завдань

1

2

3

1

2

3

1

2

3

1

2

3

1

2

3

4

5

6

7

8

4

5

6

7

8

4

5

6

7

8

9

10

11

9

10

11

9

10

11

9

10

11

9

10

11

12

13

14

12

13

14

12

13

14

12

13

14

12

13

14

15

16

15

16

15

16

15

16

15

16

15

16

15

16

15

17

17

17

17

17

17

17

17

17

17

17

17

17

17

17

Варіант

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

Номери завдань

1

2

3

1

2

3

1

2

3

1

2

3

1

2

3

4

5

6

7

8

4

5

6

7

8

4

5

6

7

8

9

10

11

9

10

11

9

10

11

9

10

11

9

10

11

12

13

14

12

13

14

12

13

14

12

13

14

12

13

14

15

16

15

16

15

16

15

16

15

16

15

16

15

16

16

17

17

17

17

17

17

17

17

17

17

17

17

17

17

17

ЗМІСТ ЗВІТУ

5.1 Титульний аркуш.

5.2 Мета роботи.

5.3 Короткі теоретичні відомості.

5.4 Тексти програм на мові Python.

5.5 Висновок.

ЛІТЕРАТУРА

  1. Steven Bird, Ewan Klein, Edward Loper Introduction to Natural Language Processing. 2001-2007 University of Pennsylvania.

  2. Г. Россум, Ф.Л.Дж. Дрейк, Д.С. Откидач, М. Задка, М. Левис, С.Монтаро, Э.С.Реймонд, А.М.Кучлинг, М.-А.Лембург, К.-П.Йи, Д.Ксиллаг, Х.ГПетрилли, Б.А.Варсав, Дж.К.Ахлстром, Дж.Рокинд, Н.Шеменон, С.Мулендер. Язык программирования Python./ 2001 – 452c.

  3. Сузи Р. А. Язык программирования Python.- 206с.

  4. David Mertz Text Processing in Python Addison WesleyBiber, 2003 - 544.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]