- •Міністерство освіти і науки україни
- •Укладачі: Романюк а. Б., канд. Техн. Наук, ст. Викладач
- •2. Поняття автоматичного морфологічного аналізатора
- •3. Морфологічно розмічені корпуси
- •3.1 Представлення промаркованих слів
- •3.2 Доступ до морфологічно розміченого корпусу
- •3.3 Спрощений набір тегів для маркування морфологічних характеристик
- •3.4 Іменники
- •3.5 Дієслова
- •3.6 Повний набір тегів
- •3.7 Дослідження морфологічно розміченого корпусу
- •4. Використаня типу даних - словник в Python
- •4.1 Порівняння проіндексованих списків та словників
- •4.2 Тип даних словник в Python
- •4.3 Визначення (створення) словників
- •4.4 Словники по замовчуванню
- •4.5 Проведення обчислень з використанням словника
- •4.6 Комплексні ключі та значення
- •4.7 Інвертування словника
- •Порядок виконання роботи
- •Зміст звіту
- •Інтернет посилання
- •Методичні вказівки
- •Укладачі: Романюк Андрій Богданович
4. Використаня типу даних - словник в Python
Промарковані слова представляються у вигляді(word, tag),де слово асоціюється з тегом, який відповідає певним морфологічним характеристикам. Автоматичний морфологічний аналіз можна розглядати , як задачу пошуку відповідного тега для слова. Найпростіший спосіб збереження та обробки таких відповідностей (відображень) в Python це використання такого типу даних, як словник.
4.1 Порівняння проіндексованих списків та словників
Стрічки і списки - простий метод організації даних. Звичайно, вони відображають відповідність між значеннями і цілими. Можна переглянути стрічку використовуючи індекси символів і отримати окремі символи. Також можна переглядати списки слів використовуючи цілі значення і отримуючи одну із стрічок . Ці випадки зображені на рисунку (Рис.1).
Рис.1 Відповідність між значеннями і індексами в стрічках і списках .
При написанні програм потрібні більш гнучкі методи організації і доступу до даних. Розглянемо приклади з рис.2.
Рис.2 Приклади організації даних.
У випадку телефонної книжки, її вміст переглядається, використовуючи «ім’я». Коли ми набираємо ім’я домену у веб-броузері, комп’ютер переглядає його і повертає ipадресу. Частотний список також переглядає слово і знаходить його частоту в наборі текстів. У всіх цих випадках, ми скоріше шукаємо відповідність між «іменами» і числами, а не навпаки, як у послідовностях. В загальному, необхідно встановлювати відповідності між довільними типами інформації . У наступній таблиці 4 наведені лінгвістичні об’єкти і яких відповідностей вони потребують.
Таблиця 4
Linguistic Object |
Maps From |
Maps To |
Document Index |
Word |
List of pages (where word is found) |
Thesaurus |
Word sense |
List of synonyms |
Dictionary |
Headword |
Entry (part-of-speech, sense definitions, etymology) |
Comparative Wordlist |
Gloss term |
Cognates (list of words, one per language) |
Morph Analyzer |
Surface form |
Morphological analysis (list of component morphemes) |
4.2 Тип даних словник в Python
Pythonпідтримує такий тип даних, як словник, і він використовується для встановлення відповідності (відображення) між довільними типами даних. Визначимоposяк пустий словник і додамо до нього значення, які встановлюють частиномовну приналежність певних слів . Значення додаються із використанням квадратних дужок:
|
Говорять, що частина мовиcolorless- прикметник#1, або більш точно, що ключу'colorless'встановлено значення'ADJ'у словникуpos. Значення словникаpos,при перегляді#2, це пари ключ-значення. Для перегляду значення вposвикористовуємо індексування, але в квадратних дужках записується ключ значення, яке потрібно отримати:
|
У випадку доступу до значення ключ, якого відсутній - отримуємо помилку.
|
На відміну від стрічки і списку, де використовується len()для визначення цілого значення, яке відповідає максимальному індексу, аналогічно поступити зі словниками не можна. У випадку не великих словників вміст словника можна переглянути просто ввівши його імя. В результаті на екран буде виведено пари ключ-значення (#2з попереднього прикладу). Порядок цих пар відрізняється від порядку, в якому формувався словник. Це відбулося тому, що словник не є послідовністю, а є відповідністю. Ключі у відповідності не є впорядковані. Для знаходження ключів словник можна конвертувати у список#1— або використовувати словник як параметрsorted()#2, або обробляючи словник вforциклі#3.
|
Здійснюючи ітерації по всіх ключах словника в forциклі, можна вивести на екран його вміст у вигляді списків:
|
Використовуючи методи keys(),values(), items() властиві словникам можна отримувати доступ до ключів, значень, та до пар ключ:значення як до окремих списків. Можна відсортувати кортежі#1, за їх першими елементами (якщо перші елементи однакові то сортування відбувається за другими елементами).
|
Потрібно зазначити що ключі є унікальними. Наступний приклад це демонструє:
|
Спочатку ключу pos['sleep'] відповідає значення ‘n’ а потім воно міняється на ‘v’. Коли потрібно елементу словника присвоїти декілька значень справедливим буде наступний виразpos['sleep'] = ['N', 'V'].