2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Bobとpython拡張ノードでネガティブコメントフラグを作る(SPSS Modeler データ加工逆引き13-15)

2
Posted at

Bobとpython拡張ノードでネガティブコメントフラグを作る

スクリーンショット 2026-10-27 9.30.00.png

以下の記事を題材に、Bobを使って拡張ノードのPythonコードを効率よく作成する方法をご紹介します。

1.想定される利用目的

・文章に含まれるポジティブ/ネガティブの要素をフラグにして集計可能にする。

2.ストリームとデータのダウンロード

ストリーム

データ

3.サンプルストリームの説明

スクリーンショット 2026-10-27 9.33.37.png

a.入力するデータは以下の通りです。

スクリーンショット 2026-10-27 9.36.28.png

b.[拡張の変換]ノードを編集します。pythonスクリプトをどのようにBobに書かせたかは後述します。

スクリーンショット 2026-10-27 9.36.52.png

[テーブル]を表示します。

スクリーンショット 2026-10-27 9.37.51.png

Bobによるスクリプトの作成手順

1.Bobを起動して、作業フォルダを指定します。

スクリーンショット 2026-03-31 11.13.04.png

2.SPSS Modeler[拡張のエクスポート]ノードからサンプル構文をコピーします。

スクリーンショット 2026-07-29 18.39.59.png

3.プロンプトを作成します。サンプル構文をペーストします。

プロンプト

comment列から文章がネガティブかどうかを判定すし新たなフラグ変数を作成する、
SPSS Modelerの拡張の変換ノードのネイティブPython APIスクリプトを書いてください。
読み込むデータのサンプルは次の通りでcomment列のみを対象にしてください。

ID,DATE,TERM,利用機種,OPEREATER,comment,クレーム,機器,機能・サービス,請求,購入
962,2024-02-10,"2月第2週","B919","CT","新しい料金プランについて知りたい。すぐに解約の可能性大。無料通話分を増やしたい。",0,0,0,1,0
868,2024-02-10,"2月第2週","B919","CT","ローミング料金が異常に高い。契約時にサービスエリアをちゃんと説明されていなかった。また、ほかの地域を旅行時に、受信状況があまりよくない。",0,0,0,1,0
910,2024-02-10,"2月第2週","V501","CT","メールの使い方を知りたい。HPを参照するように伝える。",0,0,1,0,0



- 拡張の変換ノードのスクリプトの解説として
@https://www.ibm.com/docs/ja/spss-modeler/18.6.0?topic=spark-native-python-apis を参考にしてください。
- シバンは不要です。


シンタックスは以下のサンプルを参考にしてください

###Use this code to transfer data between Modeler and Python
#import modelerpy
#if modelerpy.isComputeDataModelOnly():
#    modelerDataModel = modelerpy.getDataModel()
#    outputDataModel = None
###    compute your output data model

#    modelerpy.setOutputDataModel(outputDataModel)
#else:
#    modelerData = modelerpy.readPandasDataframe()
#    outputData = None
###    compute your output data

#    modelerpy.writePandasDataframe(outputData)

4.プロンプトを実行します。

スクリーンショット 2026-07-29 18.45.37.png

5.Bobの以下の出力を[拡張の変換]にそのまま利用します。

Pythonスクリプト

import modelerpy

if modelerpy.isComputeDataModelOnly():
    # --- データモデル計算モード ---
    # 入力データモデルを取得し、新しいフラグフィールドを追加して出力モデルを設定する
    modelerDataModel = modelerpy.getDataModel()
    outputDataModel = modelerDataModel

    # ネガティブ判定フラグ列を整数型(flag計測)で追加
    outputDataModel.addField(modelerpy.Field('is_negative', 'integer', 'flag'))

    modelerpy.setOutputDataModel(outputDataModel)

else:
    # --- データ変換モード ---
    # Pandas DataFrame としてデータを取得
    df = modelerpy.readPandasDataframe()

    # ネガティブ感情を示すキーワードリスト
    negative_keywords = [
        '解約', '高い', '遅い', '悪い', '不満', 'できない', 'されていない',
        'おかしい', '異常', '問題', 'クレーム', '困る', '使えない',
        'わからない', 'よくない', 'されなかった', '説明されていなかった',
    ]

    def is_negative(text):
        """commentテキストにネガティブキーワードが含まれるか判定する"""
        if not isinstance(text, str):
            return 0
        return int(any(kw in text for kw in negative_keywords))

    df['is_negative'] = df['comment'].apply(is_negative)

    modelerpy.writePandasDataframe(df)



注意事項

フリーコメント内にネガティブな要素とポジティブな要素が含まれていても判定するような設計になっています。用途によっては、SPSS Modeler PremiumのText Analyticsオプションを利用してください。

4.参考情報

ポジティブ/ネガティブフラグを作成する

SPSS Modeler ノードリファレンス目次

SPSS Modeler 逆引きストリーム集(データ加工)

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?