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

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 までご連絡ください。
Pythonリストに要素をどのように追加しますか?Pythonリストに要素をどのように追加しますか?May 04, 2025 am 12:17 AM

toAppendElementStoapyThonList、usetheappend()methodforsingleelements、extend()formultipleElements、andinsert()forspecificopsitions.1)useappend()foraddingoneElementatheend.2)useextend()toaddmultipleelementseffictience.3)

Pythonリストをどのように作成しますか?例を挙げてください。Pythonリストをどのように作成しますか?例を挙げてください。May 04, 2025 am 12:16 AM

To CreateapythonList、usesquareBrackets []およびSeparateItemswithcommas.1)listsaredynamicandcanholdmixdatatypes.2)useappend()、remaid()、andslicingformanipulation.3)listcompreheNsionsionsionsionsionsionsionsionsionsionsionsionsionsionsionsionsionsientionforcreating.4)

数値データの効率的なストレージと処理が重要な実際のユースケースについて話し合います。数値データの効率的なストレージと処理が重要な実際のユースケースについて話し合います。May 04, 2025 am 12:11 AM

金融、科学研究、医療、およびAIの分野では、数値データを効率的に保存および処理することが重要です。 1)財務では、メモリマッピングされたファイルとnumpyライブラリを使用すると、データ処理速度が大幅に向上する可能性があります。 2)科学研究の分野では、HDF5ファイルはデータストレージと取得用に最適化されています。 3)医療では、インデックス作成やパーティション化などのデータベース最適化テクノロジーがデータのパフォーマンスを向上させます。 4)AIでは、データシャーディングと分散トレーニングがモデルトレーニングを加速します。システムのパフォーマンスとスケーラビリティは、適切なツールとテクノロジーを選択し、ストレージと処理速度の間のトレードオフを検討することにより、大幅に改善できます。

Pythonアレイをどのように作成しますか?例を挙げてください。Pythonアレイをどのように作成しますか?例を挙げてください。May 04, 2025 am 12:10 AM

pythonarraysarasarecreatedusingthearraymodule、notbuilt-inlikelists.1)importthearraymodule.2)specifytheTypecode、emg。、 'i'forintegers.3)Arraysofferbettermemoreefficiency forhomogeneousdatabutlasefutablethanlists。

Shebangラインを使用してPythonインタープリターを指定するための選択肢は何ですか?Shebangラインを使用してPythonインタープリターを指定するための選択肢は何ですか?May 04, 2025 am 12:07 AM

Shebangラインに加えて、Pythonインタープリターを指定するには多くの方法があります。1。コマンドラインから直接Pythonコマンドを使用します。 2。バッチファイルまたはシェルスクリプトを使用します。 3. makeやcmakeなどのビルドツールを使用します。 4. Invokeなどのタスクランナーを使用します。各方法には利点と短所があり、プロジェクトのニーズに合った方法を選択することが重要です。

リストと配列の選択は、大規模なデータセットを扱うPythonアプリケーションの全体的なパフォーマンスにどのように影響しますか?リストと配列の選択は、大規模なデータセットを扱うPythonアプリケーションの全体的なパフォーマンスにどのように影響しますか?May 03, 2025 am 12:11 AM

forhandlinglaredataSetsinpython、usenumpyArrays forbetterperformance.1)numpyarraysarememory-effictientandfasterfornumericaloperations.2)nusinnnnedarytypeconversions.3)レバレッジベクトル化は、測定済みのマネージメーシェイメージーウェイズデイタイです

Pythonのリストと配列にメモリがどのように割り当てられるかを説明します。Pythonのリストと配列にメモリがどのように割り当てられるかを説明します。May 03, 2025 am 12:10 AM

inpython、listsusedynamicmemoryallocation with allocation、whilenumpyArraysalocatefixedmemory.1)listsallocatemorememorythanneededededinitivative.2)numpyArrayasallocateexactmemoryforements、rededicablebutlessflexibilityを提供します。

Pythonアレイ内の要素のデータ型をどのように指定しますか?Pythonアレイ内の要素のデータ型をどのように指定しますか?May 03, 2025 am 12:06 AM

inpython、youcanspecthedatatypeyfelemeremodelernspant.1)usenpynernrump.1)usenpynerp.dloatp.ploatm64、フォーマーpreciscontrolatatypes。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター