llm-jp-eval
LLMの自動評価手法
データセットごとにメトリクスを算出してスコアとしている
メトリクス
https://github.com/llm-jp/llm-jp-eval/blob/main/src/llm_jp_eval/utils.py#L123
完全一致 (exact_match)
sklearn.accuracy_score
ピアソンの積率相関係数 (pearson)
scipy.stats.pearsonr
https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.pearsonr.html
スピアマンの相関係数 (spearman)
scipy.stats.spearmanr
Levenshtein距離 (char_f1)
トークン間のLevenshtein距離を 0 ~ 1の比率にしたもの
char_f1_scores.append(fuzz.token_sort_ratio(y_pred, y_true) / 100.0)
thefuzzはLevenshteinn距離をいい感じに計算してくれるライブラリ
重複排除した時のトークン一致率 (set_f1)
https://github.com/llm-jp/llm-jp-eval/blob/main/src/llm_jp_eval/utils.py#L195
BLEUスコア (bleu_en, bleu_jp)
1 ~ 4-gramのBLEUスコアから算出
bleu_en
sacreblue.BLEU().corpus_score().score
bleu_ja
トークナイザは mecab + ipadic
https://github.com/mjpost/sacrebleu/blob/master/setup.py#L158
sacreblue.BLEU(trg_lang="ja").corpus_score().score
BERTScore (bert_score_en_f1, bert_score_jp_f1)
bert_score_en_f1
bert_score.score(y_preds, y_trues, lang="en")[2.mean().item()
使用モデルは roberta-large
bert_score_ja_f1
bert_score.score(y_preds, y_trues, lang="ja")[2.mean().item()
使用モデルは bert-base-multilingual-cased
トークナイザはモデル組み込みのもの
COMET (comet_wmt22)
comet_model.predict(comet_data, batch_size=8, gpus=0, progress_bar=False).system_score
使用モデル: "Unbabel/wmt22-comet-da"
データセット