テキストデータの前処理 | データ前処理の重要性 | Pythonによる機械学習を学ぶ

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
ad. 価格範囲を指定して商品を探せます

テキストデータの前処理(ストップワードの除去、トークナイゼーション)

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

テキストデータの前処理の流れを図で理解する

テキストデータの前処理の流れを図で理解する

テキストデータの前処理とは

テキストデータの前処理とは、文章を機械学習や分析で利用しやすい形式へ変換する作業です。

自然言語処理では、次のような前処理がよく行われます。

  • トークナイゼーション(単語や文への分割)
  • ストップワードの除去
  • ステミング(語幹抽出)
  • レンマタイゼーション(原形化)
  • 記号や不要文字の除去

この記事では、特に利用頻度の高いストップワードの除去とトークナイゼーションを取り上げます。

ストップワードの除去

ストップワードとは、文章内で頻繁に登場するものの、意味的な情報量が少ない単語のことです。

英語では次のような単語が代表例です。

  • a
  • the
  • is
  • are
  • of
  • and

これらの単語を除去することで、モデルが重要な単語へ注目しやすくなります。

ストップワード除去の流れ

  1. 文章を単語に分割する
  2. ストップワード一覧を用意する
  3. 一致する単語を除外する
  4. 意味のある単語だけを残す
処理前 処理後
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などの形態素解析が必要になることがあります。
  • 除去しすぎに注意: 不要と思われる単語でも分析に有用な場合があります。

まとめ

ストップワードの除去とトークナイゼーションは、自然言語処理における基本的な前処理です。まず文章を単語や文へ分割し、その後に不要な単語を除去することで、機械学習モデルが重要な情報を学習しやすくなります。適切な前処理を行うことで、テキスト分析や自然言語処理の精度向上につながります。