ВИВЧЕННЯ БІБЛІОТЕКИ ПРИКЛАДНИХ ПРОГРАМ NLTK, ДЛЯ ОПРАЦЮВАННЯ ТЕКСТІВ ПРИРОДНОЮ МОВОЮ.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра САПР

Інформація про роботу

Рік:
2015
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Комп’ютерна лінгвістика
Група:
ПРЛм

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра САПР ЗВІТ до лабораторної роботи № 6 на тему: ВИВЧЕННЯ БІБЛІОТЕКИ ПРИКЛАДНИХ ПРОГРАМ NLTK, ДЛЯ ОПРАЦЮВАННЯ ТЕКСТІВ ПРИРОДНОЮ МОВОЮ. ВИКОРИСТАННЯ РЕГУЛЯРНИХ ВИРАЗІВ ДЛЯ ОБРОБКИ ТЕКСТУ. з дисципліни “Комп’ютерна лінгвістика” Мета роботи: Вивчення основ програмування на мові Python. Використання регулярних виразів для обробки текстів. Теоретичні відомості Синтаксис регулярних висловів залежить від інтерпретатора, що використовується для їх обробки. Пошук слів із закінченням ed можна здійснити використовуючи регулярний вираз «ed$». Потрібно використати функцію re.search(p, s), яка перевіряє чи може зразок p бути знайдений у будь-якому місці стрічки s. Потрібно визначити символи, які шукаємо та використати символ долара , який в регулярних виразах позначає кінець слова: Символ ”.” універсальний символ , якому відповідає будь-який один символ. Нехай потрібно знайти слова з восьми літер, де j – третя літера та t – шоста літера. При створенні регулярного виразу у місцях де може бути будь-який символ вказується крапка. Символ ”^” вказує на початок стрічки: Символ “ ? “ вказує на те що попередній символ не є обовязковим. Вираз «^e-?mail$» відповідає двом стрічкам email та e-mail. Можна знайти загальну кількість таких стрічок (врахувавши різні способи їх запису) у будь-якому тексті скориставшись sum(1 for w in text if re.search('^e-?mail$', w)). Вираз re.search(regexp, w) дозволяє знаходити слова w , які відповідають регулярному виразу regexp . Регулярні вирази також можна використовувати для виявлення фрагментів слів, або для модифікації слів різними способами. Метод re.findall() ("знайти всеl") дозволяє знайти всі відповідності даному регулярному виразу. В наступному прикладі показано знаходження та підрахунок всіх голосних: Тут, re.findall() знаходить тільки суфікс, хоча регулярний вираз відповідає всьому слову. Це сталося тому, що круглі дужки задають не тільки область дії оператора диз’юнкції але і виконують функцію вибору підстрічки яку потрібно вилучити. Коли потрібно в регулярному виразі використовувати круглі дужки для вказання області дії оператор,а але не потрібно здійснювати вилучення в регулярний вираз потрібно додати ?: , . Спеціальний тип регулярних виразів може використовуватися для пошуку серед слів у тексті (текст – послідовність окремих слів). Наприклад, за допомогою виразу "<a> <man>" можна знайти всі випадки вживання a man в тексті. Кутові дужки використовуються для позначення меж і всі пробіли мід цими дужками ігноруються (індивідуальна особливість NLTK's findall() методу для тексту). В наступному прикладі включено <.*> #1 для виявлення всіх окремих слів, а круглі дужки дозволять вибрати ці слова окремо від словосполучень ( a monied man). ТЕКСТИ ПРОГРАМ НА МОВІ PYTHON ВАРІАНТ №2 1. Описати, які класи стрічок відповідають наступному регулярному виразу. [a-zA-Z]+. Результати перевірити використовуючи nltk.re_show( ). >>> from __future__ import division >>> import nltk, re, pprint >>> f = open ('d://text.txt') >>> raw = f.read () >>> nltk.re_show ('[a-zA-Z]+', raw) {So}, {at} {the} {start} {of} 2012, {I} {set} {myself} {the} {challenge} {of} {trying} {to} {read} {a} {book} {from} {every} {country} ({well}, {all} 195 {UN}-{recognised} {states} {plus} {former} {UN} {member} {Taiwan}) {in} {a} {year} {to} {find} {out} {what} {I} {was} {missing}. Виділяє всі слова, які складаються з літер, але не виділяє цифри і розділові знаки. 2. Описати, які класи стрічок відповідають наступному регулярному виразу. [A-Z][a-z]*. Результати перевірити використовуючи nltk.re_show() >>> from __future__ import division >>> import nltk, re, pprint >>> f = open ('d://text.txt') >>> raw = f.read () >>> nltk.re_show ('[A-Z][a-z]*', raw) {So}, at the start of 2012, {I} set myself the challenge of trying to read a book from every country (well, all 195 {U}{N}-recognised states plus former {U}{N} member {Taiwan}) in a year to find out what {I} was missing. Виділяє лише слова, які починаються з великої літери. 3. Описати, які класи стрічок відповідають наступному регулярному виразу. \d+(\.\d+)?. Результати перевірити використовуючи nltk.re_show() >>> from __future__ import division >>> import nltk, re, pprint >>> f = open ('d://text.txt') >>> raw = f.read () >>> nltk.re_show ('\d+(\.\d+)?', raw) So, at the start of {2012}, I set myself the challenge of trying to read a book from every country (well, all {195} UN-recognised states plus former UN member Taiwan) in a year to find out what I was missing. Виділяє послідовність цифр. 4. Описати, які класи стрічок відповідають наступному регулярному виразу. ([^aeiou][aeiou][^aeiou])*. Результати перевірити використовуючи nltk.re_show() >>> from __future__ import division >>> import nltk, re, pprint >>> f = open ('d://text.txt') >>> raw = f.read () >>> nltk.re_show ('([^aeiou][aeiou][^aeiou])*', raw) {So, at} {}t{he }s{tar}t{ of} {}2{}0{}1{}2{},{} {}I{} {set} {}m{}y{sel}f{} {}t{he }c{hallenge }o{}f{} {}t{}r{yin}g{} {to }r{}e{}a{}d{ a }b{}o{}o{}k{} {}f{rom ev}e{}r{}y{} {}c{}o{}u{}n{}t{}r{}y{} {}({wel}l{},{ al}l{} {}1{}9{}5{} {}U{}N{}-{rec}o{}g{nis}e{}d{} {}s{tat}e{}s{} {}p{lus} {former} {}U{}N{} {member} {}T{}a{}i{wan}){ in a }y{}e{}a{}r{} {to fin}d{} {}o{}u{}t{} {}w{hat} {}I{} {was} {missin}g{}.{} Виділяється послідовності символів, що складаються з трьох символів, перший і третій з яких не є голосною, а другий – будь-яка голосна з [aeiou] і зустрічаються 0 і більше разів. 5. Описати, які класи стрічок відповідають наступному регулярному виразу. \w+|[^\w\s]+.. Результати перевірити використовуючи nltk.re_show() >>> from __future__ import division >>> import nltk, re, pprint >>> f = open ('d://text.txt') >>> raw = f.read () >>> nltk.re_show ('\w+|[^\w\s]+.', raw) {With} {no} {idea} {how} {to} {go} {about} {this} {beyond} {a} {sneaking} {suspicion} {that} {I} {was} {unlikely} {to} {find} {publications} {from} {nearly} {200} {nations} {on} {the} {shelves} {of} {my} {local} {bookshop}{, }{I} {decided} {to} {ask} {the} {planet}{’s} {readers} {for} {help}{. }{I} {created} {a} {blog} {called} {A} {Year} {of} {Reading} {the} {World} {and} {put} {out} {an} {appeal} {for} {suggestions} {of} {titles} {that} {I} {could} {read} {in} {English}. Виділяє всі слова, цифри та символи. 6. Описати, які класи стрічок відповідають наступному регулярному виразу. p[aeiou]{,2}t Результати перевірити використовуючи nltk.re_show() >>> from __future__ import division >>> import nltk, re, pprint >>> f = open ('d://text1.txt') >>> raw = f.read () >>> nltk.re_show ('p[aeiou]{,2}t', raw) Writer Ann Morgan set herself a challenge – to read a book from every country in the world in one year. She describes the experience and what she learned. {pot} Виділяємо стрічку, які складаються з літери “p”, від 0 до 2 голосних і літери “t”. 7. Написати регулярний вираз, який встановлює відповідність наступному класу стрічок: всі артиклі (a, an, the).  Рис. 1. Текст програми №7. 10. Зберегти довільний текст у файлі corpus.txt. Визначити функцію для читання з цього файлу (назва файлу аргумент функції) і повертає стрічку, яка містить текст з файлу. Використовуючи nltk.regexp_tokenize() розробити токенізатор для токенізації різних типів виразів: грошові одиниці, дати, імена людей та організацій. Використовувати багаторядковий запис регулярного виразу з коментарями та «verbose flag».  Рис. 7. Текст програми №10. 13. Напишіть програму, яка конвертує текст в Pig Latin. String->ingstray, idle->idleay. (Конвертація відбувається переміщенням приголосної або групи приголосних на початок слова та додаванням до слова ay ).  Рис. 3. Текст програми №13. 15. Прочитати Додаток А. Дослідити явища описані у Додатку А використовуючи корпуси текстів та метод findall()для пошуку в токенізованому тексті.  Рис. 4. Текст програми №15. ВИСНОВОК Під час виконання даної лабораторної роботи були вивчені основи програмування мови Python, а саме використання регулярних виразів для обробки текстів.
Антиботан аватар за замовчуванням

08.12.2016 17:12-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!