Обучение Unigram Tagger НЛП
Введение
Отдельный токен называется униграммой. Тегер униграммы — это тип тегера, которому требуется только одно слово для определения частей речи слова. Он имеет контекст одного слова. Библиотека NLTK предоставляет нам UnigramTagger и унаследована от NgramTagger.
В этой статье мы разберемся с процессом обучения Unigram Tagger в НЛП.
Unigram Tagger и его обучение с использованием NLTK
РАБОТАЮЩИЙ
UnigramTagger унаследован от ContextTagger. Реализован метод context(). Метод контекста имеет те же аргументы, что и метод Choose_tag().
-
Из метода context() для создания модели будет использоваться токен слова. Это слово используется для поиска лучшего тега.
UnigramTagger создаст модель с контекстом.
Реализация Python
import nltk
nltk.download('treebank')
from nltk.tag import UnigramTagger
from nltk.corpus import treebank as tb
sentences_trained = treebank.tagged_sents()[:4000]
uni_tagger = UnigramTagger(sentences_trained)
print("Sample Sentence : ",tb.sents()[1])
print("Tag sample sentence : ", uni_tagger.tag(tb.sents()[1]))
Выход
Sample Sentence : ['Mr.', 'Vinken', 'is', 'chairman', 'of', 'Elsevier', 'N.V.', ',', 'the', 'Dutch', 'publishing', 'group', '.']
Tag sample sentence : [('Mr.', 'NNP'), ('Vinken', 'NNP'), ('is', 'VBZ'), ('chairman', 'NN'), ('of', 'IN'), ('Elsevier', 'NNP'), ('N.V.', 'NNP'), (',', ','), ('the', 'DT'), ('Dutch', 'JJ'), ('publishing', 'NN'), ('group', 'NN'), ('.', '.')]
В приведенном выше примере кода первый Unigram Tagger обучается на первых 4000 предложениях из Treebank. После обучения предложения они помечаются одним и тем же тегом для любого из предложений. В приведенном выше примере кода используется предложение 1.
Приведенный ниже пример кода можно использовать для тестирования и оценки Unigram Tagger.
from nltk.corpus import treebank as tb
sentences_trained = treebank.tagged_sents()[:4000]
uni_tagger = UnigramTagger(sentences_trained)
sent_tested = treebank.tagged_sents()[3000:]
print("Test score : ",uni_tagger.evaluate(sent_tested))
Выход
Test score : 0.96
В приведенном выше примере кода тегировщик униграмм обучается и обрабатывает 4000 предложений, а затем оценивается на последних 1000 предложениях.
Методы сглаживания
Во многих случаях нам необходимо, например, построить статистические модели в НЛП, которые могут предсказывать следующие слова на основе данных обучения или автодополнения предложений. Во вселенной такого множества комбинаций слов и возможностей совершенно необходимо предсказать наиболее точные слова. В таких случаях можно использовать сглаживание. Сглаживание — это метод корректировки вероятностей в обученной модели, чтобы она могла более точно предсказывать слова и даже предсказывать подходящие слова, отсутствующие в обучающем корпусе.
Виды сглаживания
Сглаживание по Лапласу
Это также известно как сглаживание «добавь 1 на единицу», когда мы добавляем 1 к количеству слов в знаменателе, чтобы не возникало 0-значение или условие деления на 0.
Например,
Problaplace (wi | w(i-1)) = (count(wi w(i-1)) +1 ) / (count(w(i-1)) + N)
N = total words in the training corpus
Prob("He likes coffee")
= Prob( I | <S>)* Prob( likes | I)* Prob( coffee | likes)* Prob(<E> | coffee)
= ((1+1) / (4+6)) * ((1+1) / (1+8)) * ((0+1) / (1+5)) * ((1+1) / (4+8))
= 0.00123
Откат и интерполяция
Он включает в себя два шага
Откатить процесс
Начнем с n-граммы,
-
Мы проверяем n-1 грамм, если наблюдений недостаточно.
Если у нас достаточно наблюдений, мы используем n-2 грамма.
Процесс интерполяции
Мы используем объединение различных моделей n-грамм.
Например, рассматривая предложение, в котором он пошел xxx, мы можем сказать, что триграмма, к которой он пошел, произошла один раз, вероятность слова, к которому он пошел, равна 1, если слово предназначено, и равна 0 для всех остальных слов.
Заключение
UnigramTagger — это полезный инструмент NLTK для обучения тегера, который может использовать всего одно слово в качестве контекста для определения частей речи предложения. UnigramTagger доступен в наборе инструментов NLTK, который использует Ngarm Tagger в качестве родительского класса.