МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра «Системи автоматизованого проектування»
Звіт до лабораторної роботи №8
«Вивчення бібліотеки прикладних програм NLTK, для опрацювання текстів природною мовою. Структурне програмування мовою Python (частина 2)»
з курсу «Комп’ютерна лінгвістика»
послідовності, яка є її другим параметром і зберігає тільки ті елементи для яких функція is_content_word() повертає значення True.
Інша функція вищого порядку map(), також застосовує функцію до кожного з елементів послідовності. Наступний приклад ілюструє застосування цієї функції для одержання аналогічних з функцією extract_property()(пункт 1.1) результатів. В прикладі показано простий спосіб знаходження середньої довжини речень в корпусі Brown Corpus, та еквівалентний варіант цих обчислень за допомогою list comprehension.
В Python розроблені спеціальні бібліотеки для візуалізації лінгвістичних даних. Пакет Matplotlib містить складні функції для побудови графічних зображень в стилі MATLAB. Бібліотека доступна за адресою http://matplotlib.sourceforge.net/.
Пакет NetworkX створений для роботи з графами. При необхідності його потрібно додатково встановлювати. Інсталяційні файли знаходяться на сторінці https://networkx.lanl.gov/. NetworkX може бути використаний разом з бібліотекою Matplotlib для візуалізації таких мереж, як WordNet (семантична мережа).
При аналізі лінгвістичних даних зручно представляти ці дані у вигляді таблиць. CSV — файловий формат, котрий є форматом відмежовування для представлення табличних даних, у якому поля відокремлюються символом коми та переходу на новий рядок.
Тексти програм
Варіант №3
3. Створити список списків слів [ [‘’,’’,’’… ], [[‘’,’’,’’… ], [[‘’,’’,’’…],…] (наприклад текст складається з речень, які складаються з стрічок). Здійснити операцію присвоювання text2 = text1[:], та здійснити операцію присвоювання нового значення одному зі слів (text1[1][1] = 'Monty'). Перевірити як ці операції вплинули на text2. Результат письмово пояснити.
Змінна text2 не змінилась, бо рядок text2= text1[:] означає копіювання вмісту змінної.
6. Написати програму для створення двовимірного масиву word_vowels елементами якого є набори. Програма повинна обробити список слів і додати результати обробки до word_vowels[l][v] де l – довжина слова, v – кількість голосних у слові.
11. Гематрія – метод виявлення прихованого змісту слів на основі порівняння чисел, які відповідають словам. Слова з однаковими числами мають однаковий зміст. Число слова визначається сумуванням чисел, як відповідають його літерам. Написати функцію decode() для обробки тексту, яка випадковим чином замінює слова на їх Гематрія-еквіваленти. Чи вдалося виявити "прихований зміст" тексту? (Використовувати letter_vals з попередньої задачі).
14. Написати функцію, яка обробляє список слів (з дублюванням слів) і повертає список слів (без дублювання) відсортований в порядку спадання їх частоти.
15. Написати функцію, яка приймає текст і словник , як аргументи і повертає набір слів, які є у тексті але відсутні у словнику. Аргументи повинні бути представлені, як списки стрічок. Чи може функція мати один рядок при використанні set.difference()?
17. В NLTK реалізовано алгоритм Левенштайна для порівняння стрічок. Спробуйте скористатись цим модулем nltk.edit_dist(). Яким чином в цьому модулі використовується динамічне програмування? Який підхід використовується знизу-вверх чи зверху-вниз? Пояснити письмово.
Відстань Левенштайна обраховує відстань між двома стрічками, використовуючи підхід знизу-вверх.
Висновок
На цій лабораторній роботі я повторив і закріпив знання, отримані при виконанні попередніх лабораторних робіт, а саме, написання функцій, та покращив загальні навички програмування. Я ознайомився з явищем гематрії, та навчився обраховувати відстань Левенштайна у мові програмування Python.