NLPとは何か
自然言語処理(Natural Language Processing)は、人間の言語をコンピューターで理解・生成する技術です。ChatGPTの登場でNLPへの注目が急増し、エンジニアにとって必須知識となりつつあります。
テキスト前処理の基本
import re
import MeCab # 日本語形態素解析
from collections import Counter
text = "機械学習を使った自然言語処理の入門記事です。"
# MeCabで形態素解析(日本語)
tagger = MeCab.Tagger()
node = tagger.parseToNode(text)
words = []
while node:
if node.feature.split(',')[0] in ['名詞', '動詞', '形容詞']:
words.append(node.surface)
node = node.next
print(Counter(words).most_common(10))
文書のベクトル化
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [
"機械学習の入門記事",
"自然言語処理の基礎",
"ディープラーニングの応用"
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
TF-IDF:単語の重要度を文書全体での希少性で補正します。頻出する汎用語の重みを下げ、特徴的な語を際立たせます。
Word2Vec:意味をベクトルで表現
from gensim.models import Word2Vec
sentences = [["機械", "学習", "入門"],
["自然", "言語", "処理"],
["深層", "学習", "応用"]]
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1)
# 類似語検索
similar = model.wv.most_similar("機械")
Transformerとその後
| 技術 | 特徴 |
|---|---|
| RNN/LSTM | 系列データ処理(勾配消失問題あり) |
| Attention | 重要な部分に注目する仕組み |
| Transformer | Attention機構を全面採用 |
| BERT | 双方向学習・文脈理解 |
| GPT | 自己回帰型生成モデル |
HuggingFace Transformersで実践
from transformers import pipeline
# 感情分析
sentiment = pipeline("sentiment-analysis",
model="koheiduck/bert-japanese-finetuned-sentiment")
result = sentiment("この製品はとても素晴らしいです!")
print(result) # [{'label': 'POSITIVE', 'score': 0.99}]
# テキスト生成
generator = pipeline("text-generation", model="gpt2")
text = generator("AIの未来は", max_length=50)
主な応用分野
- 感情分析:レビュー・SNSの極性判定
- 文書分類:スパム・カテゴリ分類
- 機械翻訳:DeepL・Google翻訳の根幹技術
- 情報抽出:固有表現認識(人名・地名・日付)
- 質問応答:チャットボット・RAGシステム
LLMの活用が進む現代でも、前処理や基礎NLPの理解は効果的なプロンプト設計やRAG構築に不可欠です。




