テキストから特徴量抽出
文章を数値の列に変えます。 機械学習は文字をそのまま扱えないので、単語の出現を数値にしてからモデルに入れます。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | データ |
Spark エンジンでは動きません。
行の数は変わりません。 入力の列はすべて残り、その右に単語の種類だけ列が増えます。
増える列の名前
| 処理 | できる列 |
|---|---|
| Bag of Words | bow_<単語> |
| TF-IDF | tfidf_<単語> |
単語は文字として並べた昇順に並びます。元の列も残るので、不要なら列選択/削除で落としてください。
設定項目
- 処理対象列を選択必須
- 分かち書き済みの列。文字列の列だけ選べます。1 列だけです。
- 処理を選択必須
- Bag of Words(既定)か TF-IDF。選んだ側によって、以降の項目が変わります。
オプション(両方に出るもの)
- n%以上の文書で出現する単語を対象とする
- 既定は
0。まれすぎる単語を外します。単位は % です。 - n%以下の文書で出現する単語を対象とする
- 既定は
100。どの文書にも出る単語を外します。単位は % です。 - 出現頻度トップn番目までの単語を対象とする
- 空のままだと制限しません。入れると、出現回数の多い順にその数だけ残します。
Bag of Words のときだけ出るもの
- 出現回数を二値化する
- 既定は off。on にすると、何回出ても
1にします。
TF-IDF のときだけ出るもの
- 正則化する
- L1正則化か L2正則化。選ばないこともできます(既定は未選択)。行ごとに値の大きさをそろえます。
2 つの方法
| 方法 | 値 | 特徴 |
|---|---|---|
| Bag of Words | 単語の出現回数 | 単純。どの文書にも出る単語が強くなる |
| TF-IDF | 回数を「珍しさ」で重み付け | その文書らしい単語が強くなる |
文書の違いを捉えたいなら TF-IDF が向いています。
列が増えすぎるとき
単語の種類だけ列ができます。 数千語あると数千列になります。
| 打ち手 | 設定 |
|---|---|
| どの文書にも出る語を外す | n%以下の文書で出現する単語を対象とするを下げる |
| 1 回しか出ない語を外す | n%以上の文書で出現する単語を対象とするを上げる |
| 上限を決める | 出現頻度トップn番目までの単語を対象とするに数を入れる |
形態素解析で名詞だけに絞っておくのも効きます。
先に形態素解析が要る
このノードは、単語が空白で区切られていることを前提にします。 元の文章をそのまま入れると、文全体が 1 つの単語として 1 列になります。先に形態素解析を掛けてください。
欠損の行は空の文字列として扱われます。 エラーにはならず、その行はすべての列が 0 になります。
エラーと対処
列を選ばずに実行した
「処理対象列を選択」が空のまま実行したときに出ます。前の処理で列名が変わり、選んでいた列が入力データからなくなったときにも同じメッセージです。
対象の列が選択されていません。
直し方 — 文書の入った列を選び直してください。
よく使う例
1. 文書分類の特徴量を作る
問い合わせを種類別に分類するモデルに、本文を入れたいとき。
入力(形態素解析で名詞だけ残した列)
| 本文_形態素 | 種類 |
|---|---|
返品 手続き | 返品 |
配送 日時 | 配送 |
設定
| 設定項目 | 値 |
|---|---|
| 処理対象列を選択 | 本文_形態素 |
| 処理を選択 | TF-IDF |
出力 — tfidf_手続き tfidf_日時 tfidf_返品 tfidf_配送 の 4 列が増えます。
| 本文_形態素 | tfidf_手続き | tfidf_日時 | tfidf_返品 | tfidf_配送 |
|---|---|---|---|---|
返品 手続き | 1.4055 | 0 | 1.4055 | 0 |
配送 日時 | 0 | 1.4055 | 0 | 1.4055 |
正則化を選んでいないので、行ごとの大きさはそろっていません。 正則化するに L2正則化 を入れると、同じデータが 0.7071 になります。この数値の列を分類モデルの説明変数にします。
2. 列を減らす
列が 5000 できてしまい、学習が重いとき。
入力 — 例 1 と同じ(ただし語数が多い)
設定
| 設定項目 | 値 |
|---|---|
| 出現頻度トップn番目までの単語を対象とする | 200 |
出力 — よく出る 200 語の列だけになります。
3. どの文書にも出る語を外す
こと もの のような語がすべての文書に出て、区別の役に立たないとき。
入力 — 例 1 と同じ
設定
| 設定項目 | 値 |
|---|---|
| n%以下の文書で出現する単語を対象とする | 80 |
出力 — 8 割を超える文書に出てくる単語の列が消えます。
4. 出た/出ないだけを見る
回数ではなく「その語が含まれるか」だけを使いたいとき。
入力
| 本文_形態素 |
|---|
返品 返品 送料 |
設定
| 設定項目 | 値 |
|---|---|
| 処理を選択 | Bag of Words |
| 出現回数を二値化する | on |
出力 — bow_返品 が 2 ではなく 1 になります。
5. 文章の長さの違いをならす
長い文章ほど値が大きくなって、短い文章と比べられないとき。
入力 — 例 1 と同じ
設定
| 設定項目 | 値 |
|---|---|
| 処理を選択 | TF-IDF |
| 正則化する | L2正則化 |
出力 — 行ごとに大きさがそろうので、文章の長短に左右されにくくなります。