🚀 LSGモデル
このモデルは、長い文脈を扱うことができ、法的なテキストに特化したモデルです。Transformersライブラリを利用しており、Local + Sparse + Global attention (LSG) を用いることで、長いシーケンスを高速かつ効率的に処理します。
🚀 クイックスタート
このモデルはカスタムモデリングファイルに依存しているため、使用する際には trust_remote_code=True
を追加する必要があります。
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained("ccdv/legal-lsg-small-uncased-4096", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("ccdv/legal-lsg-small-uncased-4096")
✨ 主な機能
- 長いシーケンスの処理:LongformerやBigBirdよりも高速かつ効率的に長いシーケンスを処理できます。
- 自動パディング:シーケンスの長さがブロックサイズの倍数でない場合、自動的にパディングします。
- エンコーダー - デコーダーのサポート:エンコーダー - デコーダーのアーキテクチャをサポートしています。
📦 インストール
このモデルはHugging FaceのTransformersライブラリを通じて利用できます。必要なバージョンは Transformers >= 4.36.1
です。
💻 使用例
基本的な使用法
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained("ccdv/legal-lsg-small-uncased-4096", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("ccdv/legal-lsg-small-uncased-4096")
高度な使用法
from transformers import AutoModel
model = AutoModel.from_pretrained("ccdv/legal-lsg-small-uncased-4096",
trust_remote_code=True,
num_global_tokens=16,
block_size=64,
sparse_block_size=64,
attention_probs_dropout_prob=0.0,
sparsity_factor=4,
sparsity_type="none",
mask_first_token=True
)
マスク埋め込みタスクの例
from transformers import FillMaskPipeline, AutoModelForMaskedLM, AutoTokenizer
model = AutoModelForMaskedLM.from_pretrained("ccdv/legal-lsg-small-uncased-4096", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("ccdv/legal-lsg-small-uncased-4096")
SENTENCES = ["Paris is the <mask> of France.", "The goal of life is <mask>."]
pipeline = FillMaskPipeline(model, tokenizer)
output = pipeline(SENTENCES, top_k=1)
output = [o[0]["sequence"] for o in output]
print(output)
分類タスクの例
from transformers import AutoModelForSequenceClassification, AutoTokenizer
model = AutoModelForSequenceClassification.from_pretrained("ccdv/legal-lsg-small-uncased-4096",
trust_remote_code=True,
pool_with_global=True,
)
tokenizer = AutoTokenizer.from_pretrained("ccdv/legal-lsg-small-uncased-4096")
SENTENCE = "This is a test for sequence classification. " * 300
token_ids = tokenizer(
SENTENCE,
return_tensors="pt",
truncation=True
)
output = model(**token_ids)
print(output)
グローバルトークンのトレーニング例
from transformers import AutoModelForSequenceClassification, AutoTokenizer
model = AutoModelForSequenceClassification.from_pretrained("ccdv/legal-lsg-small-uncased-4096",
trust_remote_code=True,
pool_with_global=True,
num_global_tokens=16
)
tokenizer = AutoTokenizer.from_pretrained("ccdv/legal-lsg-small-uncased-4096")
for name, param in model.named_parameters():
if "global_embeddings" not in name:
param.requires_grad = False
else:
param.required_grad = True
📚 ドキュメント
パラメータ
以下のパラメータを変更することができます。
パラメータ |
説明 |
num_global_tokens |
グローバルトークンの数 (デフォルト: 1) |
block_size |
ローカルブロックサイズ (デフォルト: 128) |
sparse_block_size |
スパースブロックサイズ (デフォルト: 128) |
sparsity_factor |
スパース性の係数 (デフォルト: 2) |
mask_first_token |
最初のトークンをマスクするかどうか (デフォルト: False) |
スパース選択タイプ
6種類の異なるスパース選択パターンがあります。最適なタイプはタスクに依存します。
sparsity_type="bos_pooling"
:BOSトークンを使用した加重平均プーリング。一般的に最適な性能を発揮します。
sparsity_type="norm"
:ノルムが最も高いトークンを選択します。スパース性の係数が小さい場合に最適です。
sparsity_type="pooling"
:平均プーリングを使用してトークンをマージします。スパース性の係数が小さい場合に最適です。
sparsity_type="lsh"
:LSHアルゴリズムを使用して類似したトークンをクラスタリングします。スパース性の係数が大きい場合に最適です。
sparsity_type="stride"
:各ヘッドで異なるトークンを選択します。スパース性の係数がヘッド数より大きい場合は推奨されません。
sparsity_type="block_stride"
:各ヘッドでブロック単位でトークンを選択します。スパース性の係数がヘッド数より大きい場合は推奨されません。
🔧 技術詳細
このモデルは、Local + Sparse + Global attention (LSG) を用いて長いシーケンスを処理します。これにより、LongformerやBigBirdよりも高速かつ効率的に長いシーケンスを処理できます。
📄 ライセンス
このモデルは、LEGAL-BERT モデルをベースにしています。関連する論文は以下の通りです。
@inproceedings{chalkidis-etal-2020-legal,
title = "{LEGAL}-{BERT}: The Muppets straight out of Law School",
author = "Chalkidis, Ilias and
Fergadiotis, Manos and
Malakasiotis, Prodromos and
Aletras, Nikolaos and
Androutsopoulos, Ion",
booktitle = "Findings of the Association for Computational Linguistics: EMNLP 2020",
month = nov,
year = "2020",
address = "Online",
publisher = "Association for Computational Linguistics",
doi = "10.18653/v1/2020.findings-emnlp.261",
pages = "2898--2904"
}