[NLP] 一般的なトークン化 (単語分割) 方法 - バイト ペア エンコーディング (BPE)

トークン化と埋め込みの違い

自然言語処理では、トークン化と埋め込みの 2 つの重要な概念です。

トークン化は、自然言語テキストをさまざまな語彙単位 (トークン) に分割するプロセスです。このプロセスには通常、テキスト内の単語、句読点、数字などをセグメント化し、ノイズや冗長な情報を除去することが含まれます。トークン化の結果は、いくつかの語彙単位を含むシーケンスになります。これを使用して、テキストのベクトル表現を構築したり、深層学習モデルに入力して処理したりできます。

埋め込みは、語彙単位をベクトル空間にマッピングするプロセスであり、通常、事前にトレーニングされた単語ベクトル モデル (Word2Vec、GloVe、FastText など) を使用します。これらのモデルは、各語彙単位のベクトル表現がその意味論的および文脈上の情報を捕捉するように、各語彙単位を固定長ベクトルにマッピングします。埋め込みは、テキスト分類、機械翻訳、言語生成などのタスクでよく使用され、テキスト シーケンス内の語彙単位をベクトル シーケンスに変換して、モデルの処理を容易にします。

一般に、トークン化と埋め込みは自然言語処理の 2 つの基本操作です。トークン化はテキスト シーケンスを字句単位に分割し、埋め込みは字句単位をベクトル空間にマップし、テキスト シーケンスにベクトル表現を提供します。これらの操作は、多くの自然言語処理タスクで不可欠です。

ここに画像の説明を挿入
上の画像は、2 つの違いをよく示しています。

一般的なトークン化方法

主に、ワードレベル (ワード粒度)、バイトレベル (ワード粒度)、文字レベル (サブワード粒度) の 3 つのタイプがあります。
ワードレベルの LM (ワードベースの言語モデル) とバイトレベルの LM (バイトベースの言語モデル) の違いは、テキストを処理するときに使用する基本単位が異なることです。

単語の粒度

このセクションでは、単語の粒度に関連する方法について説明します。単語の粒度の分割は、人間がテキストを理解する原理と同じで、英語の NLTK や SpaCy、中国語の jieba や HanLP などのツールで実行できます。

まず、単語の粒度でのトークン化の方法を直観的に見てみましょう. 明らかに、それは人間が読むときの自然なセグメンテーションと一致しています。
ここに画像の説明を挿入

この方法の利点は、単語の意味情報と境界情報を適切に保存できることです。

詳細については、https: //zhuanlan.zhihu.com/p/444774532を参照してください。

ワードレベルの LM では、基本単位はワードです。モデルへの入力は一連の単語であり、出力は次の単語を予測する確率分布です。たとえば、「I am going to the」という文が与えられた場合、モデルのタスクは、「store」や「park」など、次の単語が何であるかを予測することです。

単語粒度セグメンテーションの欠陥:

  1. 単語粒度の方法では大規模な辞書を構築する必要があり、計算効率に重大な影響を与え、メモリを消費します。
  2. このような大規模な辞書の使用が効率に影響しないとしても、OOV の問題が発生します。人間の言語は常に発達しているため、発達の過程で語彙も常に増加しています。例: Needle No Poking、Niubility、Sixology など。
  3. 語彙内の低頻度単語/まばらな単語は、モデルのトレーニング プロセス中に完全にはトレーニングできず、モデルはこれらの単語の意味論を完全に理解できません。
  4. 「look」から派生した「look」と「looking」など、単語は形の違いで別の単語を生み出しますが、意味は似ており、すべてを訓練する必要はありません。

単語の粒度

単語の粒度 (文字の粒度とも呼ばれます) は、特定の言語の最小の記号に従ってセグメント化されます。文字の粒度は、2015 年に Karpathy によって提案されるはずです。簡単に言えば、英語 (ラテン語) は文字に基づいています。

中国語、日本語、韓国語などを文字単位で区切ります。たとえば、
ここに画像の説明を挿入
その利点は、語彙が大幅に削減され、26 文字の英語で基本的にほぼすべての単語をカバーでき、5,000 以上の中国語を組み合わせて基本的に語彙をカバーできることです。しかし、この利点以外にもすべての欠点があり、最も重要なことは、この方法では語彙の音声情報と境界情報が大幅に失われ、モデルにとって致命的であるということです。また、単語を細かく分割しすぎると入力が長くなり、入力計算の負担が大きくなり、語彙を減らす代償として入力長が大幅に増加するため、入力計算に時間がかかります。

このトークン化方法については、実際には一般に使用されないため、特に言うことはありません。

同様に、バイトレベルの LM (ワード粒度ワードセグメンテーション) では、基本単位はバイトです。モデルへの入力は一連のバイトであり、出力は次のバイトを予測する確率分布です。たとえば、バイト シーケンス「01000101 01101110 01100111 01101100 01101001 01110011 01101000」の場合、モデルのタスクは、「 」や「!」などの次のバイトが何になるかを予測することです。

中国語の文字は通常複数のバイトで構成されており、これらのバイトの組み合わせは非常に多様であるため、バイトレベルの LM は中国語のテキストを扱うときに問題が発生する可能性があることに注意してください。したがって、中国語のテキストを処理するには、通常、文字を基本単位とする、より複雑な文字レベルの言語モデルを使用する必要があります。

サブワードの粒度

まずは、理想的なトークン化とはどのようなトークン化なのかについてお話します。一言で言えば、語彙はできる限り少なくする必要がありますが、同時にほとんどの単語をカバーし、OOV 単語の出現を最小限に抑える必要があります。さらに、この表の各トークンには意味があります。言い換えれば、単語から切り出されたそれぞれのサブワードには意味があり、あまり詳細に説明する必要はありません。

ただし、前の 2 つの方法にはどちらも多かれ少なかれ欠点があり、両方とも上記の要件を同時に満たすことはできません。それでは、すべてのパーティのバランスをとる方法はあるのでしょうか? はい、それがサブワード分割の方法です。ただし、この方法が適用できるのは英語のみであり、中国語の場合、文字を部首と部首に分けることは不可能であることをここで最初に宣言しておきます。

では、サブワードのトークン化はどのように分割されるのでしょうか? 別の例:
ここに画像の説明を挿入
では、別の質問をしなければなりません。サブワード辞書をどのようにセグメント化するか、またはどのように構築するかということです。現在、主に4つの方法があります。以下に示すように。
ここに画像の説明を挿入

具体的な 4 つの単語分割方法を参照してください: https://zhuanlan.zhihu.com/p/444774532

BPE

BPE 関連情報: https://zhuanlan.zhihu.com/p/424631681

参考文献:
https://zhuanlan.zhihu.com/p/444774532

おすすめ

転載: blog.csdn.net/weixin_42468475/article/details/131264705