トークン化は、特に言語モデルを扱う場合の自然言語処理 (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!"
トークン化プロセスを段階的に見てみましょう:
トークナイザーを直接呼び出すと、テキストが処理され、いくつかの主要コンポーネントが出力されます。
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)
トークナイザーが文を個々のトークンにどのように分割するかに興味がある場合は、 tokenize() メソッドを使用できます。これにより、基礎となる ID のないトークンのリストが得られます:
sentence = "I love you! I love you! I love you!"
出力:
res = tokenizer(sentence) print(res)
トークン化には、文を意味のある小さな単位に分割することが含まれることに注意してください。また、大文字と小文字を区別しない distilbert-base-uncased モデルを使用しているため、トークナイザーはすべての文字を小文字に変換します。
トークンを取得したら、次のステップは、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 は、モデルが処理に使用する実際の入力です。
最後に、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 に気づいたかもしれません。これらのトークンは、文の始まりと終わりを示すために多くのモデルで使用される特別なマーカーです。具体的には:
これらの特別なトークンは、モデルが入力テキストの境界を理解するのに役立ちます。
前述したように、attention_mask は、モデルが実際のトークンとパディング トークンを区別するのに役立ちます。この場合、attention_mask は 1 のリストであり、すべてのトークンに注目する必要があることを示します。パディング トークンがある場合は、モデルにそれらを無視するように指示するマスク内にゼロが表示されます。
要約すると、トークン化はテキストを機械学習モデルが処理できる形式に変換するための重要なステップです。 Hugging Face のトークナイザーは、次のようなさまざまなタスクを処理します。
トークナイザーがどのように機能するかを理解することは、事前トレーニングされたモデルを効果的に活用するための鍵となります。テキストを小さなトークンに分割することで、モデルが構造化された効率的な方法で入力を処理できるようになります。センチメント分析、テキスト生成、またはその他の NLP タスクにモデルを使用しているかどうかに関係なく、トークナイザーはパイプラインで不可欠なツールです。
以上がトークナイゼーションを理解する: 顔を抱きしめるトークナイザーの詳細の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。