🚀 dpr-question_encoder-fr_qa-camembert
このモデルは、CamemBERT をベースとしたフランス語の DPRモデル で、3つのフランス語の質問応答データセットの組み合わせで微調整されています。
🚀 クイックスタート
このモデルは、フランス語の質問応答タスクに最適化されています。以下のセクションで、データセット、学習、評価、使用方法について詳しく説明します。
✨ 主な機能
- フランス語の質問応答タスクに特化したDPRモデル。
- 3つのフランス語の質問応答データセットで微調整。
- 高い検索精度を実現。
📦 インストール
このモデルを使用するには、transformers
や haystack
などの必要なライブラリをインストールする必要があります。以下は、基本的なインストールコマンドの例です。
pip install transformers haystack
💻 使用例
基本的な使用法
from transformers import AutoTokenizer, AutoModel
query = "Salut, mon chien est-il mignon ?"
tokenizer = AutoTokenizer.from_pretrained("etalab-ia/dpr-question_encoder-fr_qa-camembert", do_lower_case=True)
input_ids = tokenizer(query, return_tensors='pt')["input_ids"]
model = AutoModel.from_pretrained("etalab-ia/dpr-question_encoder-fr_qa-camembert", return_dict=True)
embeddings = model.forward(input_ids).pooler_output
print(embeddings)
高度な使用法
from haystack.nodes import DensePassageRetriever
from haystack.document_stores import InMemoryDocumentStore
document_store = InMemoryDocumentStore()
retriever = DensePassageRetriever(
document_store=document_store,
query_embedding_model="etalab-ia/dpr-question_encoder-fr_qa-camembert",
passage_embedding_model="etalab-ia/dpr-ctx_encoder-fr_qa-camembert",
model_version=dpr_model_tag,
infer_tokenizer_classes=True,
)
📚 ドキュメント
データ
フランス語の質問応答データセット
以下の3つのフランス語の質問応答データセットを組み合わせて使用しています。
- PIAFv1.1
- FQuADv1.0
- SQuAD-FR (SQuADを自動翻訳したフランス語版)
学習
train
には90,562個のランダムな質問を、dev
には22,391個の質問を使用しています。train
の質問は dev
には含まれていません。
- 各質問には、1つの
positive_context
(質問の答えが見つかる段落)と約30個の hard_negtive_contexts
があります。ハードネガティブコンテキストは、ESインスタンスにクエリを投げ(bm25検索を介して)、答えを含まない上位kの候補を取得することで見つけられます。
- 学習データは こちら から入手できます。
評価
FQuADv1.0とFrench-SQuADの評価セットを使用して評価を行っています。
学習スクリプト
公式の Facebook DPR実装 を若干修正して使用しています。デフォルトでは、コードはRobertaモデルで動作しますが、Camembertでも動作するように1行を変更しています。この修正は こちら で確認できます。
ハイパーパラメータ
python -m torch.distributed.launch --nproc_per_node=8 train_dense_encoder.py \
--max_grad_norm 2.0 --encoder_model_type hf_bert --pretrained_file data/bert-base-multilingual-uncased \
--seed 12345 --sequence_length 256 --warmup_steps 1237 --batch_size 16 --do_lower_case \
--train_file DPR_FR_train.json \
--dev_file ./data/100_hard_neg_ctxs/DPR_FR_dev.json \
--output_dir ./output/bert --learning_rate 2e-05 --num_train_epochs 35 \
--dev_batch_size 16 --val_av_rank_start_epoch 25 \
--pretrained_model_cfg ./data/bert-base-multilingual-uncased
評価結果
FQuADとSQuAD-FRの評価(または検証)セットを使用して以下の評価結果を得ています。これらの結果を得るために、haystackの評価スクリプト を使用しています(リトリーバーの結果のみ報告しています)。
DPR
FQuAD v1.0評価
3184個の質問のうち2764個(86.81%)について、答えがリトリーバーによって選択された上位20の候補パッセージに含まれていました。
リトリーバーの再現率: 0.87
リトリーバーの平均平均精度: 0.57
SQuAD-FR評価
10018個の質問のうち8945個(89.29%)について、答えがリトリーバーによって選択された上位20の候補パッセージに含まれていました。
リトリーバーの再現率: 0.89
リトリーバーの平均平均精度: 0.63
BM25
参考までに、BM25の結果を以下に示します。元の論文と同様に、SQuADのようなデータセットに関しては、DPRの結果は一貫してBM25に劣っています。
FQuAD v1.0評価
3184個の質問のうち2966個(93.15%)について、答えがリトリーバーによって選択された上位20の候補パッセージに含まれていました。
リトリーバーの再現率: 0.93
リトリーバーの平均平均精度: 0.74
SQuAD-FR評価
10018個の質問のうち9353個(93.36%)について、答えがリトリーバーによって選択された上位20の候補パッセージに含まれていました。
リトリーバーの再現率: 0.93
リトリーバーの平均平均精度: 0.77
🔧 技術詳細
このモデルは、CamemBERTをベースとして構築されたDPRモデルです。学習には、3つのフランス語の質問応答データセットを組み合わせて使用し、特定のハイパーパラメータを設定して微調整を行っています。評価には、FQuADv1.0とFrench-SQuADの評価セットを使用しています。
📄 ライセンス
このプロジェクトのライセンスに関する詳細情報は提供されていません。
謝辞
この研究は、GENCI–IDRISのHPCリソースを使用して行われました(Grant 2020-AD011011224)。
引用
データセット
PIAF
@inproceedings{KeraronLBAMSSS20,
author = {Rachel Keraron and
Guillaume Lancrenon and
Mathilde Bras and
Fr{\'{e}}d{\'{e}}ric Allary and
Gilles Moyse and
Thomas Scialom and
Edmundo{-}Pavel Soriano{-}Morales and
Jacopo Staiano},
title = {Project {PIAF:} Building a Native French Question-Answering Dataset},
booktitle = {{LREC}},
pages = {5481--5490},
publisher = {European Language Resources Association},
year = {2020}
}
FQuAD
@article{dHoffschmidt2020FQuADFQ,
title={FQuAD: French Question Answering Dataset},
author={Martin d'Hoffschmidt and Maxime Vidal and Wacim Belblidia and Tom Brendl'e and Quentin Heinrich},
journal={ArXiv},
year={2020},
volume={abs/2002.06071}
}
SQuAD-FR
@MISC{kabbadj2018,
author = "Kabbadj, Ali",
title = "Something new in French Text Mining and Information Extraction (Universal Chatbot): Largest Q&A French training dataset (110 000+) ",
editor = "linkedin.com",
month = "November",
year = "2018",
url = "\url{https://www.linkedin.com/pulse/something-new-french-text-mining-information-chatbot-largest-kabbadj/}",
note = "[Online; posted 11-November-2018]",
}
モデル
CamemBERT
HFモデルカード : https://huggingface.co/camembert-base
@inproceedings{martin2020camembert,
title={CamemBERT: a Tasty French Language Model},
author={Martin, Louis and Muller, Benjamin and Su{\'a}rez, Pedro Javier Ortiz and Dupont, Yoann and Romary, Laurent and de la Clergerie, {\'E}ric Villemonte and Seddah, Djam{\'e} and Sagot, Beno{\^\i}t},
booktitle={Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics},
year={2020}
}
DPR
@misc{karpukhin2020dense,
title={Dense Passage Retrieval for Open-Domain Question Answering},
author={Vladimir Karpukhin and Barlas Oğuz and Sewon Min and Patrick Lewis and Ledell Wu and Sergey Edunov and Danqi Chen and Wen-tau Yih},
year={2020},
eprint={2004.04906},
archivePrefix={arXiv},
primaryClass={cs.CL}
}