Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichni_vkazivki.doc
Скачиваний:
13
Добавлен:
21.02.2016
Размер:
951.3 Кб
Скачать

5.4. Поєднання (комбінування) аналізаторів

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

  1. Визначаємо теги за допомогою біграм аналізатора

  2. Якщо біграм аналізатор не встановив тег для поточного слова – використовується унігам аналізатор.

  3. Якщо уніграм аналізатор не встановив тег для поточного слова – використовується аналізатор по замовчуванню.

Кожен NLTK аналізатор, крім аналізатора по замовчуванню може мати вказівку на використання іншого аналізатора для побудови багатопрохідного аналізатора:

 

>>> t0 = nltk.DefaultTagger('NN')

>>> t1 = nltk.UnigramTagger(train_sents, backoff=t0)

>>> t2 = nltk.BigramTagger(train_sents, backoff=t1)

>>> t2.evaluate(test_sents)

0.84491179108940495

Виконати самостійно. Доповнити попередній приклад аналізаторомTrigramTagger

t3 = nltk.TrigramTagger(train_sents, backoff=t2). Та оцінити точність роботи такого аналізатора.

Потрібно зазначити, що backoffаналізатор вказується при ініціалізації аналізатора, що дозволяє використати при тренуванні результати тренуванняbackoffаналізатора. Тому, якщо біграм аналізатор призначив би такий самий тег, як йогоbackoffаналізатор (уніграм) в певному контексті то навчальний зразок не враховується при тренуванн.я Такий підхід дозволяє зберігати біграм модель максимально компактною. Можна вказати, що аналізатор потребує більш ніж один зразок контексту, наприклад записnltk.BigramTagger(sents, cutoff=2, backoff=t1)відкине контексти , які зустрічаються раз або два.

5.5. Морфологічний аналіз невідомих слів

Для маркування невідомих слів будуються багатопрохідні аналізатири і невідоме слово маркується за допомогою аналізатора на основі регулярних виразів або аналізатора по замовчуванню. Такий підхід не дозволяє враховувати контекст. Наприклад, якщо словоblog не зустрілося в даних для тренування, то аналізатор промаркує його тим самим тегом незважаючи на те чи це слово в контекстіthe blog чи to blog.Чи існують кращі способи аналізу невідомих слів, або слів ,які не зустрічаються у словнику?

Один з методів маркування невідомих слів з врахуванням контексту полягає в обмеженні розміру словника аналізатора в межах найуживаніших n слів, і заміні всіх інших слів спеціальним словом UNK (за допомогою способу описаного в попередній лабораторній роботі). При тренуванні уніграм аналізатор звичайно зафіксує щоUNK це іменник. Однак, n-грам аналізатори визначать що в інших контекстах це слово має інший тег. Наприклад, якщо попереднє слово - to (промарковане TO), тоUNK імовірно буде промарковано як дієслово.

5.6. Збереження результатів тренування аналізаторів

Тренування аналізатора на великому корпусі текстів може зайняти певний час. Доцільно зберігати тренований аналізатор в зручному вигляді, що дозволить при необхідності його використовувати без попереднього тренування. В наступному фрагменті програми аналізатор t2 зберігається у файліt2.pkl.

 

>>> from cPickle import dump

>>> output = open('t2.pkl', 'wb')

>>> dump(t2, output, -1)

>>> output.close()

Цей аналізатор можна завантажити використовуючи окремий процес Python.

 

>>> from cPickle import load

>>> input = open('t2.pkl', 'rb')

>>> tagger = load(input)

>>> input.close()

Аналізатор можна далі використати наступним чином.

 

>>> text = """The board's action shows what free enterprise

... is up against in our complex maze of regulatory laws ."""

>>> tokens = text.split()

>>> tagger.tag(tokens)

[('The', 'AT'), ("board's", 'NN$'), ('action', 'NN'), ('shows', 'NNS'),

('what', 'WDT'), ('free', 'JJ'), ('enterprise', 'NN'), ('is', 'BEZ'),

('up', 'RP'), ('against', 'IN'), ('in', 'IN'), ('our', 'PP$'), ('complex', 'JJ'), ('maze', 'NN'), ('of', 'IN'), ('regulatory', 'NN'), ('laws', 'NNS'), ('.', '.')]

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