tomishima2904 / explore_conceptnet

0 stars 0 forks source link

日本語BARTのfine-tuning #10

Open tomishima2904 opened 1 year ago

tomishima2904 commented 1 year ago

目標

head, tail, headとtailを含む文 → relation

# 擬似コード (puseudo code)
head = "ショートカット"
tail = "ヘアスタイル"
sentence = "セミロングのふわっとした女の子らしいヘアスタイルは「聖子ちゃんカット」と呼ばれて全国の若い女性の間で大流行し、翌年1981年の年末に突然、聖子がショートカットになると今度はショートカットが流行り出した"

relation = model(tail, head, sentence)
print(relation)  # の一種である

実験条件

京都大学が公開している訓練済み日本語BART (hugging face)

TODO

tomishima2904 commented 1 year ago

これによると、適切な形式のデータセットを作成しちゃえば、あとは以下のようにするだけぽい?

trainer = Seq2SeqTrainer(
    model,
    args,
    train_dataset=AdditionDataset(2,"train"),
    eval_dataset=AdditionDataset(2,"test"),
    data_collator=data_collator,
    tokenizer=tokenizer,
)

trainer.train()

torch.utils.dataDatasetはhugging face用に決まった形式にしないといけないのかも?

tomishima2904 commented 1 year ago

hugging faceにtutorialがあったので勉強中

tomishima2904 commented 1 year ago

8 京都大学の日本語訓練済みBARTは入力文をあらかじめ Juman++ でトークナイズしておく必要があるので、それも行う。

from transformers import AutoTokenizer, MBartForConditionalGeneration
tokenizer = AutoTokenizer.from_pretrained('ku-nlp/bart-base-japanese')
model = MBartForConditionalGeneration.from_pretrained('ku-nlp/bart-base-japanese')
sentence = '京都 大学 で 自然 言語 処理 を 専攻 する 。'  # input should be segmented into words by Juman++ in advance
encoding = tokenizer(sentence, return_tensors='pt')
...
tomishima2904 commented 1 year ago

BARTではデータセットをどんな形状・カラム名にすればいいのか

BARTではBartForConditionalGenerationが元になっているのでこのモデルタイプが受け入れるデータセットの形状を知りたい

ここのフォーラムによると、columns = ['input_ids', 'labels', 'decoder_input_ids','attention_mask',]とすれば良さそう。

tomishima2904 commented 1 year ago

↑のような回りくどいことはしなくていい!

京都大学のbartのGithubリポジトリのreadmeにやるべきことがちゃんと書いてあった