[〜#〜] bert [〜#〜] などのNLPモデルがトークン化にWordPieceを利用することを確認しました。ワードピースでは、playing
のようなトークンをplay
および##ing
。それは語彙外(OOV)の単語のより広いスペクトルをカバーすると述べられています。誰かがWordPieceトークン化が実際にどのように行われるのか、そしてそれがどのように効果的に処理されるのかを説明して、珍しい/ OOV単語を助けるのに役立ちますか?
WordPieceとBPEは、NLPタスクで単語をサブワードレベルにセグメント化するためによく使用される2つの手法です。どちらの場合も、語彙は言語内のすべての個々の文字で初期化され、語彙内のシンボルの最も頻繁な/可能性の高い組み合わせが語彙に繰り返し追加されます。
元の論文 からのWordPieceアルゴリズムを検討してください(私がわずかに変更した言葉):
- テキスト内のすべての文字でWordユニットインベントリを初期化します。
- 1のインベントリを使用して、トレーニングデータに言語モデルを構築します。
- 現在のWordインベントリから2つのユニットを組み合わせて新しいWordユニットを生成し、Wordユニットのインベントリを1つ増やします。モデルに追加されたときにトレーニングデータの可能性を最も高める可能性のあるすべてのものから新しいWordユニットを選択します。
- 事前定義されたワード単位の制限に達するか、可能性の増加が特定のしきい値を下回るまで、2に移動します。
[〜#〜] bpe [〜#〜] アルゴリズムは、ステップ3でのみ異なり、現在のサブワードのセットの中で次に最も頻繁に発生するペアの組み合わせとして新しいワードユニットを選択するだけです。単位。
例
入力テキスト:彼女は歩いた。彼は犬の散歩者です。私は歩く
最初の3つのBPEマージ:
w
a
= wa
l
k
= lk
wa
lk
= walk
したがって、この段階では、語彙にはwa
、lk
、およびwalk
とともにすべての最初の文字が含まれています。通常、これは一定数のマージ操作に対して行います。
それは珍しい/ OOV単語をどのように扱いますか?
簡単に言うと、そのようなセグメンテーション方法を使用する場合、OOVワードは不可能です。語彙にない単語はサブワード単位に分解されます。同様に、まれな単語の場合、使用したサブワードのマージの数が限られているため、単語は語彙に出現しないため、より頻繁なサブ単語に分割されます。
これはどのように役立ちますか?
モデルがWord walking
を認識しているとします。このWordがトレーニングコーパスで少なくとも数回出現しない限り、モデルはこのWordをうまく処理することを学ぶことができません。ただし、walked
、walker
、walks
という単語があり、それぞれ数回しか出現しません。サブワードセグメンテーションがない場合、これらの単語はすべて、モデルによって完全に異なる単語として扱われます。
ただし、これらがwalk@@ ing
、walk@@ ed
などとしてセグメント化されている場合、それらすべてに共通のwalk@@
が含まれることに注意してください。これは、トレーニング中に頻繁に発生し、モデルがそれについてもっと学ぶことができます。