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

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




Скачати 220.32 Kb.
НазваМетодичні вказівки до лабораторної роботи №1 з дисципліни "Комп’ютерна лінгвістика" для магістрів за фахом 02030303 «Прикладна лінгвістика»
Дата конвертації06.01.2013
Розмір220.32 Kb.
ТипМетодичні вказівки


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

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

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


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





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

ОСНОВИ ПРОГРАМУВАННЯ НА МОВІ PYTHON(частина 1).


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

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

для магістрів за фахом 8. 02030303 «Прикладна лінгвістика»
денної та заочної форм навчання


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

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

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


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

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


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

№ 3506 від 2.06.2011


Львів-2011

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



Укладачі:

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

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



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

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



Рецензент:

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


^ МЕТА РОБОТА


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


КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ


Python - це проста і потужна об’єктно-орієнтована мова програмування високого рівня з чудовими можливостями для обробки лінгвістичних даних.

^ Natural Language Toolk (NLTK) – набір Python бібліотек, які призначені для аналізу текстів природною мовою. NLTK дозволяє здійснювати символьний та статистичний аналіз текстів, створювати графічні звіти та містить детальну документацію і використовується в проектах з лінгвістики, штучного інтелекту, машинного навчання, автоматизації документообігу. Його можна застосовувати як начальний комплекс, готовий аналітичний інструмент або платформу для створення прикладних систем опрацювання текстів. NLTK вільно розповсюджується (http://www.nltk.org) і всі бажаючі можуть його встановити згідно інструкції розробників.

Python – інтерпретаційна мова, яка дозволяє зекономити час, що витрачається на компіляцію. Інтерпретатор можна використовувати інтерактивно, що дозволяє експериментувати з можливостями мови і створювати фрагменти програм або тестувати окремі функції. Інтерпретатор – це програма яка виконує Python програми.



При запуску інтерпретатора ми бачимо інформацію про його версію, додаткову інформацію і запрошення >>> вводити оператори Python. У випадку використання Interactive DeveLopment Environment (IDLE) нам доступні додаткові зручності, зокрема у відображенні тексту програми на екрані.


1.1 Використання інтерпретатора Python, як калькулятора.

Спробуємо використати Python, як калькулятор.



Після того як ми натискаємо Enter виконуються дії, інтерпретатор видає результат і че­кає вводу наступного оператора. Операція множення виконана вірно з додержанням пріоритету виконання арифметичних дій. Можемо спробувати виконати інші операції множення і ділення.

В другому випадку отримали нуль бо ділення в цьому випадку цілочисленне. Матема­тичні операції будуть використовуватись при роботі з лінгвістичними даними в Python. Якщо ввести вираз без змісту то інтерпретатор видає повідомлення про помилку з вказанням місця помилки і її типу.



1.2 Стрічки і змінні.

1.2.1 Представлення тексту.

Спробуємо працювати з текстом, безпосередньо ввівши його в інтерпретатор.



Отримали помилку. Текст або частини тексту в програмах на Python представляються за допомогою стрічок (string) і повинен відділятися від решти програми лапками (одинарними(1), подвійними(2) або потрійними).

>>> 'Monty Python' (1)

\'Monty Python\'

>>> "Monty Python's Flying Circus" (2)

"Monty Python\'s Flying Circus"

>>> 'Monty Python\'s Flying Circus' (3)

"Monty Python\'s Flying Circus"

>>> 'Monty Python's Flying Circus' (4)

File "", line 1

\'Monty Python\'s Flying Circus\'

^

SyntaxError: invalid syntax


Якщо стрічка містить одинарні лапки необхідно використовувати лівий слеш перед апострофом (3) для того, щоб символ апострофа не розглядався як символ завершення стрічки або використовувати подвійні лапки (2). Якщо цього не зробити то отримаємо помилку (4).




Деколи стрічки можуть складатися з декількох рядків. Python забезпечує декілька способів роботи з ними. В наступному прикладі послідовність з двох стрічок об’єднується в одну. Потрібно використовувати лівий слеш (1) або круглі дужки (2) для того щоб інтерпретатор знав що ввід стрічки ще не завершився після введення першого рядка.

>>> "Shall I compare thee to a Summer\'s day?"\

"Thou are more lovely and more temperate:"

Shall I compare thee to a Summer\'s day?Thou are more lovely and more temperate:

>>>

>>> ("Rough winds do shake the darling buds of May,"

"And Summer's lease hath all too short a date:")

Rough winds do shake the darling buds of May,And Summer\'s lease hath all too short a date:

>>>


Застосування потрійних лапок дозволяє представляти стрічку так як вона введена з розділенням окремих рядків:

>>> """Shall I compare thee to a Summer\'s day?

Thou are more lovely and more temperate:"""


Shall I compare thee to a Summer\'s day?

Thou are more lovely and more temperate:


>>> \'\'\'Rough winds do shake the darling buds of May,

And Summer\'s lease hath all too short a date:\'\'\'


Rough winds do shake the darling buds of May,

And Summer\'s lease hath all too short a date:

>>>


Спробуємо використати оператори додавання і множення для роботи з стрічкою.



Оператор додавання виконує операцію поєднання. Він дозволяє створити нову стрічку на основі двох існуючих, але він не додає пробіл між словами. Спробуємо поєднати три однакові стрічки за допомогою операторів множення та додавання.



^ Виконати самостійно! Виконайте наступну послідовність дій і спробуйте пояснити отримані результати.

>>> a = [1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1]

>>> b = [\' \' * 2 * (7 - i) + \'very\' * i for i in a]

>>> for line in b:

print line


1.2.2 Змінні. Операції присвоювання.

Для того щоб використовувати, в подальшому, значення, які ми отримали вище, нам потрібно їх зберегти розмістивши в певному місці в пам’яті комп’ютера. Місце де ми збережемо ці значення називається змінна і ми їй присвоюємо якесь ім’я. Значення цій змінній присвоюються операцією присвоювання. Оператор присвоювання це знак дорівнює. Виконаємо цю операцію і переглянемо результат на екрані.



Також можемо використати оператори множення при роботі зі змінними.



Можемо використовувати і операцію переприсвоювання.



В даному випадку ми беремо значення змінної msg виконуємо над ним дії і результат знову присвоюємо змінній msg.

1.2.3 Друк і перегляд стрічок

Для того щоб вивести вміст змінної на екран ми набираємо ім’я цієї змінної і натискаємо Enter.



Тепер створимо файл test.py, який буде містити одну стрічку



Відкриємо цей файл в IDLE і запустимо його на виконання командою ^ Run Module з пункту меню Run. Результат буде наступний:



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



В такому випадку результат виконання програми буде видимий.



Аналогічно можна використовувати команду print в інтерпретаторі. Аргументами команди можуть бути як окремі змінні так і їх послідовності розділені комою.






1.3 Доступ до окремих символів стрічки та виділення під стрічок

1.3.1 Доступ до окремих символів стрічки.

Змінна яка називається стрічкою (має тип змінної - стрічка) є дуже важливою при опрацюванні текстів. Всі позиції в стрічці є пронумеровані починаючи з нуля. Для доступу до окремої позиції в стрічці ми записуємо цю позицію в квадратних дужках



Така операція називається індексуванням. Позиція записана в квадратних дужках називається індексом. Цей номер додається до фізичної адреси змінної , яка знаходиться в пам’яті (рис.1). Індекси стрічки msg будуть мати наступний вигляд (рис.2.)



Рис.1 Представлення змінної в пам’яті комп’ютера.




Рис. 2 Індексування стрічки.

У випадку, якщо ми хочемо отримати доступ до символа індекс якого більший ніж кількість символів в стрічці то отримуємо помилку.



Для визначення довжини стрічки і відповідно максимального індекса можна порахувати символи і відняти 1 , або використати функцію len().



Коротко, функція це іменований фрагмент програми, який виконує певні дії при виклику і виконанні функції. Функція len() є вбудованою функцією її виклик здійснюється за назвою і параметром є назва стрічки.

Можна використовувати індекси і з від’ємними значеннями.



Символ який буде виведений визначається як довжина стрічки мінус індекс (рис.3).





Рис. 3 Від’ємне індексування стрічки.


1.3.2 Доступ до підстрічок

У випадку коли ми хочемо отримати доступ до більш ніж одного символа ми повинні в квадратних дужках вказати індекс першого символа і останнього розділивши їх двокрапкою. Цей процес називається slicing (зріз).Рис 4.



Рис.4. Формування зрізів при доступі до під стрічок.



Звертаємо увагу, що ми отримали три символи але не отримали четвертий. Якщо ввести діапазон [0:11] отримаємо всю стрічку.



Також можна використовувати від’ємні індекси, та опускати перший чи останні індекс.







При доступі до підстрічок можна задавати крок в зрізі. В наступному прикладі ми доступаємось до кожного другого символа з вказаного діпазона та отримуємо обернену послідовність.




1.4 Стрічки, послідовності, речення.

Речення також можна представити як стрічку і працювати з ним таким чином як було показано вище.



Але нам потрібно працювати з реченням, яка є послідовністю слів а не символів.


1.4.1 Списки

Lists(списки) – тип даних для опису послідовності значень. В Python списки представляються як послідовність записана через кому і у квадратних дужках.



Списки багато в чому подібні до стрічок але елементами списків на відміну від стрічок можуть бути не тільки окремі символи але і цілі і стрічки і інші списки.



Доступ до значень отримуємо аналогічно до стрічок.





Аналогічним чином значення індексуються і утворюються їх зрізи.



Списки аналогічно до стрічок можуть поєднуватися.



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





Використаємо по відношенню до списку два методи sorting (сортування) і reversing (обернення). Ці методи не створюють нові списки а модифікують початкові.



Спробуємо використати ще два методи append (додати) і index (індексувати ).




1.4.2 Обробка послідовностей

Часто при роботі з послідовностями виникає необхідність послідовно працювати з її елементами. Ми можемо це робити використовуючи for цикл. Це є контрольна структура Python.



Ця програма виконує оператор print len(word), word для кожного елемента зі списку. Цей процес називається ітераціями. Наведемо інший приклад for циклу.



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

Можна написати for цикл і для роботи з символами стрічки




1.4.3 Кортежі

Tuples(кортежі) – подібний до списків тип даних але подібно до стрічок кортежі також не можемо змінювати.




1.4.4 Форматування стрічок

При використанні оператора print можна передбачати певне форматування. Без форматування одержуємо наступне:



При виводі з форматуванням одержимо.



В цьому прикладі команда print має наступний синтаксис: format % values. Format це частина яка містить специфікатори формату такі як %s %d (%s – специфікатор вказує Python що відповідна змінні є стрічкою або може бути конвертована в стрічку, %d - специфікатор вказує Python що відповідна змінна може бути конвертована в десяткове число). Values це частина де записаний кортеж значень для який визначені специфікатори формату.

Наступний приклад демонструє складніший випадок форматування.





1.4.5 Конвертування між стрічками і списками.

Часто виникає потреба конвертації стрічки, яка містить послідовність слів записаних через побіл в список та списку в стрічку. Наступний цикл перетворить список в стрічку, а пробіл додаємо в циклі перед кожним зі слів.



Цю саму операцію ми можемо здійснити використовуючи метод string.join().



Цю ж операцію можна здійснити викликавши відповідний модуль:



Еквівалентний також і наступний запис



Зворотню операцію для перетворення стрічки в список можна звичайно здійснити побудувавши цикл, але доцільніше використати метод split() який розділить стрічку за символами пробілу , або можна ввести інший символ за яким буде здійснюватися розділення.




^ ПОРЯДОК ВИКОНАННЯ РОБОТИ


  1. Ознайомитися з теоретичними відомостями.

  2. Виконати приклади, які використовуються в теоретичних відомостях.

  3. Виконати наступні вправи згідно варіанта індивідуального завдання (Таблиця1.).

    1. 3.1 Створити змінну msg присвоїти їй значення стрічки, яка відповідає імені та прізвищу студента.

    2. 3.2 Роздрукувати вміст змінної msg двома шляхами, перший набравши назву змінної в інтерпретаторі, другий - використавши команду print.

    3. 3.3 Здійснити арифметичні операції зі стрічкою msg.

    4. 3.4 Визначити нову стрічку hello. Здійснити операцію hello+ msg. Змінити стрічку hello додавши в її кінці символ пробілу і знову виконати операцію hello+ msg.

    5. 3.5 Використовуючи зрізи та операцію поєднання змінити стрічку msg до вигляду ім’я , по батькові, прізвище студента.

    6. 3.6 Визначити стрічку s=’colorless’. Використовуючи зрізи та операцію поєднання змінити стрічку до вигляду ‘colourless’.

    7. 3.7 Використовуючи зрізи видаліть афікси у наступних словоформах: dish-es, run-ning, nation-ality, un-do, pre-heat.

    8. 3.8 Спробуйте згенерувати IndexError доступаючись до символів стрічки з індексами менше 0.

    9. 3.9 Організуйте доступ до елементів стрічки з визначеним кроком. Результати поясніть.

    10. 3.10 Поясніть результат виконання msg[::-1].

    11. 3.11 Представити прізвище, ім’я та по батькові як список стрічок. Здійснити різноманітні операції індексування, сортування та зрізів. Реалізуйте операцію доступу до окремих елементів списку та операцій з ними.

    12. 3.12 Представити прізвище, ім’я та по батькові як список стрічок. Розділити речення на окремі елементи, межа розділу голосна буква.

    13. 3.13 Представити прізвище, ім’я та по батькові як список стрічок. Використовуючи метод .reverse() та зріз [::-1] змінити стрічку. Результати пояснити.

    14. 3.14 Напишіть for цикл, який виведе на екран символи стрічки msg по одному на рядок.

    15. 3.15 Створити список phrase1, який складається із значень ім’я , по батькові, прізвище студента. Що відбудеться при спробі ввести в інтерпретатор наступний оператор phrase1[2][2]. Поясніть результат.

    16. 3.16 Створити змінну words яка містить список слів. Дослідіть операції words.sort() і sorted(words).

    17. 3.17 Створіть файл test.py, який містить стрічку msg . Використайте наступні оператори і поясніть отримані результати.

>>> from test import msg

>>> msg

    1. 3.18 Напишіть for цикл, який обробить phrase1 визначивши довжину кожного елементу і результати збереже в новому списку lengths. (Створіть пустий список lengths = []. Далі використовуйте метод append() в тілі циклу для додавання довжин до списку).

    2. 3.19 Перетворіть стрічку msg на список стрічок, кожна з яких відповідає одному слову використовуючи split() оператор без символа розділення та наступними символами розділення: подвійні лапки, табуляція, послідовність пробілів, послідовність табуляцій та пробілів.

    3. 3.20 Визначіть змінну silly, яка буде містити стрічку ’newly formed bland ideas are inexpressible in an infuriating way’ і напишіть програму перетворення стрічки на список стрічок (кожне слово окрема стрічка). Результати збережіть в змінній bland.

    4. 3.21 Напишіть програму, яка створить стрічку в якій будуть записані другі символи всіх слів з стрічки silly.

    5. 3.22 Напишіть програму перетворення списку стрічок в одну стрічку.

    6. 3.23 Напишіть програму, яка надрукує слова із стрічки silly за абеткою.

    7. 3.24 Використайте функцію index() наступним чином ’inexpressible’.index(’e’). Що станеться якщо виконати ’inexpressible’.index(’re’)

    8. 3.25 Визначіть позиції всіх слів в списку phrase1 використовуючи метод index().

    9. 3.26 Визначіть змінну silly, яка буде містити стрічку ’newly formed bland ideas are inexpressible in an infuriating way’ і напишіть програму її перетворення в список phrase, який буде містити всі слова silly крім ‘in’.

  1. Підготувати і оформити звіт згідно варіантів завдань (табл. 1).



Таблиця1.


Варіант

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Номери завдань

1

2

3

4

1

2

3

4

1

2

3

4

1

2

3

5

6

7

8

9

10

5

6

7

8

9

10

5

6

7

8

9

10

5

6

5

6

7

8

9

10

7

8

9

10

11

12

13

14

15

16

17

18

11

12

13

14

15

16

17

14

15

16

17

18

11

12

13

15

16

17

18

11

12

13

19

20

21

22

23

24

25

26

21

22

23

24

25

26

22

22

23

24

25

26

19

20

21

22

23

24

25

26

22

23



Варіант

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

Номери завдань

4

1

2

3

4

1

2

3

4

1

2

3

4

1

2

8

9

10

5

6

7

8

9

10

5

6

7

8

9

10

9

10

5

6

7

5

6

7

8

9

10

5

6

7

8

18

11

12

13

14

15

16

17

18

11

12

13

14

15

16

14

15

16

17

18

16

17

18

11

12

13

14

15

16

17

23

24

25

26

19

20

21

22

23

24

25

26

23

24

25

24

25

26

19

20

21

25

26

19

20

21

22

23

24

19


^ ЗМІСТ ЗВІТУ


5.1 Титульний аркуш.

5.2 Мета роботи.

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

5.4 Тексти програм на мові Python.

5.5 Висновок.


ЛІТЕРАТУРА


  1. Steven Bird, Ewan Klein, Edward Loper Introduction to Natural Language Processing. 2001-2008 University of Pennsylvania.

  2. Г. Россум, Ф.Л.Дж. Дрейк, Д.С. Откидач, М. Задка, М. Левис, С.Монтаро, Э.С.Реймонд, А.М.Кучлинг, М.-А.Лембург, К.-П.Йи, Д.Ксиллаг, Х.Г.Петрилли, Б.А.Варсав, Дж.К.Ахлстром, Дж.Рокинд, Н.Шеменон, С.Мулендер. Язык программирования Python./ 2001 – 452c.

  3. Сузи Р. А. Язык программирования Python.- 206с.

  4. David Mertz Text Processing in Python Addison WesleyBiber, 2003 - 544.
^

ІНТЕРНЕТ ПОСИЛАННЯ


http://www.nltk.org

http://python.org


Додаток А.

Сьогодні ми вивчили:

Типи даних: стрічка, список, кортеж.

Функції: len

Методи роботи зі стрічкою. Всі методі створюють нову стрічку або список.

Метод

Пояснення

s.find(t)

Індекс першого знайденого елемента t стрічки s (-1 якщо не знайдено)

s.rfind(t)

Індекс останнього знайденого елемента t стрічки s (-1 якщо не знайдено)

s.index(t)

Аналогічно до s.find(t)але повертає ValueError якщо не знайдено

s.rindex(t)

Аналогічно до s.rfind(t) але повертає ValueError якщо не знайдено

s.join(text)

Об’єднання стрічок в одну стрічку використовуючи s як символ поєднання

s.split(t)

Перетворення s на список де t – розділювач стрічок (пробіл по замовчуванню)

s.splitlines()

split s into a list of strings, one per line

s.lower()

Перетворення всіх літер в s на малі літери

s.upper()

Перетворення всіх літер в s на великі літери

s.title()

Перетворення першої літери s на велику

s.strip()

Створення копії s без пробідів на початку і в кінці стрічки

s.replace(t, u)

Заміна елемента t на u в стічці s



Методи роботи зі списком.

Метод

Пояснення

s.sort()

Сортування елементів списку s за абеткою

s.append(t)

Додавання елемента t до списку s

s.index(t)

Визначення індекса елемента t



Романюк Андрій Богданович, Юрчак Ірина Юріївна


МЕТОДИЧНІ ВКАЗІВКИ


до лабораторної роботи № 1

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

для магістрів за фахом 8.02030303 «Прикладна лінгвістика»

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




Схожі:




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