Міністерство освіти та науки України
Національний університет “Львівська політехніка”
інститут комп’ютерних наук та інформаційних технологій
Кафедра “Системи автоматизованого проектування”
Звіт
до лабораторної роботи № 2
з курсу «Комп’ютерна лінгвістика»
на тему:
«Вивчення бібліотеки прикладних програм NTLK, для опрацювання текстів природною мовою. Основи програмування на мові Python(частина 2)»
Мета роботи: Вивчення основ програмування на мові Python. Ознайомлення з контрольними структурами та класом FreqDist.
Короткі теоретичні відомості
Програми, які згадувалися в лабораторній роботі №1, доволі прості, але дозволяють здійснювати операції над послідовностями слів і зокрема над кожним із них. Ми працювали зі списками, які містять декілька слів , але є потреба працювати з такими списками, які містять тисячі слів . Більшість мов програмування дозволяють виконання окремих блоків програми, коли використовуються умовні вирази або if твердження. If твердження, так як і For твердження - це керуючі (управляючі) структури, які керують виконанням програми. Вони вибирають, яка частина коду в тілі програми буде виконуватися. Стрічка з операторами If та For повинна завершуватися двокрапкою. Якщо потрібно, щоб щось відбувалося, коли умовний вираз не справджується, використовується оператор else в If – твердженні.
Python підтримує такий тип даних, як словник, і він використовується для встановлення відповідності (відображення) між довільними типами даних. Визначимо pos як пустий словник і додамо до нього значення, які встановлюють частиномовну приналежність певних слів . Значення додаються із використанням квадратних дужок.
Для автоматичного визначення слів, які є найбільш інформативними для текстів певного жанру або певної тематики спочатку інтуітивно виникає думка побудувати частотний список або частотний розподіл. Частотний розподіл вказує на частоту з якою в тексті зустрічається кожне зі слів. Такий частотний список називають розподілом тому, що він вказує яким чином загальна кількість слів розподіляється між словниковими статями (оригінальні слова) в тексті. Враховуючи що побудова частотних розподілів часто необхідна при обробці природної мови в NLTK реалізовано окремий клас FreqDist в модулі nltk.probability .
Колокація - це словосполучення яке зустрічається дуже часто. Для того щоб побудувати колокації спочатку потрібно побудувати на основі тексту пари слів, або біграми.
Виконання практичних завдань
Варіант 2
[2] Створіть змінну sentence і присвойте їй значення ‘she sells sea shells by the sea shore’ та напишіть фрагмент програми для виведення на екран всіх сліва, довжина яких більша ніж 4 символи.
[6] Перегляньте результати виконання умовних виразів: ’row’ in ’brown’ та ’row’ in [’ brown’, ’cow’]. Напишіть програму для перевірки наявності в стрічці sent=’ ’colorless green ideas sleep furiously’ окремих слів та підстрічок.
[7] Виконати настіпні приклади і пояснити чому отримані різні результати (різні значення змінних)
sorted(set([w.lower() for w in text1]))
sorted([w.lower() for w in set(text1)])
Результати різні тому, що у змінній а спочатку відбувається пошук малих букв, а тоді виконується команда set, яка видаляє ті ж самі елементи. У змінній b спочатку виконується команда set (text1), яка видаляє ті ж самі елементи (S і s – це два різні елементи), а тоді повертається до маленьких літер, тому і величина більша.
[12] Використайте вираз sum([len(w) for w in text1]) для знаходження середньої довжини слів в тексті.
[13] Перевірте виконання виразу set(sent3) < set(text1). Змініть аргументи функції. Результати поясніть.
У першому варіанті True тому, що набір унікальних елементів у реченні 3 менший ніж у всьому тексті 1. У другому варіанті все навпаки.
[15] Побудуйте колокації для текстів №1 та №4. Результати порівняйте.
У двох прикладах наведено словосполучення,які зстрічаються дуже часто у поданих текстах. Колокації тексту 1 свідчать, що основна сюжетна лінія грунтується на подіях, які повязані з полюванням на великого кита. Колокації тексту 4 – це словосполучення, які найчастіше вживають американські президенти під час інавгурації.
Самостійно:
За алфавітом посортовано слова в тексті 7, які складаються зі знаку ‘-‘ та слова ‘index’.
Посортовано слова у тексті 3, які починаються з великої букви і складаються з більш ніж 10 символів.
Посортовано слова у тексті 7, які не починаються з маленьких літер.
Посортовано слова у тексті 2, які містять елементи ‘cie’ чи ‘cei’.
Знайдено найдовші слова у текстах 5 та 7. У тексті 4 немає слів довших за 20 символів.
Висновок
На лабораторній роботі ознайомилась циклами for та if , з функціями, якіпревіряють властивості окремих слів, з класом FreqDist для простих статистичних досліджень, частотним розподілом, з записом [f(w)for…] or [w.f() for…], який називвється “list comprehension” і є зручним у використанні. Навчилась будувати графічний частотний розподіл і графічний частотний розподіл з накопиченням, а також створювати біграми та колокації для текстів.