テキストデータの前処理(ストップワードの除去、トークナイゼーション)
テキストデータの前処理は、自然言語処理(NLP)における重要な工程です。テキストをそのまま機械学習モデルへ入力するのではなく、不要な単語を除去したり、単語単位に分割したりすることで、分析しやすい形へ変換します。本記事では、ストップワードの除去とトークナイゼーション(分かち書き)について解説します。
テキストデータの前処理の流れを図で理解する

テキストデータの前処理とは
テキストデータの前処理とは、文章を機械学習や分析で利用しやすい形式へ変換する作業です。
自然言語処理では、次のような前処理がよく行われます。
- トークナイゼーション(単語や文への分割)
- ストップワードの除去
- ステミング(語幹抽出)
- レンマタイゼーション(原形化)
- 記号や不要文字の除去
この記事では、特に利用頻度の高いストップワードの除去とトークナイゼーションを取り上げます。
ストップワードの除去
ストップワードとは、文章内で頻繁に登場するものの、意味的な情報量が少ない単語のことです。
英語では次のような単語が代表例です。
- a
- the
- is
- are
- of
- and
これらの単語を除去することで、モデルが重要な単語へ注目しやすくなります。
ストップワード除去の流れ
- 文章を単語に分割する
- ストップワード一覧を用意する
- 一致する単語を除外する
- 意味のある単語だけを残す
| 処理前 | 処理後 |
|---|---|
| This is a sample sentence showing the process. | sample sentence showing process |
ストップワード除去の実装
Pythonでは、nltkライブラリを使ってストップワードを除去できます。
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
nltk.download('stopwords')
nltk.download('punkt')
stop_words = set(stopwords.words('english'))
text = "This is a sample sentence, showing off the stop words filtration."
words = word_tokenize(text)
filtered_words = [
word for word in words
if word.lower() not in stop_words
]
print(filtered_words)
実行すると、ストップワードを除いた単語のみが出力されます。
トークナイゼーション(単語の分割)
トークナイゼーションとは、文章を単語や文などの単位に分割する処理です。
機械学習モデルは文章をそのまま理解できないため、まず意味のある単位へ分割する必要があります。
| 入力文章 | トークン化後 |
|---|---|
| I like machine learning. | I / like / machine / learning |
単語トークナイゼーションの実装
from nltk.tokenize import word_tokenize
text = "Tokenization is the process of breaking a sentence into words."
tokens = word_tokenize(text)
print(tokens)
この処理によって、文章が単語単位のリストへ変換されます。
文単位のトークナイゼーション
文章を文ごとに分割したい場合は、文トークナイゼーションを利用します。
from nltk.tokenize import sent_tokenize
text = """
Tokenization is the process of breaking a sentence into words.
It can also be used to split sentences.
"""
sentences = sent_tokenize(text)
print(sentences)
長い文書を段落や文ごとに分析する場合によく利用されます。
ストップワード除去とトークナイゼーションの関係
通常は、まずトークナイゼーションを行い、その後でストップワードを除去します。
| 処理順序 | 内容 |
|---|---|
| ① トークナイゼーション | 文章を単語や文へ分割する |
| ② ストップワード除去 | 不要な単語を取り除く |
| ③ 特徴量化 | 数値データへ変換する |
この流れによって、機械学習モデルが扱いやすいデータを作成できます。
前処理を行うメリット
- 不要な単語を除去できる
- 文章の情報量を整理できる
- 学習効率を向上できる
- ノイズの影響を減らせる
- 特徴量の品質を高められる
テキスト前処理の注意点
- 言語ごとの対応: ストップワードは言語ごとに異なります。
- 専門用語の扱い: 分野によっては一般的なストップワードが重要な意味を持つ場合があります。
- 日本語特有の処理: 日本語は単語の区切りがないため、MeCabやJanomeなどの形態素解析が必要になることがあります。
- 除去しすぎに注意: 不要と思われる単語でも分析に有用な場合があります。
まとめ
ストップワードの除去とトークナイゼーションは、自然言語処理における基本的な前処理です。まず文章を単語や文へ分割し、その後に不要な単語を除去することで、機械学習モデルが重要な情報を学習しやすくなります。適切な前処理を行うことで、テキスト分析や自然言語処理の精度向上につながります。