Boostcamp week11 day2 MRC with BERT, T5
7027 ワード
Extraction based MRC with BERT
サンプルのKorQuadデータに対してBERTのコードを微調整し,必要に応じて任意の数の学習データを選択できる.
Point 1. Huggingfaceのクイズモデルをチェック
Autoclassの Huggingfaceでのロール qa出力形式 前処理フロー
(特にspanのインポート部分と答えがspanを超えているかどうかを確認します) utils_qa.pyの後処理関数 Point 2. 学習したモデルを読み込み、モデルを評価 HuggingFace Transformerは学習したモデル をどのように読み込みますか?型番評価 Extra Mission. 提供されるベースラインコードは、学習大会で使用されるKLUE MRCデータのBERT部分を含む.大会で使用したKLUE MRCデータに対してBERTチューニングを行い,性能を比較した.△EM 46.6%/F 1が59.9%に近づくと、これは正常な学習です.
Generation based MRC with T5
GenerationベースのMRCは,指紋に正解が存在する必要はなく,指紋から正解を見つけたExtractionとは異なり,正解を生成する方式である.代表的なSeq 2 SeqモデルT 5を用いて、生成されたMRCおよびT 5に基づく.
Code Review需要の設定
Postprocessにnltkのpunktを導入します. データセットをダウンロードし、Metric をダウンロードします.モデルの読み込み
seq 2 seqモデルなので、 前処理
T 5は、
次に、Tokenizerを使用して文をマークします.パラメータとしてMaxlengthまたはpaddingまたはカットオフを決定します.結果として、
最後に、上記で定義した前処理関数をデータセットに適用します.(train, validation both)
data collator
Huggingfaceの
data collatorの場合、talk nameオブジェクトやモデル、
Postprecessing, Compute_metrics
入力値は
まずstripでスペースを削除し、nltkのsend tokenize関数を使用して各文を「/n」(改行) に加算します. Metricの場合、
サンプルのKorQuadデータに対してBERTのコードを微調整し,必要に応じて任意の数の学習データを選択できる.
Point 1. Huggingfaceのクイズモデルをチェック
Autoclassの
(特にspanのインポート部分と答えがspanを超えているかどうかを確認します)
Generation based MRC with T5
GenerationベースのMRCは,指紋に正解が存在する必要はなく,指紋から正解を見つけたExtractionとは異なり,正解を生成する方式である.代表的なSeq 2 SeqモデルT 5を用いて、生成されたMRCおよびT 5に基づく.
Code Review
Postprocessにnltkのpunktを導入します.
# Requirements
!pip install tqdm==4.48.0 -q
!pip install datasets==1.4.1 -q
!pip install transformers==4.5.0 -q
!pip install sentencepiece==0.1.95 -q
!pip install nltk -q
import nltk
nltk.download('punkt')
from datasets import load_dataset
from datasets import load_metric
datasets = load_dataset("squad_kor_v1")
metric = load_metric("squad")
seq 2 seqモデルなので、
max_train_samples
を使用します.# T5는 seq2seq 모델이므로 model을 불러올 때 AutoModelForSeq2SeqLM을 사용해야 함
config = AutoConfig.from_pretrained(
model_name,
cache_dir=None,
)
tokenizer = AutoTokenizer.from_pretrained(
model_name,
cache_dir=None,
use_fast=True,
)
model = AutoModelForSeq2SeqLM.from_pretrained(
model_name,
config=config,
cache_dir=None,
)
T 5は、
AutoModelFroSeq2SeqLM
をEOSトークンとして使用する.そこで、入力値にend tokenを加える前処理を実行する.inputs = [f"question: {q} context: {c} </s>" for q, c in zip(examples["question"], examples["context"])]
targets = [f'{a["text"][0]} </s>' for a in examples['answers']]
次に、Tokenizerを使用して文をマークします.パラメータとしてMaxlengthまたはpaddingまたはカットオフを決定します.結果として、
</s>
、example_id
の値を有する辞書形式のmodel inputsが返される.最後に、上記で定義した前処理関数をデータセットに適用します.(train, validation both)
data collator
Huggingfaceの
label
およびdatacollator
およびTrainer
が呼び出される.data collatorの場合、talk nameオブジェクトやモデル、
trainingArguments
などをパラメータとします.Postprecessing, Compute_metrics
入力値は
label_pad_token_id
、preds
です.つまり、私が予測したAnswerテキストと実際の正解テキストを入力します.labels
は(preds,labels)
として受信され、batch decode関数を使用してマークされた入力値が復号される.このようなdecoded predsおよびdecodeラベルを使用して、上にロードされたメトリックの計算計算によって結果を計算および返します.Reference
この問題について(Boostcamp week11 day2 MRC with BERT, T5), 我々は、より多くの情報をここで見つけました https://velog.io/@dayday/Boostcamp-week11-day2-Extraction-based-MRC-with-BERTテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol