시퀀스 태거로 NER/PoS
시퀀스 태거로 NER/PoS
시퀀스 태거(SequenceTagger)는 단어 수준 분류, 예를 들어 엔티티 인식(NER)이나 품사(PoS) 태깅을 하는 모델이에요. 전통적 구조는 LSTM-CRF 기반으로, 단어를 임베딩으로 표현한 뒤 LSTM에 넣고 마지막에 소프트맥스 분류기로 확률을 예측, 기본적으로 CRF로 디코딩해요.
사전 학습 모델을 바로 쓰려면 load()로 불러와서 문장을 태깅해요.
from flair.models import SequenceTagger
tagger = SequenceTagger.load("ner")
sentence = Sentence("George Washington was born in Virginia.")
tagger.predict(sentence)
SequenceTagger의 주요 인자는 이렇게 돼요.
SequenceTagger(
embeddings,
tag_dictionary,
tag_type,
use_rnn=True,
rnn_type='LSTM',
tag_format='BIOES',
hidden_size=256,
bidirectional=True,
use_crf=True,
reproject_embeddings=True,
dropout=0.0,
word_dropout=0.05,
locked_dropout=0.5,
)
tag_type에는 ner, upos 같은 라벨 타입을 주면 돼요. 라벨의 시작·끝을 표기하는 tag_format은 기본이 BIOES예요.