はじめに
HP に記載する情報や社外向けの文章、組織全体に広報する文章などは、組織のブランディングにおいて重要です。そのため、一定のルールに沿って表記ゆれを修正し、文言を統一することで、一貫性のあるメッセージを発信する必要があると思います。
今回は、Power Apps と AI Builderで社内用語集を基に文章を修正するアプリを作成してみたいと思います。
社内用語集の作成
まず、社内用語集自体を作成します。今回は以下のようなサンプルを使いますが、実際の業務では、既にある用語集の情報を使う (必要に応じて変換処理をする)、社内ドキュメントを基に、ChatGPT や Copilot を使って社内用語を抽出して用語集を作成するのがよいと思います。
私は、Excel 形式で用語集を作成してもらい、そちらから SharePoint リストを作成しました。
ポイントは、どのような類義語 (forbidden) が存在したら社内用語 (recommended) に修正する必要があるのかという情報を持っていることです。場合によっては、recommended だけでもよいかもしれませんが、修正対象のドキュメント内のどのような単語を置き換えていいか判断しやすくするため、このような形式にしています。
プロンプトの作成
今回は、以下の二つのプロンプトを作成します。
① SharePoint リストの社内用語集を基に、まずは、JSON 形式化するプロンプト
② ① の JSON と、修正対象テキストを渡して修正を行うプロンプト
SharePoint リストの社内用語集を基に、まずは、JSON 形式化するプロンプト
以下のようなプロンプトを作成します。
あなたはテキストを解析し、指定されたフォーマットに変換するエキスパートです。
以下のテキストを読み取り、各用語の情報をJSON形式の配列として出力してください。
###テキスト
テキスト
テキスト内には、複数の要素がカンマ(,)と句点(。)で区切られています。
行ごとに、「recommended」「forbidden」「description」という4つのフィールドを持つオブジェクトに分割してください。
- 最初に登場する単語を「recommended」とする
- 2番目のカンマ区切りの単語を「forbidden」としてまとめる(ただし末尾の“説明文”は除く)
- 最後に登場する説明文を「description」に入れる
- forbiddenは複数の表記をカンマ区切りの配列として格納してください
以上の仕様を守り、JSON配列として出力してください。
上手くいくと、以下のような感じで JSON 化してくれます。
JSON と、修正対象テキストを渡して修正を行うプロンプト
文章自体を修正するプロンプトは以下のような感じです。それなりにいい感じに修正されていそうです。
あなたは文章を修正するエキスパートアシスタントです。以下のJSON形式の用語集に記載されたルールを絶対に遵守しながら、指定の文章を修正してください。
###用語集(JSON)
用語集(JSON)
【修正の方針】
1. JSON内の「forbidden」に含まれる表記が文章中にあった場合、対応する「recommended」に置き換える。
2. JSON内の「recommended」やその同義語(forbiddenに該当するものなど)があれば、必ず「recommended」を使用する。
3. 用語集に該当しない一般的な語句や固有名詞は、文章の意味を変えない限り原則として修正しない。
4. 修正により文章全体の流れが不自然にならないように注意する。
5. 文章の内容・意味を大きく変える表現改変は行わない。
6. **同じ文内で複数の用語が同じ「recommended」に置き換わる場合、重複や不自然な表現を避けるように調整する**(例:同じ部署名が2回連続で登場しないよう配慮)。
7. **複数の禁止表記がひとつの文に混在している場合も、それぞれ誤置換が起こらないよう慎重に置換する。**
8. **もし同じ対象(同じ組織など)を指す表現が連続して現れた際は、自然な形でまとめたり省略したりして、冗長にならないようにする。**
###修正対象の文章
修正対象の文章
以上を踏まえて、正しい表記・用語に修正した文章を提示してください。
修正した文章以外は出力しないでください。タグなどを出力しないでください。
アプリの作成
今回はこんなアプリを作成しようと思います。
処理はこちらのボタンの[OnSelect]に実装しています。
まず、SharePoint リストの用語集を JSON 化する処理を実装します。今回は、全行取ってきていますが、もし、要件次第で参照する用語集を絞れる場合は、用語集自体にカテゴリーなどの選択列を設けて、フィルターをした上で処理するのがよいと思います。
ClearCollect(
colCSVData,
ForAll(
Gallery1.AllItems,
Concatenate(
Title,
",",
forbidden,
",",
description,
Char(10)
)
)
);
Set(
gblCSVData,
Concat(
colCSVData,
Value & Char(10)
)
);
上記処理で、以下のようなテキストが出来上がります (アプリ上はこちらの部品およびギャラリーコントロールは非表示にしています)。
そして、こちらのテキストを一つ目のプロンプトに渡して、結果を受け取ります。
Set(
gblJsonData,
社内用語JSON化プロンプト.Predict(gblCSVData)
);
最後に、JSON 化した用語集と変換対象テキストを次のプロンプトに渡して結果を受け取ります。
Set(
gblResult,
社内用語修正プロンプト.Predict(
gblJsonData.Text,
TextInput1.Text
)
);
そして、右側のテキストインプットコントロールに結果を表示します。
こんなに簡単に、社内用語集を基に文章を修正するアプリが作れました。
応用
こちらを踏まえた応用ポイントについて補足します。
ファイルをそのまま渡す
現在、AI Builder では、ファイル自体をアップロードすることもできます。そちらを使って、ドキュメントをアップロードして、そちらのファイル内のテキストを修正してもらうようにアプリを実装することも可能です。
以下、イメージと実装のポイントです。
まず、プロンプトの方で入力としてドキュメントを受け付けるようにします。
今回は別途プロンプトを作成しています。
次に、プロンプトをアプリと接続します。
残念ながら、Power Apps では標準で添付ファイルをアップロードするコントロールがないため、フォームコントロールにリストを追加し、以下のコントロールをコピーして利用します。
そして、変換ボタンの処理を少し変えます。新しく作成したプロンプトを呼び出すようにして、入力として添付ファイルコントロールに追加した添付ファイルの Value (コンテンツの中身) を渡します。
Set(
gblResult,
'社内用語修正プロンプト (ドキュメント)'.Predict(
First(DataCardValue5_1.Attachments).Value,
gblJsonData.Text
)
);
無事に変換されました。
プロンプトの文字数対策
用語集自体は、プロンプトの文字数を踏まえると、多くても数百位内くらいがいいと思います。もしそれ以上になる場合は、カテゴリー列や優先順位列を設けるなどして、用途に応じてフィルターできるようにして、一度のプロンプトで渡す情報量を絞るのがよいと思います。場合によっては複数回に分けて修正いをすることもできるかと思います。
以下、イメージと実装ポイントです。
まず、priority という優先順位に関する列を作成します。
※これくらいの用語集であればそこまで必要ないです。あくまでイメージを伝えるためにつけています
次に、Power Apps で非表示にしているギャラリーを priority 列でフィルターするようにします。今回は、priority を複数選択可能にしています。
今回は、priority を「高」にしたものだけ変換されるようにしてみたところ、問題なく動作しました。
もし、後から他の priority の用語も変換したい場合は、変換後のテキストを左側に移して変換する感じになります。このアプローチにより、一度に渡すプロンプトの量 (json の用語集の量) が減ることになります。
まとめ
今回は、Power Apps と AI Builderで社内用語集を基に文章を修正するアプリを作成する方法を紹介しました。実際には、一発では、完全なものは作れないと思いますが、上手くいかない箇所を踏まえ、プロンプトを適宜修正していくことである程度の精度のものは作れると思います。
似たような業務があり時間を要している場合は是非参考にしていただければ幸いです。
















