
- •Мета робота
- •Виконання лабораторних робіт починаємо з:
- •Короткі теоретичні відомості
- •1. Клас FreqDist для простих статистичних досліджень
- •1.1.Вибір слів з тексту
- •Виконати самостійно:
- •1.2. Колокації та біграми
- •2. Доступ до корпусів текстів
- •2.1. Корпус Гутенберга
- •2.1.1. Конкорданс
- •2.1.2. Статистичні дані про текст
- •2.2. Текст з Інтернету
- •2.3. Корпус Brown
- •Приклади текстів для кожного з жанрів корпуса Brown.
- •Виконати самостійно!
- •2.4. Корпус інформаційного агентства Рейтер.
- •2.5. Корпус інаугураційних примов президентів сша.
- •2.6. Анотовані (розмічені) корпуси текстів.
- •2.7. Корпуси іншомовних текстів.
- •3. Структура корпусів текстів.
- •3.1. Засоби nltk
- •Основні функції nltk для роботи з корпусами.
- •3.2. Доступ до власних корпусів текстів.
- •4. Умовний частотний розподіл. Клас ConditionalFreqDist.
- •4.1 Умови і події.
- •4.2 Підрахунок слів для окремих жанрів.
- •Функції побудови та відображення умовних частотних розподілів.
- •Додаток в Перелік корпусів тексті, які розповсюджуються разом з nltk.
- •Порядок виконання роботи
- •Варіанти завдань
- •Література
- •Інтернет посилання
- •Методичні вказівки
1.2. Колокації та біграми
Колокація (collocation) позначає стійку фразеологічну одиницю, тобто це словосполучення, яке зустрічається набагато частіше, ніж його складові по окремості. Наприклад, red wine –це колокація а the wine – ні . Характерною рисою колокацій є те що вони є стійкі до заміни одного зі слів на інше подібне за змістом (maroon wine).
Для того щоб побудувати колокації спочатку потрібно побудувати на основі тексту пари слів, або біграми. Для цього можна використати функцію bigrams():
>>> bigrams(['more', 'is', 'said', 'than', 'done'])
[('more', 'is'), ('is', 'said'), ('said', 'than'), ('than', 'done')]
Оскільки колокації - це частотні біграми з врахуванням випадків рідкісних слів, то нам потрібно знайти такі біграми, частота яких є вищою ніж частоти слів, з яких він складається. Функція collocations() реалізує такі дії.
>>> text4.collocations()
Building collocations list
United States; fellow citizens; years ago; Federal Government; General
Government; American people; Vice President; Almighty God; Fellow
citizens; Chief Magistrate; Chief Justice; God bless; Indian tribes;
public debt; foreign nations; political parties; State governments;
National Government; United Nations; public money
>>> text8.collocations()
Building collocations list
medium build; social drinker; quiet nights; long term; age open;
financially secure; fun times; similar interests; Age open; poss
rship; single mum; permanent relationship; slim build; seeks lady;
Late 30s; Photo pls; Vibrant personality; European background; ASIAN
LADY; country drives
Колокації є характерними для текстів різних тематик та жанрів.
2. Доступ до корпусів текстів
Корпус текстів це великий набір текстів. Багато корпусів розроблені їз збереженням балансу між текстами різних жанрів, або авторів. В попередній лабораторній роботі ми працювали з промовами президентів США, які є частиною корпуса US Presidential Inaugural Addresses. З промовами ми працювали, як з одним текстом не зважаючи на те, що кожна промова має окремого автора. Обробку ми здійснювали . При роботі з корпусами важливо мати засоби доступу як до окремих тексті так і до окремих частин цих тексів а також і до окремих слів.
Для того щоб доступитися до корпусів перед початком роботи слід їх імпортувати
>>> import nltk
>>> from nltk.corpus import *
2.1. Корпус Гутенберга
В NLTK входить невелика частина текстів з електронного архіву текстів Project Gutenberg , який містить 25000 безкоштовних електронних книжок різних авторів (http://www.gutenberg.org/). Тексти творів в окремих файлах. Для одержання назв файлів (ідентифікаторів файлів) в яких зберігаються текстів потрібно використати наступну функцію:
fileids() – назви файлів у корпусі
>>> gutenberg.fileids()
['austen-emma.txt', 'austen-persuasion.txt', 'austen-sense.txt', 'bible-kjv.txt', 'blake-poems.txt', 'bryant-stories.txt', 'burgess-busterbrown.txt', 'carroll-alice.txt', 'chesterton-ball.txt', 'chesterton-brown.txt', 'chesterton-thursday.txt', 'edgeworth-parents.txt', 'melville-moby_dick.txt', 'milton-paradise.txt', 'shakespeare-caesar.txt', 'shakespeare-hamlet.txt', 'shakespeare-macbeth.txt', 'whitman-leaves.txt']
Для роботи з першим текстом цього корпусу (роман Емма, автор Джейн Остін) створюємо змінну emma і можемо знайти скільки слів має цей текст.
>>> emma = nltk.corpus.gutenberg.words('austen-emma.txt')
>>> len(emma)
192427
При створенні змінної emma було використано функцію words() об’єкта gutenberg пакета corpus бібліотеки NLTK. Аналогічний результат можна досягнути використавши більш компактний запис конструкцій Python.
>>> from nltk.corpus import gutenberg
>>> gutenberg.fileids()
['austen-emma.txt', 'austen-persuasion.txt', 'austen-sense.txt', ...]
>>> emma = gutenberg.words('austen-emma.txt')