このステップには、4つのサブステップ(メッセージを単語に変換、各メッセージ内の単語の重みを計算、各メッセージ内の無関係な単語の重みを軽減、特徴ベクトルを結合)を必要とします。
手順
-
メッセージを単語に変換する方法:
-
[Tokenize] (トークン化)とラベル表示されたtModelEncoderコンポーネントをダブルクリックして、[Component] (コンポーネント)ビューを開きます。このコンポーネントは、SMSメッセージを単語にトークン化します。
-
[Sync columns] (カラムを同期)をクリックして、先行のコンポーネントからスキーマを取得します。
-
[Edit schema] (スキーマを編集)の横にある[...]ボタンをクリックし、スキーマエディターを開きます。
-
出力側で[+]ボタンをクリックして1行を追加し、[Column] (カラム)カラムで名前をsms_tokenizer_wordsに変更します。このカラムは、トークン化されたメッセージを保持するために使われます。
-
[Type] (タイプ)カラムで、このsms_tokenizer_words行に[Object] (オブジェクト)を選択します。
-
[OK]をクリックして、これらの変更を検証します。
-
[Transformations] (変換)テーブルで[+]ボタンをクリックして1行を追加し、次の手順を実行します。
- [Input column] (入力カラム)カラムで、機能に変換するデータを提供するカラムを選択します。このシナリオではsms_contentsです。
- [Output column] (出力カラム)カラムで、機能を持つカラムを選択します。このシナリオではsms_tokenizer_wordsです。
- [Transformation] (変換)カラムで、変換に使うアルゴリズムを選択します。このシナリオではRegex tokenizerです。
- [Parameters] (パラメーター)カラムに、選択したアルゴリズムで使うためにカスタマイズするパラメーターを入力します。このシナリオではpattern=\\W;minTokenLength=3です。
tModelEncoderはこの変換を使って、各入力メッセージをホワイトスペースで分割し、少なくとも3文字を含む単語のみを選択し、変換の結果をsms_tokenizer_wordsカラムに入力します。したがって、通貨記号、数値、句読点、およびa、an、toなどの単語はこのカラムから除外されます。
-
各メッセージ内の単語の重みを計算する方法:
-
tfとラベル表示されたtModelEncoderコンポーネントをダブルクリックして、[Component] (コンポーネント)ビューを開きます。
-
Tokenizeというラベルが付けられたtModelEncoderに前述の操作を繰り返して、Vector型のsms_tf_vectカラムを出力スキーマに追加し、上の画像に示すように変換を定義します。
この変換では、tModelEncoderはHashingTFを使って、トークン化済みのSMSメッセージを固定長(このシナリオでは15)の特徴ベクトルに変換し、各SMSメッセージの単語の重要性を反映します。
-
各メッセージ内の無関係な単語の重みを軽減する方法:
-
tf_idfとラベル表示されたtModelEncoderコンポーネントをダブルクリックして、[Component] (コンポーネント)ビューを開きます。
この処理で、
tModelEncoderは出現頻度が非常に高いものの、出現しているメッセージが多すぎる単語の重みを軽くします。この種の単語は、
theのようにテキスト分析に有意な情報をもたらさない場合が多いためです。
-
Tokenizeというラベルが付けられたtModelEncoderに前述の操作を繰り返して、Vector型のsms_tf_idf_vectカラムを出力スキーマに追加し、上の画像に示すように変換を定義します。
この変換では、tModelEncoderは[Inverse Document Frequency] (文献出現頻度の逆数)を使って、5つ以上のメッセージに出現する単語の重みを軽くします。
-
特徴ベクトルを結合させる方法:
-
features_assemblerとラベル表示されたtModelEncoderコンポーネントをダブルクリックして、[Component] (コンポーネント)ビューを開きます。
-
Tokenizerとラベル表示されたtModelEncoderに前述の操作を繰り返して、Vector型のfeatures_vectカラムを出力スキーマに追加し、上の画像に示すように変換を定義します。
[Parameters] (パラメーター)カラムに入力するパラメーターはinputCols=sms_tf_idf_vect,num_currency,num_numeric,num_exclamationです。
この変換では、tModelEncoderはすべての機能Vectorを1つの機能カラムに結合します。