ホームページ  >  記事  >  テクノロジー周辺機器  >  トークン化を 1 つの記事で理解しましょう!

トークン化を 1 つの記事で理解しましょう!

PHPz
PHPz転載
2024-04-12 14:31:26537ブラウズ

言語モデルはテキストについて推論します。テキストは通常​​文字列の形式ですが、モデルの入力は数値のみであるため、テキストを数値形式に変換する必要があります。

トークン化は自然言語処理の基本的なタスクであり、連続するテキスト シーケンス (文、段落など) を文字シーケンス (単語、フレーズ、文字、句読点など) に分割できます。 ) 特定のニーズに応じて.unit)、単位はトークンまたはワードと呼ばれます。

下図に示す具体的なプロセスによると、まずテキスト文を単位に分割し、次に単一の要素をデジタル化(ベクトルにマッピング)し、次にこれらのベクトルをエンコード用のモデルに入力し、最後に出力します。それらを下流タスクに送信すると、さらに最終結果が得られます。

トークン化を 1 つの記事で理解しましょう!

テキスト セグメンテーション

テキスト セグメンテーションの粒度に応じて、トークン化は、単語粒度のトークン化、文字粒度のトークン化、およびサブワード粒度の 3 つのカテゴリに分類できます。トークン化。

1. 単語の粒度 トークン化

単語の粒度 トークン化は、最も直観的な単語分割方法であり、語彙に従ってテキストを分割することを意味します。例:

The quick brown fox jumps over the lazy dog.词粒度Tokenized结果:['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog', '.']

この例では、テキストが独立した単語に分割され、各単語がトークンとして使用され、句読点「.」も独立したトークンとみなされます。 . .

中国語のテキストは通常​​、辞書に含まれる標準語彙コレクション、または単語分割アルゴリズムを通じて認識されるフレーズ、熟語、固有名詞などに従って分割されます。

我喜欢吃苹果。词粒度Tokenized结果:['我', '喜欢', '吃', '苹果', '。']

この中国語のテキストは、「私」、「好き」、「食べる」、「リンゴ」、ピリオド「.」の 5 つの単語に分割されており、それぞれの単語がトークンとして機能します。

2. 文字の粒度 トークン化

文字の粒度 トークン化では、テキストが最小の文字単位に分割され、各文字が個別のトークンとして扱われます。例:

Hello, world!字符粒度Tokenized结果:['H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!']

文字粒度 中国語のトークン化では、独立した中国語の各文字に従ってテキストを分割します。

我喜欢吃苹果。字符粒度Tokenized结果:['我', '喜', '欢', '吃', '苹', '果', '。']

3.サブワード粒度 トークン化

サブワード粒度 トークン化は単語粒度と文字粒度の間であり、テキストを単語と文字の間に分割します。サブワードはトークンとして機能します。一般的なサブワードのトークン化方法には、バイト ペア エンコーディング (BPE)、WordPiece などが含まれます。これらの方法は、テキスト データ内の部分文字列の頻度をカウントすることによって単語分割辞書を自動的に生成します。これにより、一定の意味上の整合性を維持しながら、圏外単語 (OOV) の問題に効果的に対処できます。

helloworld

BPE アルゴリズムでトレーニングした後、生成されたサブワード辞書に次のエントリが含まれているとします。

h, e, l, o, w, r, d, hel, low, wor, orld

サブワード粒度 トークン化された結果:

['hel', 'low', 'orld']

ここで、「helloworld」は、辞書に登場する高頻度の部分文字列の組み合わせである「hel」、「low」、「orld」の 3 つのサブワードに分割されています。 。このセグメント化方法は、未知の単語 (たとえば、「helloworld」は標準的な英語の単語ではありません) を処理できるだけでなく、特定の意味情報を保持することもできます (サブ単語の組み合わせによって元の単語を復元できます)。

中国語では、サブワード粒度トークン化により、テキストが中国語の文字と単語の間のサブワードにトークンとして分割されます。例:

我喜欢吃苹果

BPE アルゴリズムでトレーニングした後、生成されたサブワード辞書に次のエントリが含まれているとします。

我, 喜, 欢, 吃, 苹, 果, 我喜欢, 吃苹果

サブワード粒度 トークン化結果:

['我', '喜欢', '吃', '苹果']

この例では、「リンゴを食べるのが好きです」は、「私」、「好き」、「食べる」、「リンゴ」という 4 つのサブワードに分割されます。サブワード すべて辞書に載っています。英語のサブワードのように漢字をさらに組み合わせることはありませんが、サブワードトークン化手法では、「I like」や「eat apples」などの高頻度の単語の組み合わせを考慮して辞書を生成します。このセグメンテーション方法では、未知の単語を処理しながら単語レベルの意味情報を維持します。

インデックス作成

コーパスまたは語彙が次のように作成されたと仮定します。

vocabulary = {'我': 0,'喜欢': 1,'吃': 2,'苹果': 3,'。': 4}

語彙内のシーケンス内の各トークンのインデックスを見つけることができます。

indexed_tokens = [vocabulary[token] for token in token_sequence]print(indexed_tokens)

出力: [0、1、2、3、4]。

以上がトークン化を 1 つの記事で理解しましょう!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。