はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

Azure CognitiveServices TextAnalyticsの「テキスト要約」をクライアントアプリから使ってみる(SDK編)

前回:Azure CognitiveServices TextAnalyticsでテキスト要約を試してみる - はつねの日記

前回は、AzureポータルでTextAnalyticsを有効にして、Language Studioで「テキスト要約」動作を確認してみました。
今回は、クライアントアプリから前回有効にしたTextAnalyticsにつないでみましょう。

準備

.NET 6ベースのWPFアプリとしてクライアントアプリを作成します。
TextAnalyticsとの接続には、Azure.AI.TextAnalytics SDKを使います。
まずは、そのために準備として、Visual Studioで新しいプロジェクトを作成してNuGetから必要なライブラリを取得しましょう。

新しいプロジェクトの作成


Visual Studio 2022で、新しいプロジェクトの作成で「WPFアプリケーション」のテンプレートを選択すると、.NET Frameworkベースではなく.NET 6ベースのWPFアプリが作成できます。
名前は「TextSummarizationSDKSample」と名付けることにしましょう。

NuGetからSDKの取得

Azure.AI.TextAnalytics SDKをNuGetから取得しましょう。
www.nuget.org
ソリューションエクスプローラーでプロジェクトファイルを右クリックして[NuGetパッケージの管理]メニューでNuGetパッケージマネージャーを起動して、Azure.AI.TextAnalytics SDKをプロジェクトに追加します。

この時に注意しないといけないのは、(2022年6月4日現在)テキスト要約は「プレビュー」機能なので、NuGetから取得するAzure.AI.TextAnalytics SDKもプレリリース版が必要な点です。

そこで、「プレリリースを含める」をチェックして、プレリリース版の最新を取得してきます。
現時点でのプレリリース版は5.2.0-beta3ですので将来的に5.2.0が正式版となるまではプレリリース版を追加するようにしましょう。

コードを記述

サンプルコードは、MVVMデザインパターンで作成しているので、画面はViewsフォルダ配下に「MainWindows.xaml」として記述し、TextAnalytics APIを呼び出すロジックはModelsフォルダ配下に「TextSummarizationModel.cs」として記述します。

画面を作成

サンプルなので「入力欄」「実行ボタン」「出力欄」のシンプルが画面を作成してみます。
gist.github.com

ロジックを作成

TextSummarizationModelクラスとしてAPI呼び出し部分を記述してみましょう。
gist.github.com
「your key」や「your resourcename」のところは、AzureでTextAnalyticsを有効化したときに生成されたキーとリソース名を設定します。

実行

対象のテキストを入力

Language Studioで試したように現在開催されているMicrosoft Build 2022のBook of NewsにあるAzureAIの説明を要約してみましょう。
news.microsoft.com
場所は、「1.1 Azure AI」の部分にしてみましょう。

実行結果

[Exec]ボタンをクリックして少し待つとテキスト要約結果が表示されます。

Microsoft Azure AIは、開発者が高品質なモデルをAPIとしてデプロイし、言語機能をより効率的かつ責任を持ってアプリに注入できるように、Azure Cognitive Servicesに2つのアップデートを導入します。
Azure Cognitive Serviceの1つであるAzure OpenAI Serviceは、現在プレビューで利用可能です。
Azure Cognitive Service for Languageは、文書や会話の要約を提供する新機能で、開発者が文書やコンタクトセンターの通話に含まれる重要な情報(通話理由や解決策など)を迅速に表面化できるよう支援します。

まとめ

TextAnalytics用のSDKを使ってテキスト要約を行うクライアントアプリを作成してみました。
SDKが使いやすいので非常にシンプルなコードで実装できるのが分かってもらえたら嬉しいです。
次回は、今回作成したコードをベースにしてTextAnalytics APISDKではなくREST APIとして呼び出す方法について説明する予定です。
TextAnalytics APIを直に呼び出すことで更に理解が進むと思いますし、SDKが提供されていない環境から使うときのサンプルになればと思っています。