はじめに
Hugging FaceはAIモデルのハブとして世界最大のプラットフォームです。BERTやGPT等の事前学習済みモデルが数十万件公開されており、数行のコードで最先端のNLPが使えます。日本語NLPに特化した実装方法を解説します。
インストール
pip install transformers torch sentencepiece fugashi ipadic
日本語テキスト分類(感情分析)
from transformers import pipeline
# 日本語感情分析パイプライン
classifier = pipeline(
'text-classification',
model='koheiduck/bert-japanese-finetuned-sentiment'
)
texts = [
'この製品は素晴らしいです!また買います。',
'品質が悪くて最悪でした。二度と買いません。',
'普通でした。特に印象はありません。'
]
for text in texts:
result = classifier(text)[0]
print(f'{result["label"]:10s} ({result["score"]:.3f}): {text}')
日本語BERTで文書の埋め込みベクトルを取得
from transformers import AutoTokenizer, AutoModel
import torch
import numpy as np
model_name = 'cl-tohoku/bert-base-japanese-whole-word-masking'
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModel.from_pretrained(model_name)
def get_embedding(text: str) -> np.ndarray:
inputs = tokenizer(text, return_tensors='pt', truncation=True,
max_length=128, padding=True)
with torch.no_grad():
outputs = model(**inputs)
# [CLS]トークンの出力を文書ベクトルとして使用
embedding = outputs.last_hidden_state[:, 0, :].numpy()
return embedding.squeeze()
# テキストのベクトル化
texts = ['機械学習の転職', 'AIエンジニアになりたい', '今日の天気は晴れ']
embeddings = [get_embedding(t) for t in texts]
# コサイン類似度で意味の近さを確認
from sklearn.metrics.pairwise import cosine_similarity
sim_matrix = cosine_similarity(embeddings)
print('類似度マトリックス:')
for i, t1 in enumerate(texts):
for j, t2 in enumerate(texts):
print(f' {t1[:10]} vs {t2[:10]}: {sim_matrix[i,j]:.3f}')
ファインチューニング(テキスト分類)
from transformers import (
AutoTokenizer, AutoModelForSequenceClassification,
TrainingArguments, Trainer
)
from datasets import Dataset
import numpy as np
model_name = 'cl-tohoku/bert-base-japanese'
tokenizer = AutoTokenizer.from_pretrained(model_name)
# データの準備
train_data = {
'text': ['良い商品です', '悪い商品です', '普通でした'],
'label': [1, 0, 1] # 1:ポジ, 0:ネガ
}
train_dataset = Dataset.from_dict(train_data)
# トークナイズ
def tokenize(examples):
return tokenizer(examples['text'], truncation=True, max_length=64, padding='max_length')
train_dataset = train_dataset.map(tokenize)
# モデルのロード
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)
# 学習設定
training_args = TrainingArguments(
output_dir='./results',
num_train_epochs=3,
per_device_train_batch_size=8,
save_strategy='no',
report_to='none'
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset
)
trainer.train()
まとめ
Hugging FaceのTransformersを使えば、BERTによる日本語テキスト分類・埋め込みベクトル生成・ファインチューニングが数十行で実装できます。日本語NLPには東北大学BERTが最もよく使われています。RAGの埋め込みモデルとしてもTransformersは活用されており、LLM活用エンジニアとして必須のライブラリです。
💼 ITエンジニア転職特化
自分らしく働けるエンジニア転職を目指すなら【strategy career】
年収1000万・残業月30時間以下・リモート可の求人多数
※アフィリエイト広告を含みます
![]()
※本記事にはアフィリエイトリンクが含まれます。


コメント