МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІНСТИТУТ КОМП’ЮТЕРНИХ НАУК ТА ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ
Кафедра “Системи автоматизованого проектування”
/
Звіт
до лабораторної роботи №2
на тему:
«ВИВЧЕННЯ БІБЛІОТЕКИ ПРИКЛАДНИХ ПРОГРАМ NLTK, ДЛЯ ОПРАЦЮВАННЯ ТЕКСТІВ ПРИРОДНОЮ МОВОЮ.
ОСНОВИ ПРОГРАМУВАННЯ НА МОВІ PYTHON(частина 2)»
МЕТА
Вивчення основ програмування на мові Python. Ознайомлення з контрольними структурами та класом FreqDist.
ТЕОРЕТИЧНІ ВІДОМОСТІ
Python - це проста і потужна об’єктно-орієнтована мова програмування високого рівня з чудовими можливостями для обробки лінгвістичних даних.
Засоби керування логікою
Програми, які згадувалися в лабораторній роботі №1, доволі прості, але дозволяють здійснювати операції над послідовностями слів і зокрема над кожним із них. Ми працювали зі списками, які містять декілька слів , але є потреба працювати з такими списками, які містять тисячі слів . Це зумовлює необхідність мати засоби, які керують поведінкою програм.
Засоби здійснення простого керування
Більшість мов програмування дозволяють виконання окремих блоків програми, коли використовуються умовні вирази або if твердження. В наступній програмі ми створили змінну word, яка містить значення ‘cat’ типу стрічка. If- вираз перевіряє умову чи довжина слова <5, чи ні. Якщо умова виразу справджується, то виконується тіло if твердження і виконується оператор print .
If твердження, так як і For твердження - це керуючі (управляючі) структури, які керують виконанням програми. Вони вибирають, яка частина коду в тілі програми буде виконуватися. Стрічка з операторами If та For повинна завершуватися двокрапкою. Якщо потрібно, щоб щось відбувалося, коли умовний вираз не справджується, використовується оператор else в If – твердженні.
Умовні вирази
Python підтримує широкий набір операторів для встановлення взаємозв’язків між змінними (значеннями).
Цілі, стрічки і списки є типами даних в Python. Кожне значення (змінна) має свій тип. Цей тип визначає, які операції ви можете виконувати зі змінною. Наприклад, ми можемо індексувати стрічки і списки, але не можемо індексувати цілі.
Ітерації і If твердження
Нехай маємо стрічку і необхідно написати програму, яка виведе на екран всі слова, які мають закінчення «ow». Програма буде складатися з наступних частин. Спочатку розділимо стрічку на список слів.
Організація даних
Стрічки і списки - простий метод організації даних. Звичайно, вони відображають відповідність між значеннями і цілими. Можна переглянути стрічку використовуючи індекси символів і отримати окремі символи. Також можна переглядати списки слів використовуючи цілі значення і отримуючи одну із стрічок .
Організація доступу між даними
Python підтримує такий тип даних, як словник, і він використовується для встановлення відповідності (відображення) між довільними типами даних. Визначимо pos як пустий словник і додамо до нього значення, які встановлюють частиномовну приналежність певних слів . Значення додаються із використанням квадратних дужок.
Отримання унікальних записів
Розглянемо приклад. Нехай необхідно створити словник на основі документу. Таким словником буде відсортований список слів, що зустрічаються без врахування їх повторюваності. У цьому випадку потрібно провести не обчислення, а запис даних, які аналізуються незалежно від їх повторюваності. Цього можна досягнути двома шляхами. Перший – використовуючи списки. Аналогічний результат можна отримати, використавши словники. Кожне слово, яке зустрічається, записуємо в словник, як ключ. Всі значення ставимо рівними 1 або інше. Третій шлях здійснити те саме, найкращий зі всіх: використовуючи тип даних властивий Python set()(набір). Можна конвертувати речення(тип даних список) в набір, використовуючи set(sentence) .
Визначення функції
При програмуванні часто необхідно частину програми виконати (використати) декілька разів. Наприклад, потрібно написати програму, яка здійснює утворення множини з однини іменників і вона буде виконуватись в різних місцях програми. Швидше ніж повторювати той самий код декілька разів і більш ефективно і надійно організувати цю роботу через функцію. Функція - це програмна конструкція, яку можна викликати з одним або більше вхідними параметрами, і отримувати результат на виході. Визначаємо функцію, використовуючи ключове слово def далі потрібно дати назву функції і визначити вхідні параметри, після двокрапки записується тіло функції. Ключове слово return використовується для відображення значення яке ми хочемо отримати на виході функції. Поглянемо приклад. Функція plural () отримує на вході однину іменника і формує множину на виході.
Групування
Повертаючись до проблеми з небажаними пробілами навколо слів з трьох букв, зазначимо, що у re.findall() поведінка інша , якщо створити групи в регулярному виразі, використовуючи круглі дужки, то функція повертає тільки стрічки, які відповідають виразам в цих дужках.
ХІД РОБОТИ
Спершу імпортуємо бібліотеку NLTK:
/
/
/
/
ВИКОНАННЯ ПРАКТИЧНИХ ЗАВДАНЬ
Варіант № 16
Завдання № 1,4,7,9,11,15
1. Створіть змінну sentence і присвойте їй значення ‘she sells sea shells by the sea shore’ та напишіть фрагмент програми для виведення на екран всіх слів які починаються з ‘sh’.
/
4. Напишіть програму, яка видаляє всі голосні зі стрічки, яка відповідає імені, по батькові та прізвищу студента. Програма повинна здійснювати наступну послідовність дій: створення початкової стрічки; створення стрічки, у якій буде зберігатися результат; for цикл для обробки стрічки символ за символом і запису неголосних символів в результуючу стрічку.
/
7. Виконати наступні приклади і пояснити чому отримані різні результати (різні значення змінних)
sorted(set([w.lower() for w in text1]))
sorted([w.lower() for w in set(text1)])
/
Результати різні тому, що у змінній а спочатку відбувається пошук малих букв, а тоді виконується команда set, яка видаляє ті ж самі елементи. У змінній b спочатку виконується команда set (text1), яка видаляє ті ж самі елементи (S і s – це два різні елементи), а тоді повертається до маленьких літер, тому і величина більша.
9. Знайдіть в тексті № 5 всі слова довжина яких дорівнює 4 і побудуйте для них частотний розподіл.
Спершу знаходимо всі слова довжина яких дорівнює 4:
/
Тепер будуємо частотний розподіл:
/
11. Напишіть вираз для знаходження в тексті №6 всіх слів які відповідають наступним вимогам: закінчуються на ize; містять літеру z; містять послідовність літер pt; написані з великої літери . Результат представити, як список слів.
/
15. Побудуйте колокації для текстів №1 та №4. Результати порівняйте.
/
У двох прикладах наведено словосполучення, які зустрічаються дуже часто у поданих текстах. Колокації тексту 1 свідчать, що основна сюжетна лінія ґрунтується на подіях, які пов’язані з полюванням на великого кита. Колокації тексту 4 – це словосполучення, які найчастіше вживають американські президенти під час інавгурації.
ВИСНОВОК
На цій лабораторній роботі я вивчила основи програмування мовою Python, ознайомилась з базовими функціями та класом FreqDist. А також навчилась використовувати оператори if та for.