Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2011-kl-lab4.doc
Скачиваний:
7
Добавлен:
12.11.2019
Размер:
1.54 Mб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

№ 3520 від 2.06.2011

Львів-2011

ВИВЧЕННЯ БІБЛІОТЕКИ ПРИКЛАДНИХ ПРОГРАМ NLTK, ДЛЯ ОПРАЦЮВАННЯ ТЕКСТІВ ПРИРОДНОЮ МОВОЮ. ЗАСОБИ ДЛЯ РОБОТИ З КОРПУСАМИ ТЕКСТІВ. Методичні вказівки до лабораторної роботи № 4 з дисципліни «Комп’ютерна лінгвістика» для студентів спеціальності 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 #підрахунок загальної кількості слів

<FreqDist with 260819 outcomes>

>>> 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 . Деякі слова без контексту тяжко зрозуміти і вони також не дають уяву про текст.

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