Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2011-kl-lab7.doc
Скачиваний:
9
Добавлен:
12.11.2019
Размер:
871.42 Кб
Скачать
    1. Пошук у токенізованому тексті

Спеціальний тип регулярних виразів може використовуватися для пошуку серед слів у тексті (текст – послідовність окремих слів). Наприклад, за допомогою виразу "<a> <man>" можна знайти всі випадки вживання a man в тексті. Кутові дужки використовуються для позначення меж і всі пробіли мід цими дужками ігноруються (індивідуальна особливість NLTK's findall() методу для тексту). В наступному прикладі включено <.*> #1 для виявлення всіх окремих слів, а круглі дужки дозволять вибрати ці слова окремо від словосполучень ( a monied man). Інший приклад дозволяє знайти всі словосполучення з трьох слів де останнє слово bro #2. Останній приклад це знаходження послідовностей з трьох і більше слів , які починаються з літери l #3.

 

>>> from nltk.corpus import gutenberg, nps_chat

>>> moby = nltk.Text(gutenberg.words('melville-moby_dick.txt'))

>>> moby.findall(r"<a> (<.*>) <man>") #1

monied; nervous; dangerous; white; white; white; pious; queer; good;

mature; white; Cape; great; wise; wise; butterless; white; fiendish;

pale; furious; better; certain; complete; dismasted; younger; brave;

brave; brave; brave

>>> chat = nltk.Text(nps_chat.words())

>>> chat.findall(r"<.*> <.*> <bro>") #2

you rule bro; telling you bro; u twizted bro

>>> chat.findall(r"<l.*>{3,}") #3

lol lol lol; lmao lol lol; lol lol lol; la la la la la; la la la; la

la la; lovely lol lol love; lol lol lol.; la la la; la la la

Виконати самостійно. Для поглиблення розуміння особливостей роботи з регулярними виразами використайте функцію nltk.re_show(p, s), яка у стрічці s позначає всі частини, які відповідають шаблону p. Для дослідження регулярних виразів зручно використати програму nemo_app.py(C:\Python26\Lib\site-packages\nltk\app)

Побудова пошукових шаблонів для вивчення лінгвістичних явищ, які пов’язані зі словами не є складною. Чи можна будувати складніші шаблони на основі регулярних виразів? Наприклад, для знаходження в корпусі текстів слово зворотів таких, як x and other ys , які дозволяють дослідити гіперніми, можна розробити наступну програму

 

>>> from nltk.corpus import brown

>>> hobbies_learned = nltk.Text(brown.words(categories=['hobbies', 'learned']))

>>> hobbies_learned.findall(r"<\w*> <and> <other> <\w*s>")

speed and other activities; water and other liquids; tomb and other

landmarks; Statues and other monuments; pearls and other jewels;

charts and other items; roads and other features; figures and other

objects; military and other areas; demands and other factors;

abstracts and other compilations; iron and other metals

При достатніх об’ємах лінгвістичних даних дана програма дозволяє зібрати інформацію про таксономію об’єктів без додаткової ручної праці. Звичайно результати роботи програми містять і хибні результати, якими потрібно нехтувати. Наприклад, результат: demands and other factors вказує на те що demand це тип factor, але в цьому реченні йдеться про збільшення заробітної плати (wage demands).

Виконати самостійно. Використовуючи шаблон as x as y дослідити інформацію про об’єкти та їх властивості.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]