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

5.3. Морфологічний аналіз на основі n-грамів

В одному з попередніх пунктів розглядався уніграм аналізатор, який встановлює тег на основі тотожності цього слова до слова, яке зустрічається в корпусі на якому тренувався аналізатор. В такому випадку, кожне слово розглядається окремо без врахування контексту і наприклад, слово windбуде промарковане однаковим тегом незалежно від контексту чиthe wind чи to wind. В цьому пункті розглянемо аналізатор, який використовує відомості про контекст слова при визначенні відповідного тега.N – грам аналізатор це більш загальний випадок уніграм аналізатора, коли для встановлення тега для поточного слова використовуються тегиn-1 попередніх слів (рис.2.). Тег, який встановлюється –Tn, а контекст затоновано.

Рис. 2.: Контекстне вікноN – грам аналізатора.

В прикладі, який показаний на рис.2. n=3 , тобто розглядаються теги двох попередніх слів.N-грам аналізатор вибирає тег, який має більшу ймовірність появи в даному контексті.

В NLTKNgramTagger- аналізатор реалізовано, як клас який використовує розмічений корпус для визначення найбільш ймовірного тега (тег, який відповідає частині мови) для кожного з контекстів. Наступний приклад демонструє використання одного з варіантівN-грам аналізатора – Біграм аналізатор. Спочатку проводиться його тренування, а далі створений аналізатор використовується для маркування довільного тексту.

 

>>> bigram_tagger = nltk.BigramTagger(train_sents)

>>> bigram_tagger.tag(brown_sents[2007])

[('Various', 'JJ'), ('of', 'IN'), ('the', 'AT'), ('apartments', 'NNS'),

('are', 'BER'), ('of', 'IN'), ('the', 'AT'), ('terrace', 'NN'),

('type', 'NN'), (',', ','), ('being', 'BEG'), ('on', 'IN'), ('the', 'AT'), ('ground', 'NN'), ('floor', 'NN'), ('so', 'CS'), ('that', 'CS'),

('entrance', 'NN'), ('is', 'BEZ'), ('direct', 'JJ'), ('.', '.')]

>>> unseen_sent = brown_sents[4203]

>>> bigram_tagger.tag(unseen_sent)

[('The', 'AT'), ('population', 'NN'), ('of', 'IN'), ('the', 'AT'), ('Congo', 'NP'), ('is', 'BEZ'), ('13.5', None), ('million', None), (',', None), ('divided', None), ('into', None), ('at', None), ('least', None), ('seven', None), ('major', None), ('``', None), ('culture', None), ('clusters', None), ("''", None), ('and', None), ('innumerable', None), ('tribes', None), ('speaking', None), ('400', None), ('separate', None), ('dialects', None), ('.', None)]

Як і інші аналізатори N-грам аналізатор ставить у відповідність всім словам, які не зустрічались при тренування тегNone.

При аналізі речення з даних для тренування аналізатор промаркував кожне зі слів, але при аналізі невідомого тексту більшість слів не промарковано. Як тільки в тексті зустрілося нове слово(наприклад, 13.5), аналізатор не може для нього встановити тег. Так само аналізатор не маркує наступне слово (наприклад, million) навіть , якщо воно зустрічалося при тренувані, оскільки це слово в даних для тренування ніколи не зустрічалося після слова тег якогоNone . Це приводить до того що і всі наступні слова в реченні не маркуються і точність роботи аналізатора надзвичайно низька:

 

>>> bigram_tagger.evaluate(test_sents)

0.10276088906608193

При збільшенні nкількість окремих контекстних вікон зменшується і вони можуть бути не представлені в даних, на основі яких, проводиться тренування. Такі випадки називають – розрідження даних.N- грам аналізатор не розглядає контекст, який перетинає межі речення. Відповідно, аналізатори вNLTKрозробляються для роботи зі послідовностями речень де кожне речення є списком слів. Першому слову речення завжди ставиться у відповідність тегNone.

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