re-labler 일반화
Opened this issue · 2 comments
seopbo commented
개요
NER 학습 데이터셋이 주어졌을 때, 임의의 subword-tokenizer (e.g. CharBPE
, BertWordPiece
)가 주어지면 이에 맞추어 re-labeling을 한다. huggingface tokenizers 제공하는 class 기준으로 하면
BertWordPieceTokenizer
CharBPETokenizer
ByteLevelBPETokenizer
원하는 결과는 아래와 같다.
## klue-ner-v1_dev_00010-nsmc <엠비씨:OG>에서 사극이 이렇게 망한다는 것을 깨달았다
엠 B-OG
비 I-OG
씨 I-OG
에 O
서 O
O
사 O
극 O
이 O
O
이 O
렇 O
게 O
O
망 O
한 O
다 O
는 O
O
것 O
을 O
O
깨 O
달 O
았 O
다 O
만약에 BertWordPieceTokenizer
를 준다면
## klue-ner-v1_dev_00010-nsmc <엠비씨:OG>에서 사극이 이렇게 망한다는 것을 깨달았다
엠 B-OG
비씨 I-OG
##에 O
O
사극 O
##이 O
O
이렇 O
##게 O
O
망한다 O
##는 O
O
것 O
##을 O
O
깨달 O
##았다 O
``
tucan9389 commented
입력포맷 지원
- 꺾새 기반 텍스트:
<엠비씨:OG>에서 사극이 이렇게 망한다는 것을 깨달았다
- 포지션과 텍스트:
엠비씨에서 사극이 이렇게 망한다는 것을 깨달았다
,[((0,3), OG)]
- 개행기반 텍스트와 레이블:
엠 B-OG
비씨 I-OG
##에 O
O
사극 O
##이 O
O
이렇 O
##게 O
O
망한다 O
##는 O
O
것 O
##을 O
O
깨달 O
##았다 O
1. 꺾새 기반 텍스트
input_text_ids, input_label_ids = preprocess(tokenizer=tokenizer, text=t)
# input_text_ids, input_label_ids = preprocess(tokenizer=tokenizer, text=t, labels=labels)
2. 포지션과 텍스트
input_text_ids, input_label_ids = preprocess(tokenizer=tokenizer, raw_text=t, pos_label_list=t_info_list, labels=labels)
3. 개행기반 텍스트와 레이블
input_text_ids, input_label_ids = preprocess(tokenizer=tokenizer, text=t, labels=labels)