テキストのトークン数を確認する方法:LLMチューニングの基礎知識

投稿更新日: 2025/6/6

サムネイル

LLM(大規模言語モデル)のチューニングでは、トレーニングデータの品質だけでなく、トークン数が重要な役割を果たします。トークン数を把握する事で、データの適切な量を判断し、過学習を防ぐことが可能になります。この記事では、トークン数を確認するための主要なツールとその使い方を解説します。


トークン数を確認する理由

トークンとは、テキストを小さな単位に分割したものです。たとえば、単語や句読点、記号などが該当します。LLMのトレーニングでは、以下のような理由でトークン数を知ることが重要です。

  1. 適切なトレーニング量の判断:トークン数が少ないとモデルが十分な学習を行えず、性能が低下する可能性があります。一方、データが多すぎると計算資源を無駄に消費します。
  2. モデルの特性に合わせたチューニング:モデルごとに最適なトークン数が異なるため、トークン化に対応したツールを使うことで効率的な学習を実現できます。

トークン数を確認する手軽な方法

以下では、トークン数を確認するための主要な方法を紹介します。それぞれのツールは特定の用途やモデルに適しているため、目的に応じて使い分けると良いでしょう。

1. tiktoken

特徴

tiktokenはOpenAIが提供するトークナイザーで、GPTシリーズ向けに設計されています。モデルのエンコーディング設定を変更することで、異なるモデルに対応可能です。

使用方法

インストール

pip install tiktoken

ソースコード

import tiktoken

def count_tokens(text):
    tokenizer = tiktoken.get_encoding("o200k_base") # gpt-4oモデル向け
    tokens = tokenizer.encode(text)
    return len(tokens)

# テキストファイルを読み込みトークン数を確認
input_file_path = './text.txt'
with open(input_file_path, 'r', encoding='utf-8') as file:
    raw_text = file.read()

token_len = count_tokens(raw_text)
print(token_len)

結果例

  • o200k_baseでは1143トークン
  • cl100k_baseに変更すると1420トークン

2. Transformers

特徴

Hugging Faceのtransformersライブラリは、多くのモデルに対応したトークナイザーを提供しています。日本語モデルにも対応しているため、多言語テキストの解析に便利です。

使用方法

インストール

pip install transformers

ソースコード

from transformers import AutoTokenizer

def count_tokens(text):
    tokenizer = AutoTokenizer.from_pretrained("llm-jp/llm-jp-3-3.7b-instruct")
    tokens = tokenizer.encode(text)
    return len(tokens)

# テキストファイルを読み込みトークン数を確認
input_file_path = './text.txt'
with open(input_file_path, 'r', encoding='utf-8') as file:
    raw_text = file.read()

token_len = count_tokens(raw_text)
print(token_len)

結果例

  • llm-jp-3-3.7b-instructモデルでは991トークン
  • elyza/ELYZA-japanese-Llama-2-7b-instructでは1556トークン

3. SpaCy

特徴

spaCyは汎用的なNLPツールで、日本語を含む多言語のトークン化が可能です。LLM専用ではないため、簡易的な確認に適しています。

使用方法

インストール

pip install spacy
python -m spacy download ja_core_news_sm

ソースコード

import spacy

def count_tokens(text):
    nlp = spacy.load("ja_core_news_sm")
    doc = nlp(text)
    tokens = [token.text for token in doc]
    return len(tokens)

# テキストファイルを読み込みトークン数を確認
input_file_path = './text.txt'
with open(input_file_path, 'r', encoding='utf-8') as file:
    raw_text = file.read()

token_len = count_tokens(raw_text)
print(token_len)

結果例

  • トークン数は1118

4. MeCab

特徴

MeCabは日本語形態素解析ツールで、fugashiを通じてPythonから利用できます。日本語テキストの解析に特化しており、詳細なトークン化が可能です。

使用方法

インストール

pip install 'fugashi[unidic]'
python -m unidic download

ソースコード

import fugashi

def count_tokens(text):
    tagger = fugashi.Tagger()
    tokens = [word.surface for word in tagger(text)]
    return len(tokens)

# テキストファイルを読み込みトークン数を確認
input_file_path = './text.txt'
with open(input_file_path, 'r', encoding='utf-8') as file:
    raw_text = file.read()

token_len = count_tokens(raw_text)
print(token_len)

結果例

  • トークン数は1028

結論:目的に応じたツール選びを

トークン数を確認する際のポイントをまとめると、以下のようになります。

  • LLM用のトークナイザーが必要ならtiktokentransformersを使用
  • 汎用的な解析ならspaCyMeCabが便利

トークン数がわかれば、トレーニングデータをどの程度追加する必要があるかや、モデルの特性に合った学習が可能になります。

手軽にトークン数を確認し、効率的なLLM開発を目指しましょう。


この記事をシェアする

合同会社raisexでは一緒に働く仲間を募集中です。

ご興味のある方は以下の採用情報をご確認ください。