2026年10月8日に、WorksApplications/SudachiPyの現行ページを再読しました。ページ上ではリポジトリが2023年3月にarchiveされread-onlyとなっており、READMEはSudachiPy 0.5系を扱い、0.6以降はSudachi.rsで開発されると案内しています。辞書は別パッケージで導入し、CLIとPython APIでA・B・Cの分割モードや品詞・正規化形などを取得します。したがって、形態素解析の結果は辞書・版・分割モード・設定を記録して比較し、上位語やTF-IDFを自動的な重要度の結論にはしません。
30秒で要点
特徴語抽出は「よく出る語」を並べる作業ではありません。日本語の分割、品詞、表記、ストップワード、文書の分母を固定し、TF-IDFなどの値を文書らしさの候補として読む方法です。
- 形態素解析器、辞書、分割モード、品詞を記録する
- ストップワードと表記統一を目的・コーパス別に検証する
- TF-IDFの分母、文書単位、期間、重複を揃える
- 上位語を重要度・因果・顧客比率と同一視しない
- 原文、共起、行動データで仮説を確認し、設定を再現できる形で残す
1. 日本語を語へ分ける
英語のように空白で単語を区切る前提を、日本語へそのまま移せません。MeCabは形態素解析器として、SudachiPyはSudachiのPython実装として、語の境界や品詞を得るために使えます。どちらを選ぶかより、辞書、分割モード、固有名詞、数字、記号を固定して比較できることが重要です。
表が収まらない場合は、横にスクロールできます
| 設定 | 例 | 記録する理由 |
|---|---|---|
| 分割 | 短単位・長単位 | 語の粒度が変わる |
| 品詞 | 名詞・動詞・形容詞 | 上位語の意味が変わる |
| 表記 | 全角半角、大小、揺れ | 同じ語の分散を防ぐ |
| 固有名詞 | 製品名・社名 | 重要語を消さない |
| 否定 | ない、未、非 | 意味を反転させない |
形態素解析の誤りをゼロにすることはできません。辞書へ追加した語、誤分割、除外の理由を入力データの版と一緒に残します。
2. ストップワードと品詞を検証する
「する」「こと」のように多くの文書で現れる語を除くと、上位語が読みやすくなる場合があります。一方で、否定、比較、契約条件、業界の一般語は、目的によって重要です。
表が収まらない場合は、横にスクロールできます
| 操作 | 見えるもの | リスク |
|---|---|---|
| 全語 | 文体・頻度 | 一般語に埋もれる |
| 名詞中心 | 題材・対象 | 動作や評価を落とす |
| 品詞を複数 | 状態・行為 | 語彙が増え比較が難しい |
| 除外語を追加 | ノイズ低減 | 固有の意味を消す |
候補辞書を一度で確定せず、除外前後の上位語、原文、文書別の分布を比較します。テスト用の少数文書だけでストップワードを決めると、別期間の分析へ適用できないことがあります。
3. TF-IDFを文書らしさとして使う
scikit-learnの特徴量抽出ガイドとTfidfVectorizerの仕様は、文書を語の重みへ変換する設定を提供します。TF-IDFは、ある文書での出現と、文書群全体での希少性を組み合わせるため、どの文書単位と分母を採用したかで値が変わります。from sklearn.feature_extraction.text import TfidfVectorizer
docs = [
'価格 高い 性能',
'価格 性能 十分',
'操作 使いやすい 性能',
]
vectorizer = TfidfVectorizer(token_pattern=r'(?u)\b\S+\b')
matrix = vectorizer.fit_transform(docs)
terms = vectorizer.get_feature_names_out()
for row, doc in enumerate(docs):
scores = matrix[row].toarray().ravel()
top = sorted(zip(terms, scores), key=lambda x: x[1], reverse=True)[:2]
print(doc, top)
コードはすでに空白で分けた語を入力にしています。日本語の実務では、形態素解析後のトークンを同じ形式へ渡します。値の高い語は「その文書で相対的に特徴的」という意味であり、顧客全体の重要度ではありません。
4. フレーズと原文へ戻る
一語だけでは「操作 性能」のような意味の塊を失います。隣接するn-gram、固有表現、共起を追加で計算し、上位語がどの文脈で使われたかを原文で確認します。
表が収まらない場合は、横にスクロールできます
| 確認 | 質問 |
|---|---|
| 文脈 | 肯定、否定、引用、条件のどれか |
| 分母 | 何文書中の何文書に現れたか |
| 期間 | キャンペーンや仕様変更の前後か |
| 偏り | 同じ投稿、テンプレート、担当者に偏らないか |
| 行動 | 上位語の群で利用や離脱が違うか |
特徴語のリストをそのまま施策へ変換せず、どの仮説を追加質問やログで確かめるかを書きます。
5. 合成ケースで再現性を確認する
合成のレビュー3文書を同じ辞書と設定で処理し、上位語を記録します。次の月に別の文書を足すとIDFが変わるため、前月と単純比較する前にコーパスの範囲と設定を固定します。ここでの文書とスコアは説明用で、実在顧客の傾向ではありません。
6. よくある失敗
- 日本語を空白分割だけで処理し、語境界や品詞を記録しない
- 一般語を一律に除き、否定・固有名詞・ドメイン語を失う
- TF-IDFの分母・文書単位・期間を変えたまま順位を比較する
- 上位語を顧客全体の重要度、原因、満足度と断定する
- 原文、共起、別データへ戻らず、リストだけで施策を決める
7. 特徴語は結論ではなく、確かめる候補
特徴語抽出は、前処理と分母をそろえて文書らしさの候補を作る手順です。形態素解析、除外、TF-IDF、n-gram、原文確認の版を残し、共起や行動データで仮説を確かめます。
共起の行列化は共起ネットワークの作り方、少数データの不確実性は小規模データ分析ガイドも参照してください。