[azule]Language Studioの各機能を触ってみよう

やりたいこと

language studioの各機能を一通り触ってみたので、どんなことができるのか備忘録としてまとめる。

機能は以下の4つに分類される。

  1. 情報の抽出
  2. テキストの分類
  3. テキストの要約
  4. 質問と会話の言語を理解する

 

1.情報の抽出

1-1.PIIの抽出

PII(Personally Identifiable Information)というのは個人情報のこと。
事前定義されたクラスまたは 種類 (個人、住所、電子メール、電話番号、パスポート番号、銀行口座番号など)を抽出することができる。

 

 

 

1-2.キー フレーズの抽出

文章に対して、重要なキーワードをキーフレーズのリストとして列挙してくれる。
キーフレーズと言いつつ、名詞を手当たり次第に列挙している印象は受ける。
一般的にキー抽出は、文章に対してタグ付けをするのに使えるらしい。

 

 

1-3.名前付きエンティティの抽出

あらかじめ定義したカテゴリ(個人、場所、イベント、製品、組織など)を抽出し、分類する。

 

 

1-4.正常性情報を抽出する

Text Analytics for Healthは、医師向けのモデルで、医療情報をキーワードとして抽出してくれる。
(正直見ても全然分からんです)

 

 

1-5.カスタム固有表現認識

1-1 ~ 1.4と違い、どの情報(エンティティ)を抽出するかをユーザーが定義することができる。
ただし、エンティティは「どのドキュメントの何文字目から何文字目は○○である」という具合に指定しなければならないので、学習用のデータを作るのは少し骨が折れそうだ。

ちなみに画面上から定義する場合も、エンティティを選択してから、エンティティに相当する単語をドキュメントで範囲選択する必要があるので、jsonのimportと同程度の大変さはある。

 

 

 

 

2.情報の分類

2-1.感情の分類

文章の各センテンスに対して、ポジティブ・ネガティブ・中立で分類をする。

 

2-2.言語の分類

与えられた文章がどの言語であるかを分類する。

 

 

2-3.カスタムテキスト分類

ユーザーが独自にカテゴリを定義することができる。
カテゴリは単一カテゴライズと、複数カテゴライズがある。
複数カテゴライズの場合、カテゴリAとカテゴリBなど複数の候補が分類結果に表示される。

 

3.テキストの要約

3-1.テキストの要約

文章のワードをそのまま抜粋するタイプの要約(左)と意訳するタイプの要約(右)がある。
どちらも、要約というには精度が低いかもしれない。

ChatGPTと比べると、そのまま抜粋している感が否めない。

 

4.質問と会話の言語を理解する

4-1.質問への回答

ドキュメントを用意せず、画面上にテキストを張り付け、入力したテキストに回答をする。
今回の質問は「織田信長の死因は?」だが、「明智光秀の謀反」の信頼度が0.30と低いにもかかわらず、「1582)」が0.54、「尾」が0.83とかなり制度は低い。

ちなみにChat GPTに同様の質問をしたところ

先ほどのテキストの情報から抜粋すると、織田信長の死因は
1582年に家臣の明智光秀の謀反(本能寺の変)により自害したこととなります。

はい。ハナマル満点です。

 

4-2.カスタム質問応答

4-1.は実用的ではないので、当然ドキュメントからQAをインポートして学習モデルを作成することができる。

カスタム質問応答はAzule AI Languageリソースとは別にAzule AI Searchリソースを作る必要がある。
モデルの作成自体は簡単であるが、ほかの機能と違い、なぜかLanguage Studio上でテスト実行をすることが出来ない。(今回は面倒なので実行は試しておらず。)

4-3.オーケストレーションワークフロー

オーケストレーションワークフローとは

以下はMicrosoftの説明文を抜粋

オーケストレーション ワークフローは、Azure AI Language で提供されている機能の 1 つです。 これはクラウドベースの API サービスであり、機械学習インテリジェンスを適用し、会話言語理解 (CLU)質問応答プロジェクト、LUIS アプリケーションを接続するためのオーケストレーション モデルを構築できるようにします。 開発者は、オーケストレーション ワークフローを作成することによって、発話のタグ付けを繰り返し行うことができ、モデル パフォーマンスをトレーニングおよび評価してから、利用できるようにすることができます。 

分かりづらいが、ユーザーからのリクエストに対して適切なAIサービスを選択してくれるという機能。
オーケストレーションというワード自体はAzuleに限らず使われており、「オーケストラの指揮者」がごとく、各楽器(AI)に指示を与える姿を元となっている。

必要なツール(AI)を使い分けてタスクを処理できるという意味合いでは、AIエージェントと置き換えてもいいかもしれない。

オーケストレーションワークフローは動作しない?

オーケストレーションワークフローも学習モデルを作成する必要があるのだが、どういったわけか学習時にエラーが発生する。

エラーメッセージ「Training config not support for project kind: `Orchestration`」

オーケストレーションのプロジェクトはトレーニングできないとのこと。
モデルをトレーニングしたあとデプロイしないと機能としては利用できないにもかかわらず、そもそもトレーニング自体が出来ない…正直詰みである。

REST API からであればトレーニングできるかとも試したが、同様のエラーが表示された。

 

Language Studio と Azule AI Foundry

直接的な理由であるかは分からないが、Language Studioは既にクラシックな機能であり、ゆくゆくはAzule Foundryというサービスが主流となる予定のようだ。

実際、Language StudioでなくAzule AI Foundryの画面操作を求めるようなチュートリアルページが散見された。

 

 

さいごに

Language Studioは独自モデルの作成が必要なものとそうでないサービスに大別される。

デフォルトのモデルが用意されている場合は、容易にテストできるのが魅力の反面精度が低い。
独自モデルを利用できる機能についても、そもそもサービスの種類自体が少ないため、がっつり仕事に導入するというのは難しそう。

Language Studioはあくまでも簡易利用するにとどめたほうがよさそうだ。