НЛП | Объединение тегов NGram
NgramTagger имеет 3 подкласса
- UnigramTagger
- BigramTagger
- TrigramTagger
Подкласс BigramTagger использует предыдущий тег как часть своего контекста.
Подкласс TrigramTagger использует два предыдущих тега как часть своего контекста.
ngram - это подпоследовательность из n элементов.
Идея подклассов NgramTagger:
- Глядя на предыдущие слова и теги POS, можно угадать тег части речи для текущего слова.
- Каждый теггер поддерживает словарь контекста (для его реализации используется родительский класс ContextTagger).
- Этот словарь используется для угадывания этого тега на основе контекста.
- Контекст - это некоторое количество предыдущих помеченных слов в случае подклассов NgramTagger.
Код # 1: Работа теггера Bigram
# Loading Libraries from nltk.tag import DefaultTagger from nltk.tag import BigramTagger from nltk.corpus import treebank # initializing training and testing set train_data = treebank.tagged_sents()[: 3000 ] test_data = treebank.tagged_sents()[ 3000 :] # Tagging tag1 = BigramTagger(train_data) # Evaluation tag1.evaluate(test_data) |
Выход :
0,11318799913662854
Код # 2: Работа теггера триграммы
# Loading Libraries from nltk.tag import DefaultTagger from nltk.tag import TrigramTagger from nltk.corpus import treebank # initializing training and testing set train_data = treebank.tagged_sents()[: 3000 ] test_data = treebank.tagged_sents()[ 3000 :] # Tagging tag1 = TrigramTagger(train_data) # Evaluation tag1.evaluate(test_data) |
Выход :
0,06876753723289446
Код № 3: Совместное использование тегов Unigram, Bigram и Trigram.
# Loading Libraries from nltk.tag import TrigramTagger from tag_util import backoff_tagger from nltk.corpus import treebank # initializing training and testing set train_data = treebank.tagged_sents()[: 3000 ] test_data = treebank.tagged_sents()[ 3000 :] backoff = DefaultTagger( 'NN' ) tag = backoff_tagger(train_sents, [UnigramTagger, BigramTagger, TrigramTagger], backoff = backoff) tag.evaluate(test_sents) |
Выход :
0,8806820634578028
Как это работает ?
- Функция backoff_tagger создает экземпляр каждого класса tagger.
- Он дает предыдущий tagger и train_sents в качестве отката.
- Порядок классов тегов важен: в приведенном выше коде первым классом является UnigramTagger, и, следовательно, он будет обучен первым и получит начальное теггер отсрочки (DefaultTagger).
- Затем этот теггер становится теггером отсрочки для следующего класса теггера.
- Последний возвращенный теггер будет экземпляром последнего класса теггера - TrigramTagger.
Код # 4: Доказательство
print (tagger._taggers[ - 1 ] = = backoff) print ( "
" , isinstance (tagger._taggers[ 0 ], TrigramTagger)) print ( "
" , isinstance (tagger._taggers[ 1 ], BigramTagger)) |
Выход :
Правда Правда Правда
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.