メインコンテンツへスキップ
ブログ一覧に戻る
data

テキストマイニング|特徴語抽出の実務入門(日本語の前処理つき)

2025年11月4日
3分で読めます
テキストマイニング|特徴語抽出の実務入門(日本語の前処理つき)

テキストマイニング|特徴語抽出の実務入門(日本語の前処理つき)

レビューやアンケートの自由記述から“その文書らしさ”を表す語を抽出します。日本語は前処理が肝です。

まずはここだけ(やさしい導入)

  • 何をする?: 文書群の“らしさ”を表す語を抽出してテーマを要約
  • いつ使う?: レビュー/アンケート自由記述の要点抽出、改善点の洗い出し
  • どう読む?: 頻度だけでなく TF-IDF やフレーズ(n-gram)で“意味の塊”を見る

用語ミニ辞典(1 行で)

  • 形態素解析: 日本語文を単語(トークン)に分割し品詞を付ける処理
  • ストップワード: 意味に寄与しにくい語(例: 「する」「こと」)
  • TF-IDF: 出現頻度 × 希少性で“その文書らしさ”を測る指標
  • n-gram: 連続語(例: 「操作 性」→ bi-gram)でフレーズを扱う

最小コード(TF-IDF)

from sklearn.feature_extraction.text import TfidfVectorizer

docs = [
  'デザインがきれいで使いやすい',
  '価格が高いが性能は十分',
  '配送が早くて満足',
]

vectorizer = TfidfVectorizer(max_features=10)
X = vectorizer.fit_transform(docs)
print(vectorizer.get_feature_names_out())
print(X.toarray())

日本語前処理の要点

  • 形態素解析(MeCab/Sudachi)で分かち書き
  • 品詞(名詞・形容詞・動詞の原形)を選択
  • ストップワード・表記ゆれの統一

実務ケーススタディ(アプリレビューの要点抽出)

目的: App ストアのレビューから、改善要望と称賛ポイントを抽出して優先度を決める。

  1. 前処理

  • 形態素解析(名詞/形容詞/動詞の原形)+ユーザー辞書で固有語を拾う
  • ストップワード・表記ゆれ(例: 「UI/ユーザインタフェース」)を統一

  1. 特徴語の抽出

  • TF-IDF 上位、bi-gram 上位を併用して“フレーズ”を拾う

  1. 可視化

  • 上位語の棒グラフ、カテゴリ(不具合/使いやすさ/価格)別にまとめる

最小コード(形態素解析関数+n-gram)

from sklearn.feature_extraction.text import TfidfVectorizer

# 例: 形態素解析器に応じて tokenize_jp を用意(MeCab/Sudachi/Janome など)
def tokenize_jp(text: str) -> list[str]:
    # 実務では形態素解析器で名詞/形容詞/動詞原形を返す
    return text.split()  # ダミー実装(本番は置き換え)

docs = [
  'UI が 直感的 で 操作 し やすい',
  '価格 が 高い が 性能 は 十分',
  '配送 が 早く て 満足'
]

vectorizer = TfidfVectorizer(tokenizer=tokenize_jp, ngram_range=(1,2), max_features=20)
X = vectorizer.fit_transform(docs)
print(vectorizer.get_feature_names_out())

練習問題(理解を定着)

  1. 一般語が上位に並ぶ。何を見直す?

  • ヒント: ストップワード/品詞/ユーザー辞書、n-gram の導入

  1. 長い製品名が分割される。どう対応する?

  • ヒント: 固有表現をユーザー辞書に登録、正規表現で前処理

  1. ドメイン固有語が漏れる。何を追加する?

  • ヒント: ルールベース抽出やキーフレーズ抽出手法(YAKE/RAKE)を併用

関連と次の一歩

よくある質問(FAQ)

  • Q: 日本語で精度が出ない
  • A: 形態素辞書・ユーザー辞書の整備、品詞選択/正規化の見直し
  • Q: ドメイン固有語の漏れ
  • A: 固有表現抽出やルールベースのカスタム抽出と併用


テキストマイニング・キーワード抽出についてのご相談はこちら

次の一手

状況に合わせて、選んでください。