rex0220 計算式プラグインで作成した検索用文字列生成の式を GPTs で評価してみました。
概要
計算式プラグインで作成した検索用文字列生成の式を GPTs 「rex0220 計算式プラグインの使い方」で評価してみました。
計算式の処理を理解するのに役立つと思います。
あと計算式がわかりにくいので、コメント追加と変数名を変えてもらいます。
参考
「rex0220 計算式プラグインの使い方をGPTsに学習させてみる」
検索用文字列生成の計算式
LET(
instr,"サイボウズ, ABC、TEST",
// 区切り文字を除外
w,REPLACERE(instr,"[,、\s]+","g"," "),
inarr,SPLIT(w," ",1),
arr,ARRAY(), // 分割文字列の出力用
dummy,ARRAY_MAP(inarr,str,
LET(
len,LENGTH(str),
ARRAY_FOR(len,idx,
ARRAY_FOR(len-idx,idx2,
// 分割文字列を追加
FSET(arr,ARRAY(arr,SLICE(str,idx,idx+idx2+1)))
)
)
)
),
// 重複文字の削除
JOIN(DISTINCT(arr),",")
)
- 計算結果
"サ,サイ,サイボ,サイボウ,サイボウズ,イ,イボ,イボウ,イボウズ,ボ,ボウ,ボウズ,ウ,ウズ,ズ,A,AB,ABC,B,BC,C,T,TE,TES,TEST,E,ES,EST,S,ST"
- 計算式ツールでの実行
GPTs「rex0220 計算式プラグインの使い方」で評価
評価結果は、「入力文字列が長くなると計算量が増加するため、パフォーマンスに注意する必要があります。」とのことで、妥当な評価だと思います。
ステップごとに解説されるので、内容を理解するのにも役立ちます。
- 計算式の評価してもらいます
- 評価結果は、ステップごとに、評価されます
計算式にコメントを付ける
計算式にコメントが少ないのでつけてもらいます。
計算式の変数名を変更
計算式の変数名がわかりにくいので、変更してもらいます。
変数の意味は分かりますが、少し長いので8文字以内にしてもらいます。
変更後の計算式を実行
LET(
origTxt, "サイボウズ, ABC、TEST", //入力文字列
clnTxt, REPLACERE(origTxt, "[,、\s]+", "g", " "), //区切り削除
splArr, SPLIT(clnTxt, " ", 1), //文字分割
resArr, ARRAY(), // 出力配列
dummy, ARRAY_MAP(splArr, word,
LET(
wLen, LENGTH(word), //文字数
ARRAY_FOR(wLen, sIdx,
ARRAY_FOR(wLen - sIdx, eIdx,
FSET(resArr, ARRAY(resArr, SLICE(word, sIdx, sIdx + eIdx + 1))) //部分文字列
)
)
)
),
JOIN(DISTINCT(resArr), ",") //重複削除
)
コメント追加と変数名変更した計算式を実行してみます。
問題ありませんでした。
テスト用文字列の生成
テスト用文字列も作ってもらいます。
アプリでテスト
いろいろなパターンをテストするため、テーブルに計算式を設定してテストします。
数字や記号は、検索文字としてどうなんだろうか?
区切り・記号を除外
必要に応じて、除外する区切り・記号を指定します。
LET(
origTxt, 文字列, //入力文字列
clnTxt, REPLACERE(origTxt, "[,、\s\.\!\?\(\)\[\]\{\}\-\+\*\&\^\%\$#@!~`<>\"'()「」;::;{}{} /・?]+", "g", " "), //区切り削除
splArr, SPLIT(clnTxt, " ", 1), //文字分割
resArr, ARRAY(), // 出力配列
dummy, ARRAY_MAP(splArr, word,
LET(
wLen, LENGTH(word), //文字数
ARRAY_FOR(wLen, sIdx,
ARRAY_FOR(wLen - sIdx, eIdx,
FSET(resArr, ARRAY(resArr, SLICE(word, sIdx, sIdx + eIdx + 1))) //部分文字列
)
)
)
),
JOIN(DISTINCT(resArr), ",") //重複削除
)















