私はかなり長い間、MADE 1.0 データセットのためにHuggingFaceによるGoogle のBERTの PyTorch 実装を使用してきました。前回 (2 月 11 日) まで、私はライブラリを使用しており、モデルの微調整による名前付きエンティティ認識タスクで0.81のF スコアを得ていました。しかし、今週、以前にコンパイルして実行したのとまったく同じコードを実行したところ、次のステートメントを実行するとエラーが発生しました。
input_ids = pad_sequences([tokenizer.convert_tokens_to_ids(txt) for txt in tokenized_texts], maxlen=MAX_LEN, dtype="long", truncating="post", padding="post")
ValueError: トークン インデックスのシーケンス長が、この BERT モデルに指定された最大シーケンス長よりも長くなっています (632 > 512)。このシーケンスを BERT で実行すると、インデックス作成エラーが発生します
完全なコードは、このcolab ノートブックで入手できます。
このエラーを回避するために、任意のシーケンスの最初の 512 トークンを取得して上記のステートメントを以下のステートメントに変更し、必要な変更を加えて、BERT で必要とされる切り捨てられた/パディングされたシーケンスの末尾に [SEP] のインデックスを追加しました。
input_ids = pad_sequences([tokenizer.convert_tokens_to_ids(txt[:512]) for txt in tokenized_texts], maxlen=MAX_LEN, dtype="long", truncating="post", padding="post")
シーケンスの最初の 512 トークンのみを考慮し、後で 75 に切り捨てて (MAX_LEN=75)、結果は変わらないはずですが、F スコアは0.40に低下し、精度は0.27に低下しましたが、リコールはそのままです。同じ(0.85) . 機密保持条項に署名しているため、データセットを共有することはできませんが、BERT で必要とされるすべての前処理が行われ、(Johanson --> Johan ##son) のようなすべての拡張トークンが X でタグ付けされ、置き換えられたことを保証できます。BERT Paperで述べられているように、後で予測した後。
他の誰かが同様の問題に直面したか、または問題の可能性があるか、または PyTorch (Huggingface) の人々が最近行った変更について詳しく説明できますか?