시퀀스 태거로 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예요.

더 알아보기