МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра САПР
ЗВІТ
до лабораторної роботи № 4
на тему:
ВИВЧЕННЯ БІБЛІОТЕКИ ПРИКЛАДНИХ ПРОГРАМ NLTK, ДЛЯ ОПРАЦЮВАННЯ ТЕКСТІВ ПРИРОДНОЮ МОВОЮ.ДОСТУП ТА РОБОТА З ЛЕКСИЧНИМИ РЕСУРСАМИ.
з дисципліни “Комп’ютерна лінгвістика”
Мета роботи
Вивчити основи програмування на мові Python, вивчити методи доступу та роботи з лексичним ресурсами та ознайомитись із семантичним словником англійської мови WordNet.
Теоретичні відомості
При програмуванні часто необхідно частину програми виконати (використати) декілька разів. Наприклад, потрібно написати програму, яка здійснює утворення множини з однини іменників і вона буде виконуватись в різних місцях програми. Швидше ніж повторювати той самий код декілька разів і більш ефективно і надійно організувати цю роботу через функцію. Функція - це програмна конструкція, яку можна викликати з одним або більше вхідними параметрами, і отримувати результат на виході. Визначаємо функцію, використовуючи ключове слово def далі потрібно дати назву функції і визначити вхідні параметри, після двокрапки записується тіло функції. Ключове слово return використовується для відображення значення, яке ми хочемо отримати на виході функції.
Розробляючи ту чи іншу програму протягом довшого періоду додаючи до неї нові функції і змінюючи існуючі або розробляючи декілька версій однієї програми потрібно зберігати тексти програм в окремих файлах і організовувати доступ до відповідних функцій в цих програмах.
Множина змінних і функцій збережених у файлі називаються в Python – модулем. Множина пов’язаних між собою модулів називають – пакетом. Програма обробки корпуса Brown це є приклад модуля, а множина програм для роботи зі всіма корпусами це є приклад пакету. NLTK це множина пакетів, яку називають бібліотекою.
Лексичний ресурс або просто словник це набір слів тa/або словосполучень, які асоціюються з такою інформацією, як частина мови та опис значення. Лексичні ресурси є вторинними по відношенню до текстів і зазвичай створюються і вдосконалюються з використанням текстів. Наприклад, якщо визначити текст my_text тоді vocab = sorted(set(my_text)) побудує словник тексту my_text, word_freq = FreqDist(my_text) визначить частоту кожного слова в тексті. vocab та word_freq – приклад простих лексичних ресурсів. Так само конкорданс дає інформацію про використання слів і ця інформація може бути використана при побудові словників. Словникова стаття містить основне слово (лему), та відповідну інформацію (частина мови, значення слова).
Найпростіший словник це відсортований список слів. Досконаліші словники містять складну структуру записів та зв’язків між ними.
NLTK розповсюджується з деякими корпусами, які насправді є списками слів. Корпус words це файл з Unix, який використовується для перевірки правопису.Більш багатим лінгвістичним ресурсом може бути словник де кожному слову поставлена у відповідність певна інформація. NLTK включає CMU Pronouncing Dictionary американського варіанту англійської , який розроблений для використання в синтезаторах мови. Інший словник в NLTK це порівняльний словник (Swadesh wordlists), який містить 200 спільних слів для 24 мов. Мови ідентифікуються за двосимвольними кодами (ISO 639).
WordNet, це семантично орієнтований словник англійської мови, подібний до традиційних тезаурусів але з більш багатою структурою. У WordNet слова групуються у набори синонімів – синсети, кожен із своїм визначенням і зв’язками з іншими синсетами. WordNet 3.0 розповсюджується разом з NLTK і містить 155287 слів та 117659 синсетів. Хоча WordNet розроблявся для психолінгвістики - цей словник широко використовується в NLP та в задачах інформаційного пошуку.
ТЕКСТИ ПРОГРАМ НА МОВІ PYTHON
ВАРІАНТ №2
2. Використовуючи компаративний словник знайти для німецької,
італійської та англійської мов близькі слова. Чи можуть отримані результати
використовуватися для здійснення перекладу?
Рис. 1. Текст програми №2.
Так, отримані результати можна використовувати як трьохмовний німецько-італійсько-англійський словник.
5. Який відсоток синсетів іменників не мають гіпонімів? До всіх синсетів можна доступитися за допомогою wn.all_synsets('n').
Рис. 2. Текст програми №5.
6. Визначити функцію supergloss(s) , яка буде приймати синсет s як
аргумент і повертати стрічку в якій будуть поєднані всі описи всіх значень
синсету s та описи всіх гіпернімів та гіпонімів s.
Рис. 3. Текст програми №6.
8. Модифікувати програму генерації випадкового тексту для виконання
наступного: тренувати програму на текстах різних жанрів та різних корпусів.
Генерацію тексту провести з 5-ма різними початковими словами. Результати
проаналізувати та порівняти.
Рис. 4. Текст програми №8.
11. Полісемія - це явище коли одне слово має декілька значень ( іменник dog
має 7 значень, кількість яких визначити можна як len(wn.synsets('dog',
'n'))). Знайдіть середнє значення полісемії для прикметників.
Рис. 5. Текст програми №11.
15. Використовуючи один із методів визначення подібності слів побудуйте побудований по спаданню список значень подібності для наступних пар слів: bird-crane, tool-implement, brother-monk, crane-implement, journey-car, monk-oracle, cemetery-woodland.
Рис. 6. Текст програми №15.
ВИСНОВОК
На сьогоднішній лабораторній роботі я навчилася працювати із словником WordNet та компаративними словниками, а також словниками вимови, детальніше ознайомилась із побудовою функції.