4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM BobにSPSS ModelerのClem式を書いてもらう

4
Posted at

IBM BobにSPSS ModelerのClem式を書いてもらう

はじめに

IBM SPSS Modelerで使用されるClem式(CLEMはControl Language for Expression Manipulationの略)は、データ変換や条件分岐を行うための強力な言語ですが、構文に独特なところがあります。

生成AIにClem式を書いてもらえれば便利ですが、一般的なLLM(大規模言語モデル)はClem式の学習データが少ないため、ハルシネーション(誤った情報の生成)を起こしやすく、そのままでは動作しないコードを生成することがよくあります。

本記事では、IBM Documentation検索MCPサーバーを活用することで、正確なClem式を生成する方法を紹介します。

対象読者

  • IBM SPSS Modelerを使用している方
  • Clem式の記述に苦労している方
  • IBM Bobを使用している方

前提条件

  • IBM Bobのアカウント
  • IBM Documentation検索MCPサーバーのセットアップ完了
  • IBM SPSS Modelerの基本的な操作知識

IBM Documentation検索MCPサーバーとは

IBM Documentation検索MCPサーバーは、IBM製品の公式ドキュメントを検索し、正確な情報を取得できるMCP(Model Context Protocol)サーバーです。本記事の筆者が作成したサンプル実装で、どなたでも利用できます。詳細は以下の記事をご参照ください。

IBM Documentation検索MCPサーバー #IBMBob - Qiita

image.png

検証:MCPサーバーなしでの問い合わせ

まず、MCPサーバーを使用せずに、BobのASKモード(通常の対話モード)でClem式の生成を試みます。

プロンプト

@FIELDがABCで始まる場合、そのABCを取り除くclem式をつくって

ASKモードでの問い合わせ

生成された式

Bobは以下のようなClem式を生成しました。一見、正しそうに見えます。

生成されたClem式

if startstring(@FIELD, "ABC") then
    substring(@FIELD, 3)
else
    @FIELD
endif

実行結果:エラー発生

この式をSPSS Modelerのフィールド作成ノードに入力して実行してみます。

フィールド作成ノードへの入力

しかし、以下のエラーが発生しました。

エラーメッセージ

[2026-03-10 14:33:18] AEQMJ0424E: CLEM エラー: 次の式の関数 'substring' の引数数が誤っています: 
if startstring(@FIELD, "ABC") then substring(@FIELD, 3) else @FIELD endif

エラーの原因分析

IBM公式ドキュメント(文字列関数リファレンス)を確認すると、生成されたコードには以下の問題があることがわかります:

1. startstring関数の誤用

生成されたコードではstartstring(@FIELD, "ABC")という形で使用されていますが、これは関数の用途と引数の順序が誤っています

IBM公式ドキュメントによると、startstring関数の正しい構文は:

startstring(LENGTH, STRING)

この関数は文字列から最初のN文字を抽出するためのもので、条件判定(文字列が特定のパターンで始まるかチェック)には使用できません。

条件判定を行うには、以下の関数を使用する必要があります:

  • isstartstring(SUBSTRING, STRING): 文字列STRINGがサブ文字列SUBSTRINGで始まる場合に添え字1を返す(条件判定用)

LLMは関数名の類似性から、文字列抽出用のstartstringを条件判定に誤用してしまいました。

2. substring関数の引数の誤り

IBM公式ドキュメントによると、Clem式のsubstring関数の正しい構文は:

substring(N, LEN, STRING)
  • 第1引数 (N): 開始位置の添え字
  • 第2引数 (LEN): 取得する文字数
  • 第3引数 (STRING): 対象の文字列

しかし、生成されたコードのsubstring(@FIELD, 3)には以下の2つの誤りがあります:

  1. 引数の順序が逆: 文字列@FIELDが第1引数になっているが、正しくは第3引数
  2. 引数の数が不足: 必須の第2引数(長さ)が欠落している

正しくはsubstring(4, length(@FIELD) - 3, @FIELD)のように、開始位置、長さ、文字列の順で指定する必要があります。

