Поиск по базе сайта:
Методичні вказівки до лабораторної роботи №3 з дисципліни «Комп’ютерна лінгвістика» для студентів спеціальності 02030303 «Прикладна лінгвістика» icon

Методичні вказівки до лабораторної роботи №3 з дисципліни «Комп’ютерна лінгвістика» для студентів спеціальності 02030303 «Прикладна лінгвістика»




Скачати 342.65 Kb.
НазваМетодичні вказівки до лабораторної роботи №3 з дисципліни «Комп’ютерна лінгвістика» для студентів спеціальності 02030303 «Прикладна лінгвістика»
Сторінка1/6
Дата конвертації06.01.2013
Розмір342.65 Kb.
ТипМетодичні вказівки
  1   2   3   4   5   6


МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»

іНСТИТУТ КОМП’ютерних НАУК та ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ


Кафедра систем автоматизованого проектування





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


ЗАСОБИ ДЛЯ РОБОТИ З КОРПУСАМИ ТЕКСТІВ.


Методичні вказівки до лабораторної роботи № 3

з дисципліни «Комп’ютерна лінгвістика»

для студентів спеціальності 7.02030303 «Прикладна лінгвістика»

денної та заочної форм навчання


Затверджено на засіданні кафедри

«Системи автоматизованого проектування»

Протокол № 16 від 17.05.2011 р.


Затверджено на засіданні методичної ради ІКНІ

Протокол № 9-10/11 від 18.05.2011 р.


Зареєстровано в НМУ НУ «ЛП»

№ 3520 від 2.06.2011


Львів-2011

^ ВИВЧЕННЯ БІБЛІОТЕКИ ПРИКЛАДНИХ ПРОГРАМ NLTK, ДЛЯ ОПРАЦЮВАННЯ ТЕКСТІВ ПРИРОДНОЮ МОВОЮ. ЗАСОБИ ДЛЯ РОБОТИ З КОРПУСАМИ ТЕКСТІВ. Методичні вказівки до лабораторної роботи № 3 з дисципліни «Комп’ютерна лінгвістика» для студентів спеціальності 7.02030303 денної та заочної форм навчання/Укл. А.Б.Романюк, І.Ю Юрчак. - Львів: Національний університет «Львівська політехніка», 2011. – 28 с.



Укладачі:

Романюк А. Б., канд. техн. наук, доцент

Юрчак І.Ю., канд. техн. наук, доцент



Відповідальна за випуск:

Юрчак І.Ю., канд. техн. наук, доцент



Рецензент:

Теслюк В.М., д.т.н., професор кафедри САПР
^

Мета робота


  • Вивчення основ програмування на мові Python.

  • Вивчення методів доступу до корпусів текстів.

  • Вивчення класу ConditionalFreqDist.
^

Виконання лабораторних робіт починаємо з:


import nltk

from nltk.book import *

Короткі теоретичні відомості


Вирішення задач обробки текстів природною мовою передбачає використання великих об’ємів лінгвістичних даних, або іншими словами передбачає роботу з корпусами текстів. Виконання даної лабораторної роботи допоможе знайти відповідь на наступні питання: які є відомі корпуси текстів та лексичні ресурси і як отримати до них доступ використовуючи Python; які корисні конструкції має Python для виконання цієї роботи.
^

1. Клас FreqDist для простих статистичних досліджень


>>> import nltk

>>> from nltk.book import *

*** Introductory Examples for the NLTK Book ***

Loading text1, ..., text9 and sent1, ..., sent9

Type the name of the text or sentence to view it.

Type: 'texts()' or 'sents()' to list the materials.

text1: Moby Dick by Herman Melville 1851

text2: Sense and Sensibility by Jane Austen 1811

text3: The Book of Genesis

text4: Inaugural Address Corpus

text5: Chat Corpus

text6: Monty Python and the Holy Grail

text7: Wall Street Journal

text8: Personals Corpus

text9: The Man Who Was Thursday by G . K . Chesterton 1908

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

Частотний розподіл вказує на частоту з якою в тексті зустрічається кожне зі слів. Такий частотний список називають розподілом тому, що він вказує яким чином загальна кількість слів розподіляється між словниковими статями (оригінальні слова) в тексті.

Враховуючи, що побудова частотних розподілів часто необхідна при обробці природної мови в NLTK реалізовано окремий клас FreqDist в модулі nltk.probability.

Застосуємо цей клас для знаходження 50 найчастотніших слів в тексті Moby Dick.

>>> fdist=FreqDist(text1) #назва тексту вказується як аргумент класу

>>> fdist #підрахунок загальної кількості слів



>>> vocab=fdist.keys()# встановлення списку оригінальних слів тексту і сортування їх за кількістю у тексті

>>> vocab[:50] #перегляд перших 50 найуживаніших слів

[',', 'the', '.', 'of', 'and', 'a', 'to', ';', 'in', 'that', "'", '-', 'his', 'it', 'I', 's', 'is', 'he', 'with', 'was', 'as', '"', 'all', 'for', 'this', '!', 'at', 'by', 'but', 'not', '--', 'him', 'from', 'be', 'on', 'so', 'whale', 'one', 'you', 'had', 'have', 'there', 'But', 'or', 'were', 'now', 'which', '?', 'me', 'like']

>>>

>>> fdist['the']

13721

>>> fdist['of']

6536

>>> fdist['with']

1659

>>> fdist['whale']

906

