🚀 マラーティ語 (मराठी भाषा) 用RoBERTaベースモデル
マラーティ語でマスク言語モデリング(MLM)の目的で事前学習されたモデルです。RoBERTaは、この論文で紹介され、このリポジトリで最初に公開されました。私たちは、Huggingface 🤗 が主催するコミュニティウィーク中に、NLPとCVのjaxにJAX/Flaxを使用して、マラーティ語用のRoBERTaモデルを学習させました。
🚀 クイックスタート
マラーティ語のRoBERTaは、自己教師付き学習方式で大量のマラーティ語データセットで事前学習されたトランスフォーマーモデルです。
✨ 主な機能
意図された用途と制限❗️
生のモデルをマスク言語モデリングに使用することができますが、主に下流タスクでファインチューニングすることを目的としています。このモデルは、文全体(潜在的にマスクされた)を使用して判断を下すタスク、例えばシーケンス分類、トークン分類、質問応答などでファインチューニングすることを主な目的としています。私たちは、このモデルをiNLTKとindicNLPのニューステキスト分類問題のテキスト分類タスクでファインチューニングするために使用しました。マラーティ語のmc4データセットはマラーティ語の新聞記事をスクレイピングして作成されているため、いくつかのバイアスが含まれており、これはこのモデルのすべてのファインチューニングバージョンにも影響を与えます。
使い方❓
このモデルは、マスク言語モデリングのパイプラインで直接使用することができます。
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='flax-community/roberta-base-mr')
>>> unmasker("मोठी बातमी! उद्या दुपारी <mask> वाजता जाहीर होणार दहावीचा निकाल")
[{'score': 0.057209037244319916,'sequence': 'मोठी बातमी! उद्या दुपारी आठ वाजता जाहीर होणार दहावीचा निकाल',
'token': 2226,
'token_str': 'आठ'},
{'score': 0.02796074189245701,
'sequence': 'मोठी बातमी! उद्या दुपारी २० वाजता जाहीर होणार दहावीचा निकाल',
'token': 987,
'token_str': '२०'},
{'score': 0.017235398292541504,
'sequence': 'मोठी बातमी! उद्या दुपारी नऊ वाजता जाहीर होणार दहावीचा निकाल',
'token': 4080,
'token_str': 'नऊ'},
{'score': 0.01691395975649357,
'sequence': 'मोठी बातमी! उद्या दुपारी २१ वाजता जाहीर होणार दहावीचा निकाल',
'token': 1944,
'token_str': '२१'},
{'score': 0.016252165660262108,
'sequence': 'मोठी बातमी! उद्या दुपारी ३ वाजता जाहीर होणार दहावीचा निकाल',
'token': 549,
'token_str': ' ३'}]
📦 インストール
このセクションの具体的なインストール手順は元文書に記載がありませんでしたので、このセクションをスキップします。
💻 使用例
基本的な使用法
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='flax-community/roberta-base-mr')
>>> unmasker("मोठी बातमी! उद्या दुपारी <mask> वाजता जाहीर होणार दहावीचा निकाल")
[{'score': 0.057209037244319916,'sequence': 'मोठी बातमी! उद्या दुपारी आठ वाजता जाहीर होणार दहावीचा निकाल',
'token': 2226,
'token_str': 'आठ'},
{'score': 0.02796074189245701,
'sequence': 'मोठी बातमी! उद्या दुपारी २० वाजता जाहीर होणार दहावीचा निकाल',
'token': 987,
'token_str': '२०'},
{'score': 0.017235398292541504,
'sequence': 'मोठी बातमी! उद्या दुपारी नऊ वाजता जाहीर होणार दहावीचा निकाल',
'token': 4080,
'token_str': 'नऊ'},
{'score': 0.01691395975649357,
'sequence': 'मोठी बातमी! उद्या दुपारी २१ वाजता जाहीर होणार दहावीचा निकाल',
'token': 1944,
'token_str': '२१'},
{'score': 0.016252165660262108,
'sequence': 'मोठी बातमी! उद्या दुपारी ३ वाजता जाहीर होणार दहावीचा निकाल',
'token': 549,
'token_str': ' ३'}]
高度な使用法
高度な使用法に関する具体的なコード例は元文書に記載がありませんでしたので、この部分を省略します。
📚 ドキュメント
学習データ 🏋🏻♂️
RoBERTaマラーティ語モデルは、C4多言語データセットのmr
データセットで事前学習されました。
C4 (Colossal Clean Crawled Corpus) は、Raffelらによって Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer で導入されました。
このデータセットは、前処理された形式で allennlp またはhuggingfaceのデータセット - mc4データセット からダウンロードできます。
マラーティ語 (mr
) データセットは、140億トークン、780万のドキュメントで構成され、テキストの重さは約70GBです。
データクリーニング 🧹
初期のmc4
マラーティ語コーパスのサイズは約70GBですが、データ探索を通じて、他の言語、特にタイ語や中国語などのドキュメントが含まれていることがわかりました。そのため、トークナイザーとモデルを学習する前にデータセットをクリーニングする必要がありました。驚いたことに、マラーティ語のmc4コーパスデータをクリーニングした後の結果は次の通りです。
学習セット:
クリーンなドキュメント数は、7774331のうち1581396です。
マラーティ語の学習分割全体の 約20.34% が実際にマラーティ語です。
検証セット
クリーンなドキュメント数は、7928のうち1700です。
マラーティ語の検証分割全体の 約19.90% が実際にマラーティ語です。
学習手順 👨🏻💻
前処理
テキストは、Byte-Pair Encoding (BPE) のバイトバージョンを使用してトークン化され、語彙サイズは50265です。モデルの入力は、ドキュメントをまたがる可能性のある512の連続したトークンの断片を取ります。新しいドキュメントの始まりは <s>
で、終わりは </s>
でマークされます。
各文のマスキング手順の詳細は次の通りです。
- トークンの15%がマスクされます。
- 80%のケースで、マスクされたトークンは
<mask>
に置き換えられます。
- 10%のケースで、マスクされたトークンは、置き換えるトークンとは異なるランダムなトークンに置き換えられます。
- 残りの10%のケースでは、マスクされたトークンはそのまま残されます。
BERTとは異なり、マスキングは事前学習中に動的に行われます(例えば、各エポックで変化し、固定されません)。
事前学習
モデルは、Google Cloud Engine TPUv3 - 8マシン(335GBのRAM、1000GBのハードドライブ、96CPUコア)の 8つのv3 TPUコア で、バッチサイズ128、シーケンス長128で42Kステップ学習されました。使用されたオプティマイザーはAdamで、学習率は3e - 4、β1 = 0.9、β2 = 0.98、ε = 1e - 8、重み減衰は0.01、学習率のウォームアップは1000ステップ、その後は学習率を線形に減衰させました。
私たちは、weights and biasesプラットフォームで実験とハイパーパラメータチューニングを追跡しました。これがメインダッシュボードへのリンクです。
マラーティ語RoBERTaモデルのWeights and Biasesダッシュボードへのリンク
事前学習結果 📊
RoBERTaモデルは、約35Kステップで 評価精度85.28% に達し、学習損失は0.6507、評価損失は0.6219 でした。
下流タスクでのファインチューニング
私たちは、下流タスクでファインチューニングを行いました。分類には次のデータセットを使用しました。
IndicNLPマラーティ語ニュースデータセットは、['lifestyle', 'entertainment','sports']
の3つのクラスで構成されており、クラスごとのドキュメント分布は次の通りです。
💯 私たちのマラーティ語RoBERTaの **roberta - base - mr
モデルは、Arora, G. (2020). iNLTK と Kunchukuttan, Anoop et al. AI4Bharat - IndicNLP. に記載されている両方の分類器を上回りました。
データセット |
FT - W |
FT - WC |
INLP |
iNLTK |
roberta - base - mr 🏆 |
iNLTK ヘッドライン |
83.06 |
81.65 |
89.92 |
92.4 |
97.48 |
🤗 Huggingfaceモデルハブリポジトリ:
iNLTKヘッドライン分類データセットでファインチューニングされた roberta - base - mr
モデル:
flax - community/mr - indicnlp - classifier
🧪 ファインチューニング実験のweights and biasesダッシュボードの リンク
このデータセットは、['state', 'entertainment','sports']
の3つのクラスで構成されており、クラスごとのドキュメント分布は次の通りです。
💯 ここでも roberta - base - mr
は iNLTK
のマラーティ語ニューステキスト分類器を上回りました。
データセット |
iNLTK ULMFiT |
roberta - base - mr 🏆 |
iNLTK ニュースデータセット (kaggle) |
92.4 |
94.21 |
🤗 Huggingfaceモデルハブリポジトリ:
iNLTKニュース分類データセットでファインチューニングされた roberta - base - mr
モデル:
flax - community/mr - inltk - classifier
ファインチューニング実験のweights and biasesダッシュボードの リンク
実世界のマラーティ語データでのモデルの汎化能力を確認したいですか?
🤗 Huggingfaceのスペース 🪐 にアクセスして、3つのモデルを試してみてください。
- 事前学習されたマラーティ語RoBERTaモデルを使用したマスク言語モデリング:
flax - community/roberta - base - mr
- マラーティ語ヘッドライン分類器:
flax - community/mr - indicnlp - classifier
- マラーティ語ニュース分類器:
flax - community/mr - inltk - classifier
Huggingface Spacesでの事前学習されたRobertaマラーティ語モデルのStreamlitアプリ

チームメンバー
クレジット
Huggingface 🤗 とGoogle Jax/Flaxチームに、素晴らしいコミュニティウィークを提供してくれたことに大きな感謝を申し上げます。特に、膨大な計算リソースを提供してくれたことに感謝します。@patil - suraj と @patrickvonplaten が一週間を通してメンターしてくれたことにも大きな感謝を申し上げます。
