НЛП | Отсрочка тегирования для объединения тегеров

Опубликовано: 24 Июля, 2021

Что такое теги части речи (POS)?
Это процесс преобразования предложения в формы - список слов, список кортежей (где каждый кортеж имеет форму (слово, тег)). Тег в случае является тегом части речи и указывает, является ли слово существительным, прилагательным, глаголом и т. Д.

Что такое Backoff Tagging?
Это одна из наиболее важных функций SequentialBackoffTagger, поскольку она позволяет объединять тегеры вместе. Преимущество этого заключается в том, что если теггер не знает о тегировании слова, он может передать эту задачу тегирования следующему теггеру отсрочки. Если тот не может этого сделать, он может передать слово
следующий теггер отсрочки, и так до тех пор, пока не останется тэгеров отсрочки для проверки.

Код №1: выполнение тегов




# Loading Libraries
from nltk.tag import SequentialBackoffTagger
from nltk.tag import DefaultTagger
from nltk.tag import UnigramTagger
from nltk.corpus import treebank
# initializing training and testing set
train_data = treebank.tagged_sents()[: 3000 ]
test_data = treebank.tagged_sents()[ 3000 :]
# Defining Tag
tag1 = DefaultTagger( 'NN' )
# Tagging
tag2 = UnigramTagger(train_data, backoff = tag1)
# Evaluation
tag2.evaluate(test_data)

Выход :

0,8752428232246924

Как это работает ?
Класс SequentialBackoffTagger может принимать аргумент ключевого слова отсрочки, значение которого является другим экземпляром SequentialBackoffTagger. В приведенном выше коде теггер части речи unigram откладывается с помощью теггера по умолчанию и обучен на наборе данных treebank.tagged_sents ().

Код # 2: Подготовка внутреннего списка тегеров отсрочки




from nltk.tag import SequentialBackoffTagger
  
print (tag1._taggers == [tag1])
  
print (" ", tag2._taggers == [tag2, tag1])

Выход :

Правда

Правда

Как это работает ?

  • Класс SequentialBackoffTagger инициализируется, создавая внутренний список тегеров отсрочки, причем первым элементом является он сам.
  • Внутренний список теггеров отката добавляется, если задан теггер отсрочки.
  • Класс SequentialBackoffTagger использует _taggers list - это внутренний список тегеров отсрочки при вызове метода tag ().
  • Вызывая select_tag () для каждого из них, он просматривает свой список тегеров.
  • Он останавливает и возвращает тег, когда тег найден.
  • Тег будет возвращен, если основной теггер может пометить слово.
  • В противном случае он возвращает None, и пробуется следующий теггер, и так далее, пока тег не будет найден, иначе не будет возвращено None.

Код №3: Сохранение и загрузка обученного теггера с помощью pickle.




# Loading Libraries
import pickle
# Opening file and writing
file = open ( 'tagger.pickle' , 'wb' )
pickle.dump(tagger, file )
file .close()
# Reading file
file = open ( 'tagger.pickle' , 'rb' )
# Loading
tagger = pickle.load(f)

Выход :

nltk.data.load ('tagger.pickle') загрузит файл 

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.