Серед цих 50 слів тільки одне дає певну інформацію про текст (whale) і це слово зустрічається в тексті 906 раз. Всі інші слова є не інформативними, або службовими.

Для визначення, яку частину тексту займають службові слова знайдемо їх сумарну частоту побудувавши графік (Рис.1.) за допомогою fdist.plot(50)


^
Рис.1. Частотний розподіл 50 слів тексту Moby Dick.

Якщо найбільш частотні слова не дають уяви про текст то спробуємо за допомогою fdist1.hapaxes() побудувати список слів які зустрічаються тільки один раз.

>>> word_1=fdist.hapaxes()

>>> len(word_1)

9002

>>> word_1[:50]

['funereal', 'unscientific', 'prefix', 'plaudits', 'woody', 'disobeying', 'Westers', 'DRYDEN', 'Untried', 'superficially', 'Western', 'Spurn', 'treasuries', 'invasion', 'powders', 'tinkerings', 'bolting', 'stabbed', 'elevations', 'ferreting', 'wooded', 'songster', 'Saco', 'clings', 'Winding', 'Sands', 'ornamental', 'charter', 'puissant', 'miller', 'cordially', 'railing', 'mail', 'Hecla', 'compliance', 'haughtily', 'relieving', 'BERMUDAS', 'contributed', 'shamble', 'fossil', 'sneering', 'artificialness', 'avers', 'intellects', 'Plate', 'gayer', 'Fiery', 'primogenitures', 'gaffs']

В даному тексті таких 9002 слова і серед них є такі слова як: exicographer, cetological, contraband, expostulations . Деякі слова без контексту тяжко зрозуміти і вони також не дають уяву про текст.
^

1.1.Вибір слів з тексту


Спробуємо знайти найдовші слова сподіваючись що вони є більш інформативними:

>>> V = set(text1)

>>> long_words = [w for w in V if len(w) > 15]

>>> sorted(long_words)

['CIRCUMNAVIGATION', 'Physiognomically', 'apprehensiveness', 'cannibalistically', 'characteristically', 'circumnavigating', 'circumnavigation', 'circumnavigations', 'comprehensiveness', 'hermaphroditical', 'indiscriminately', 'indispensableness',

'irresistibleness', 'physiognomically', 'preternaturalness', 'responsibilities', 'simultaneousness', 'subterraneousness', 'supernaturalness', 'superstitiousness', 'uncomfortableness', 'uncompromisedness', 'undiscriminating', 'uninterpenetratingly']

Для кожного слова зі списку V здійснюється перевірка чи його довжина є більша ніж 15 символів, всі інші слова ігноруються.

Крім підрахунку окремих слів цікаво також здійснити підрахунок довжин слів в тексті використовуючи FreqDist.

>>> [len(w) for w in text1] # будуємо список довжин слів в тексті

[1, 4, 4, 2, 6, 8, 4, 1, 9, 1, 1, 8, 2, 1, 4, 11, 5, 2, 1, 7, 6, 1, 3, 4, 5, 2, ...]

>>> fdist = FreqDist([len(w) for w in text1]) # підрахунок кількості вживань слів різної довжини

>>> fdist # розподіл в якому довжині слова відповідає кількість таких слів в тексті



>>> fdist.keys()

[3, 1, 4, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20]

Бачимо, що в тексті зустрічаються слова різної довжини від 1 до 20 символів. Частоту різних довжин слів можна переглянути:

>>> fdist.items()

[(3, 50223), (1, 47933), (4, 42345), (2, 38513), (5, 26597), (6, 17111), (7, 14399),

(8, 9966), (9, 6428), (10, 3528), (11, 1873), (12, 1053), (13, 567), (14, 177),

(15, 70), (16, 22), (17, 12), (18, 1), (20, 1)]

>>> fdist.max()

3

>>> fdist[3]

50223

>>> fdist.freq(3)

0.19255882431878046

Найчастіше зустрічаються слова з довжиною 3 символи і такі слова становлять близько 20% всього тексту. Можна здійснити аналіз довжин слів для текстів різних жанрів, авторів та мов.
^

Виконати самостійно:


Виконати попередній приклад для інших текстів змінюючи довжину слів. Результати порівняти і пояснити.

Повертаючись до задачі пошуку характерних для тексту слів зазначимо, що довгі слова в тексті№4 constitutionally, transcontinental вказують на його державницький характер а довгі слова тексту№5 boooooooooooglyyyyyy and yuuuuuuuuuuuummmmmmmmmmmm вказують на його неформальний характер. Але довгі слова часто зустрічаються в тексті тільки один раз і тому потрібно знайти ті довгі слова які зустрічаються в тексті з певною частотою. Одночасно ми уникаємо врахування коротких не інформативних слів а також уникаємо врахування довгих але рідкісних слів. В наступному прикладі показано, як з тексту №5 вибираються слова які мають довжину більше ніж 7 символів і зустрічаються в тесті більше ніж 7 разів.

>>> fdist5 = FreqDist(text5)

>>> sorted([w for w in set(text5) if len(w) > 7 and fdist5[w] > 7])

['#14-19teens', '#talkcity_adults', '((((((((((', '........', 'Question', 'actually', 'anything', 'computer', 'cute.-ass', 'everyone', 'football', 'innocent', 'listening', 'remember', 'seriously', 'something', 'together', 'tomorrow', 'watching']
^

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

Колокації є характерними для текстів різних тематик та жанрів.
  1   2   3   4   5   6



Схожі:




База даних захищена авторським правом ©lib.exdat.com
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації