НЛП | Чанкер на основе обучающих тегов | Комплект 1

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

Обучение фрагмента - это альтернатива ручному указанию шаблонов фрагментов регулярного выражения (regex). Но ручное обучение заданию выражения - это утомительная задача, поскольку она следует методу «пробный и пробный» для получения точных правильных шаблонов. Таким образом, существующие данные корпуса можно использовать для обучения блоков.

В приведенных ниже кодах мы используем корпус treebank_chunk для создания фрагментированных предложений в форме деревьев.
-> Для обучения блокировщика на основе тегов - методы chunked_sents () используются классом TagChunker.
-> Чтобы извлечь список кортежей (pos, iob) из списка деревьев - класс TagChunker использует вспомогательную функцию conll_tag_chunks () .

Затем эти кортежи используются для обучения теггера. и он изучает теги IOB для тегов части речи.

Код №1: давайте разберемся с классом Chunker для обучения.




from nltk.chunk import ChunkParserI
from nltk.chunk.util import tree2conlltags, conlltags2tree
from nltk.tag import UnigramTagger, BigramTagger
from tag_util import backoff_tagger
def conll_tag_chunks(chunk_data):
tagged_data = [tree2conlltags(tree) for
tree in chunk_data]
return [[(t, c) for (w, t, c) in sent]
for sent in tagged_data]
class TagChunker(ChunkParserI):
def __init__( self , train_chunks,
tagger_classes = [UnigramTagger, BigramTagger]):
train_data = conll_tag_chunks(train_chunks)
self .tagger = backoff_tagger(train_data, tagger_classes)
def parse( self , tagged_sent):
if not tagged_sent:
return None
(words, tags) = zip ( * tagged_sent)
chunks = self .tagger.tag(tags)
wtc = zip (words, chunks)
return conlltags2tree([(w, t, c) for (w, (t, c)) in wtc])

Выход :

Тренировочный тег


Код №2: Использование блока тегов.




# loading libraries
from chunkers import TagChunker
from nltk.corpus import treebank_chunk
# data from treebank_chunk corpus
train_data = treebank_chunk.chunked_sents()[: 3000 ]
test_data = treebank_chunk.chunked_sents()[ 3000 :]
# Initailazing
chunker = TagChunker(train_data)


Код # 3: оценка TagChunker




# testing
score = chunker.evaluate(test_data)
a = score.accuracy()
p = score.precision()
r = recall
print ( "Accuracy of TagChunker : " , a)
print ( " Precision of TagChunker : " , p)
print ( " Recall of TagChunker : " , r)

Выход :

Точность TagChunker: 0,9732039335251428

Точность TagChunker: 0,9166534370535006

Отзыв TagChunker: 0.9465573770491803

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

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