ホームページ >バックエンド開発 >Python チュートリアル >トークナイゼーションを理解する: 顔を抱きしめるトークナイザーの詳細

トークナイゼーションを理解する: 顔を抱きしめるトークナイザーの詳細

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-05 19:25:41952ブラウズ

Understanding Tokenization: A Deep Dive into Tokenizers with Hugging Face

トークン化は、特に言語モデルを扱う場合の自然言語処理 (NLP) の基本概念です。この記事では、トークナイザーの役割、仕組み、そして Hugging Face のトランスフォーマー ライブラリ [https://huggingface.co/docs/transformers/index] をさまざまなアプリケーションに使用してトークナイザーを活用する方法について説明します。

トークナイザーとは何ですか?

トークナイザーはその中核として、生のテキストをトークンと呼ばれる小さな単位に分解します。これらのトークンは、使用されているトークナイザーのタイプに応じて、単語、サブワード、または文字を表すことができます。トークン化の目標は、人間が読めるテキストを、機械学習モデルによって解釈しやすい形式に変換することです。

ほとんどのモデルはテキストを直接理解できないため、トークン化は重要です。代わりに、予測を行うには数値が必要です。ここでトークナイザーが登場します。トークナイザーはテキストを受け取り、それを処理し、モデルが使用できる数学的表現を出力します。

この投稿では、Hugging Face の事前トレーニング済みモデルを使用してトークン化がどのように機能するかを説明し、トランスフォーマー ライブラリで利用可能なさまざまなメソッドを検討し、トークン化がセンチメント分析などの下流タスクにどのような影響を与えるかを見ていきます。

モデルとトークナイザーのセットアップ

まず、Transformers パッケージから必要なライブラリをインポートし、事前トレーニングされたモデルをロードしましょう。感情分析用に微調整された「DistilBERT」モデルを使用します。

from transformers import pipeline
from transformers import AutoTokenizer, AutoModelForSequenceClassification

# Load the pre-trained model and tokenizer
model_name = "distilbert-base-uncased-finetuned-sst-2-english"
model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# Create the classifier pipeline
classifier = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)

テキストのトークン化

モデルとトークナイザーを設定したら、簡単な文のトークナイズを開始できます。例文は次のとおりです:

sentence = "I love you! I love you! I love you!"

トークン化プロセスを段階的に見てみましょう:

1. トークナイザーの出力: 入力 ID とアテンション マスク

トークナイザーを直接呼び出すと、テキストが処理され、いくつかの主要コンポーネントが出力されます。

  • input_ids: トークンを表す整数 ID のリスト。各トークンは、モデルのボキャブラリ内のエントリに対応します。
  • attention_mask: モデルがどのトークンに注意を払う必要があるかを示す 1 と 0 のリスト。これは、パディングを処理する場合に特に便利です。
res = tokenizer(sentence)
print(res)

出力:

from transformers import pipeline
from transformers import AutoTokenizer, AutoModelForSequenceClassification

# Load the pre-trained model and tokenizer
model_name = "distilbert-base-uncased-finetuned-sst-2-english"
model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# Create the classifier pipeline
classifier = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)
  • input_ids: 整数はトークンを表します。たとえば、1045 は「I」、2293 は「love」、999 は「!」に対応します。
  • attention_mask: これらは、すべてのトークンに注意を払う必要があることを示します。パディング トークンがあった場合は、このリストにゼロが表示され、無視する必要があることを示します。

2. トークン化

トークナイザーが文を個々のトークンにどのように分割するかに興味がある場合は、 tokenize() メソッドを使用できます。これにより、基礎となる ID のないトークンのリストが得られます:

sentence = "I love you! I love you! I love you!"

出力:

res = tokenizer(sentence)
print(res)

トークン化には、文を意味のある小さな単位に分割することが含まれることに注意してください。また、大文字と小文字を区別しない distilbert-base-uncased モデルを使用しているため、トークナイザーはすべての文字を小文字に変換します。

3. トークンを ID に変換する

トークンを取得したら、次のステップは、convert_tokens_to_ids() メソッドを使用してトークンを対応する整数 ID に変換することです。

{
    'input_ids': [101, 1045, 2293, 2017, 999, 1045, 2293, 2017, 999, 1045, 2293, 2017, 999, 102],
    'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
}

出力:

tokens = tokenizer.tokenize(sentence)
print(tokens)

各トークンには、モデルの語彙でそれを表す一意の整数 ID があります。これらの ID は、モデルが処理に使用する実際の入力です。

4. ID をデコードしてテキストに戻す

最後に、decode() メソッドを使用して、トークン ID を人間が判読できる文字列にデコードできます。

['i', 'love', 'you', '!', 'i', 'love', 'you', '!', 'i', 'love', 'you', '!']

出力:

ids = tokenizer.convert_tokens_to_ids(tokens)
print(ids)

デコードされた文字列は、「大文字小文字なし」モデルの標準動作である大文字の削除を除いて、元の入力に非常に近いことに注意してください。

特別なトークンを理解する

input_ids の出力で、2 つの特別なトークン 101 と 102 に気づいたかもしれません。これらのトークンは、文の始まりと終わりを示すために多くのモデルで使用される特別なマーカーです。具体的には:

  • 101: 文の始まりを示します。
  • 102: 文の終わりを示します。

これらの特別なトークンは、モデルが入力テキストの境界を理解するのに役立ちます。

アテンションマスク

前述したように、attention_mask は、モデルが実際のトークンとパディング トークンを区別するのに役立ちます。この場合、attention_mask は 1 のリストであり、すべてのトークンに注目する必要があることを示します。パディング トークンがある場合は、モデルにそれらを無視するように指示するマスク内にゼロが表示されます。

トークナイザーの概要

要約すると、トークン化はテキストを機械学習モデルが処理できる形式に変換するための重要なステップです。 Hugging Face のトークナイザーは、次のようなさまざまなタスクを処理します。

  • テキストをトークンに変換します。
  • トークンを一意の整数 ID にマッピングします。
  • どのトークンが重要かを知るためにモデル用のアテンション マスクを生成します。

結論

トークナイザーがどのように機能するかを理解することは、事前トレーニングされたモデルを効果的に活用するための鍵となります。テキストを小さなトークンに分割することで、モデルが構造化された効率的な方法で入力を処理できるようになります。センチメント分析、テキスト生成、またはその他の NLP タスクにモデルを使用しているかどうかに関係なく、トークナイザーはパイプラインで不可欠なツールです。

以上がトークナイゼーションを理解する: 顔を抱きしめるトークナイザーの詳細の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。