これは、PythonやJavaScriptなどの一般的なプログラミング言語のsubstringsubstr関数(文字列が第1引数で、多くは2引数)の構文と混同したためと考えられます。

まとめ

このように、LLMはClem式固有の構文を正確に学習していないため、関数の用途を誤解したり、引数の順序や数を他の言語の類似関数と混同したりして、もっともらしいが誤ったコードを生成してしまいます。

検証:MCPサーバーを使用した問い合わせ

次に、IBM Documentation検索MCPサーバーを使用して、同じ問い合わせを行います。
BobをAdvancedモード(MCPサーバーなどの外部ツールを使用できるモード)に切り替えます。

プロンプト

@FIELDがABCで始まる場合、そのABCを取り除くclem式をつくって。
ibm-docsで調べて、ドキュメントのURLも教えて。

ibm-docsは、IBM Documentation検索MCPサーバーを指します。このように明示的に指定することで、BobはMCPサーバーを使用してIBM公式ドキュメントを検索します。

Advancedモードでの問い合わせ

MCPサーバーによる検索

Bobはsearch_ibm_docsget_ibm_topicというツールを使用して、IBM公式ドキュメントからClem式の正確な構文を検索します。

MCPツールの使用

修正されたClem式

公式ドキュメントを参照した結果、Bobは以下の正しいClem式を生成しました。

修正されたClem式

if isstartstring("ABC", @FIELD) then
    substring(4, length(@FIELD) - 3, @FIELD)
else
    @FIELD
endif

コードの解説

この式の各部分を解説します:

  • isstartstring("ABC", @FIELD): フィールド@FIELDが文字列"ABC"で始まるかをチェックします(正しい関数名)
  • substring(4, length(@FIELD) - 3, @FIELD):
    • 第1引数 4: 開始位置("ABC"は3文字なので、4文字目から開始)
    • 第2引数 length(@FIELD) - 3: 取得する長さ(全体の長さから"ABC"の3文字を引いた長さ)
    • 第3引数 @FIELD: 対象の文字列フィールド

実行結果:成功

修正されたClem式をSPSS Modelerで実行します。

実行画面

今度は正常に動作し、ABCsuzukisuzukiに正しく変換されました。

実行結果

MCPサーバーを使用する利点

1. 正確な構文の取得

IBM公式ドキュメントを直接参照するため、関数名や引数の順序、データ型などが正確です。

2. ドキュメントURLの提供

生成されたコードの根拠となるドキュメントのURLも提供されるため、詳細を確認したり、他の関数を調べたりすることが容易です。

3. 学習コストの削減

Clem式の構文を完全に覚えていなくても、正確なコードを生成できます。

制限事項と注意点

1. MCPサーバーのセットアップが必要

IBM Documentation検索MCPサーバーを事前にセットアップする必要があります。

2. Advancedモードの使用が必要

MCPサーバーを利用するには、BobをAdvancedモードに切り替える必要があります。ASKモードなどの通常モードではMCPサーバーを使用できません。

3. 複雑な処理の場合

非常に複雑なClem式の場合、生成されたコードを理解し、必要に応じて調整する知識が必要です。

他のユースケース

IBM Documentation検索MCPサーバーは、Clem式以外にも以下のような用途に活用できます:

  • SPSS Modelerの他の機能(ノードの設定、スクリプト作成など)
  • 他のIBM製品のドキュメント検索
  • APIリファレンスの確認
  • トラブルシューティング情報の検索

まとめ

本記事では、IBM Documentation検索MCPサーバーを使用することで、IBM SPSS ModelerのClem式を正確に生成できることを実証しました。

主なポイント

  1. 通常のLLMの限界: 一般的なLLMはClem式の学習データが少なく、誤ったコードを生成しやすい
  2. MCPサーバーの有効性: IBM公式ドキュメントを参照することで、正確な構文のコードを生成できる
  3. 実用性: BobをAdvancedモードに切り替えることで、MCPサーバーを活用した正確なコード生成が可能

IBM製品を使用する開発者にとって、IBM Documentation検索MCPサーバーは強力なツールとなるでしょう。ぜひ活用してみてください。

参考文献

4
1
0

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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?