НЛП | Чанкер на основе обучающих тегов | Комплект 1
Обучение фрагмента - это альтернатива ручному указанию шаблонов фрагментов регулярного выражения (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. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.