Azure AI系サービスの概要を学ぶ(Azure Cognitive Services, Azure Machine Learningなど)

# ■0.はじめに

以下の資格を取得しました。

- [Microsoft Certified: Azure AI Fundamentals](https://docs.microsoft.com/ja-jp/learn/certifications/azure-ai-fundamentals/)
- [Microsoft Certified: Azure AI Engineer Associate](https://docs.microsoft.com/ja-jp/learn/certifications/azure-ai-engineer/)

本記事は、資格取得の過程で得た自身の知識の整理、定着化を狙って作成したものです。
そのため、AzureのAI系サービス全体を網羅できていないとは思いますが、この分野を学ぼうとしている方のお役に立てれば幸いです。

また、記載されている内容は2021年5～6月時点ぐらいの情報を基にしております。

# ■1.Azure Cognitive Services

[Azure Cognitive Services とは](https://docs.microsoft.com/ja-jp/azure/cognitive-services/what-are-cognitive-services)

- コグニティブなインテリジェンスを手軽にアプリケーションに組み込むことができる
- 利用するためにREST API とクライアント ライブラリ SDK が用意されている
- コグニティブ機能をアプリケーションに追加するために、人工知能 (AI) やデータ サイエンスのスキルは必要ない

Microsoft Docsの記載をそのまま転記しましたが..."コグニティブなインテリジェンス"と言われても、スッと頭に入ってこないですよね...

端的に言うと、

**Azure Cognitive Services = 人工知能(AI)を搭載したサービス**

でしょうかね？

"コグニティブ"をそのまま訳すと"認知"
"認知"とは何ぞやというと、[wikipedia](https://ja.wikipedia.org/wiki/%E8%AA%8D%E7%9F%A5)には以下の通り記載されています。

>心理学・言語学・脳科学・認知科学・情報科学などにおける認知とは、人間などが外界にある対象を知覚した上で、それが何であるかを判断したり解釈したりする過程のことをいう

一方で、"インテリジェンス"は、知性、知能などと訳すことができます。

つまり、"コグニティブなインテリジェンス"というのは、外界にある対象(それは景色だったり、文章であったり、外国語であったり...様々ですが)を判断したり解釈したりできる知性を持っているサービスがAzure Cognitive Servicesと言えるのかなと理解しました。

Microsoftの学習済モデルをベースにしたAzure Cognitive Servicesを利用することで、その分野の知識に疎い人でも手軽にアプリやサービスに組み込むことができるよ！って売りかと。

Azure Cognitive Servicesは大きく分けると、次の5つのカテゴリに分けられます。

- 視覚
- 音声
- Language
- 決定
- 検索

ここからはそれぞれのカテゴリの主要サービスを見ていきます。

## ■1.1.視覚

写真、動画、デジタル インク コンテンツの認識、識別、キャプションの追加、インデックスの作成、モデレートを行います。

### ▼1.1.1.Computer Vision

- 画像やビデオのコンテンツを分析する AI サービス

[デモ](https://azure.microsoft.com/ja-jp/services/cognitive-services/computer-vision/#features)

- 指定した画像に対してどのような情報が返ってくるかを、実際の画像で確認することができます。

[概要](https://docs.microsoft.com/ja-jp/azure/cognitive-services/computer-vision/overview)

- Azure の Computer Vision サービスを使用すると、関心のある視覚的特徴に基づいて、画像を処理して情報を返す高度なアルゴリズムにアクセスできます。

Microsoftの学習済モデルを使用した画像分析サービスで、以下の主要サービスがあります。
学習済モデルのカスタマイズ(追加学習など)は行えません。

- 1.光学式文字認識 (OCR)
    - 画像からテキストを抽出します。
    - 印刷されたテキストと手書きのテキストを写真やドキュメントから抽出することができます。
    - ビジネス ドキュメント、請求書、レシート、ポスター、名刺、レター、ホワイトボードが対象となります。
    - OCR API では、複数の言語で印刷されたテキストの抽出がサポートされます。
    - 入力ファイルの要件
        - JPEG、PNG、BMP、PDF、TIFF
        - PDF、TIFFは最大2,000ページ(Freeレベルは最初の2ページ)
        - ファイルサイズ50MB未満(Freeレベルは4MB)
        - 画像サイズ50 x 50 ピクセル以上 10,000 x 10,000 ピクセル以下
- 2.画像分析
    - 物、顔、成人向けコンテンツ、自動生成されたテキストの説明など、さまざまな視覚的特徴を画像から抽出します。
    - 機能
        - 視覚的特徴のタグ付け
        - 物体を検出する
        - ブランドを検出する
        - イメージの分類(英語のみサポート)
        - イメージの説明
        - 顔を検出する
        - イメージの種類の検出
        - ドメイン固有のコンテンツの検出
        - 配色の検出
        - サムネイルの生成
        - 関心領域を取得する
- 3.空間分析(パブリック プレビュー) 
    - ビデオ フィードでの人々の存在と移動を分析し、他のシステムが応答できるイベントを生成します。
    - 本機能の利用には申請が必要(2021/5時点)


また、Microsoft Learnを活用することで、簡単な演習を通して学びを深めることができます。

- [Computer Vision サービスを使用して画像を分析する](https://docs.microsoft.com/ja-jp/learn/modules/analyze-images-computer-vision/)
- [Computer Vision サービスを使用してテキストを読み取る](https://docs.microsoft.com/ja-jp/learn/modules/read-text-computer-vision/)

### ▼1.1.2.Custom Vision

- 特定のシナリオにコンピューター ビジョンを適用するための AI サービスおよびエンド ツー エンド プラットフォーム
- Microsoftの学習済モデルを使用した画像分析サービスという点ではComputer Visionと変わりませんが、Microsoftの学習済モデルをベースにユーザー独自の画像分析モデルを作成することができます。
- Microsoftの学習済モデルをベースにすることにより、一から作るよりも学習用データが少量で済むというのが売りです。

[概要](https://docs.microsoft.com/ja-jp/azure/cognitive-services/custom-vision-service/overview)


- 独自の画像識別子を構築、デプロイ、改良できるようにする画像認識サービスです。
-  Computer Vision サービスとは異なり、Custom Vision ではユーザーがラベルを指定し、それらを検出するためのカスタム モデルをトレーニングできます。
-  オフラインで使用するために、モデル自体をエクスポートすることもできます。
-  Custom Vision の機能は、2 つに分割できます。
    -  画像の分類：画像に 1 つまたは複数のラベルを適用します。
    -  オブジェクトの検出：同様のことを行いますが、適用されたラベルを見つけることができる画像内の座標も返されます。
-  Custom Vision サービスは、画像間の主な違いをすばやく認識するために最適化されているため、少量のデータを含むモデルでプロトタイプの作成を始めることができます。
-  Custom Vision アルゴリズムのいくつかの種類の中から、特定の対象素材 (たとえば、ランドマークや小売り品目) が含まれている画像に適したものを選択することもできます。
- Custom Vision プロジェクトのドメインを選択する
    - 画像の分類
        - 全般, 全般[A1], 全般[A2]：さまざまな画像分類タスクに最適化されています。A1は精度向上、A2は推論時間短縮、精度向上
        - 食料,　ランドマーク, 小売
        - コンパクト ドメイン：エッジ デバイスでのリアルタイムの分類の制約に最適化されています。
    - オブジェクトの検出
        - 全般, 全般[A1]
        - ロゴ, シェルブの製品
        - コンパクト ドメイン：エッジ デバイス上でのリアルタイムのオブジェクト検出の制約に最適化されています。
    - コンパクト ドメインで生成されたモデルは、ローカルで実行するためにエクスポートできます。

Microsoft Learnを活用することで、簡単な演習を通して学びを深めることができます。

- [Custom Vision サービスを使用して画像を分類する](https://docs.microsoft.com/ja-jp/learn/modules/classify-images-custom-vision/)
- [Custom Vision サービスを使用して画像内の物体を検出する](https://docs.microsoft.com/ja-jp/learn/modules/detect-objects-images-custom-vision/)

### ▼1.1.3.Face サービス

- 画像内の顔を分析する AI サービス

[デモ](https://azure.microsoft.com/ja-jp/services/cognitive-services/face/#demo)

- 指定した画像に対してどのような情報が返ってくるかを、実際の画像で確認することができます。

[概要](https://docs.microsoft.com/ja-jp/azure/cognitive-services/face/overview)

- Azure Face サービスは、画像に含まれている人の顔の検出、認識、分析する AI アルゴリズムを提供します。

#### 主な顔分析機能

- 顔検出(Detect API)
    - 画像に含まれている人の顔を検出し、その位置の四角形の座標を返します。 
    - 顔検出では、オプションとして、頭部姿勢、性別、年齢、ひげ、眼鏡などの顔関連の属性を抽出できます。
    - 顔検出機能は Computer Vision サービスでもご利用いただけます。 
    - ただし、その他の Face 操作、たとえば識別、検証、類似検索、グループ化などを実行したい場合は、こちらの Face サービスを使用する必要があります。
- 顔検証(Verify API)
    - Detection をベースとしており、"その 2 つの画像は同一人物か?" という問いに答えるものです。
    - "一対一" のマッチングとも呼ばれます。
    - 本人確認や出入管理のシナリオで、前もって撮影された画像 (政府発行の ID カードの写真など) と写真が一致していることを確認する目的に検証を使用できます。
- 顔識別(Identify API)
    - Detection をベースとしており、"検出されたこの顔は、データベースに登録されているいずれかの顔と一致するか?" という問いに答えるものです。
    - "一対多" のマッチングとも呼ばれます。
- 似た顔の検索(Find Similar API)
    - ターゲットの顔と候補となる一連の顔との間で顔照合を行い、ターゲットの顔によく似ている一連の顔が検索されます。
    - matchPerson と matchFace の 2 つの動作モードがサポートされています。
        - matchPerson モードでは、Verify API を使用して同一人物についてフィルター処理が行われた後、似た顔が返されます。
        - matchFace モードでは、同一人物フィルターは無視されます。 同一人物のものであるかどうかに関係なく、似ている顔の候補のリストが返されます。
- 顔のグループ化(Group API )
    - 未知の顔の集合が、類似性に基づいて複数のグループに分けられます。
    - それぞれのグループは、元の顔の集合から得られる、互いに素な真部分集合です。
    - グループ内のすべての顔は、同じ人物に属する可能性があります。
    - 1 人の人物について、いくつかの異なるグループが存在する可能性があります。
    -  グループは、たとえば表情などの別の要因によって区別されます。
    -  各グループは、最大で 100 万個の異なる person オブジェクトを含むことができます。 
    -  各 person オブジェクトには最大で 248 個の顔を登録できます。


Microsoft Learnを活用することで、簡単な演習を通して学びを深めることができます。

- [Face サービスを使用した顔の検出と分析](https://docs.microsoft.com/ja-jp/learn/modules/detect-analyze-faces/)

### ▼1.1.4.Form Recognizer

- AI を利用したドキュメント抽出サービスでドキュメントを解釈する

[使用例](https://azure.microsoft.com/ja-jp/services/form-recognizer/#features)

[概要](https://docs.microsoft.com/ja-jp/azure/cognitive-services/form-recognizer/overview?tabs=v2-1)

- 機械学習テクノロジを利用して自動データ処理ソフトウェアを構築することを可能にするコグニティブ サービスです。
- ドキュメントからテキスト、キーと値のペア、選択マーク、テーブル、構造を特定して抽出します。
- このサービスによって、元のファイル、境界ボックス、信頼度などのリレーションシップを含む構造化データが出力されます。
- 手作業による操作やデータ サイエンスに関する専門知識があまりなくても、特定のコンテンツに合わせた正確な結果がすばやく得られます。

定型ドキュメントからの情報抽出を自動化するサービスと言えるかと思います。

Microsoft Learnを活用することで、簡単な演習を通して学びを深めることができます。

- [Form Recognizer サービスを使用した領収書の分析](https://docs.microsoft.com/ja-jp/learn/modules/analyze-receipts-form-recognizer/)

### ▼1.1.5.Video Indexer

[概要](https://docs.microsoft.com/ja-jp/azure/media-services/video-indexer/video-indexer-overview)

- Video Indexer (VI) は、Azure Media Services AI ソリューションであり、Azure Cognitive Services ブランドの一部です。
- Video Indexer では、複数のチャンネル (音声、ボーカル、ビジュアル) に基づく機械学習モデルを使用して、(データ分析やコーディング スキルを必要としない) 詳細な分析情報を抽出する機能を提供します。
- モデルのカスタマイズとトレーニングを行うことができます。

- ビデオから取得できる分析情報
    - 顔検出:ビデオに表示される顔を検出し、グループ化します。
    - 著名人の識別:Video Indexer では、世界中の100 万人を超える著名人を自動的に識別します。
    - アカウントベースの顔識別:Video Indexer では、特定のアカウントのモデルをトレーニングします。
    - 顔のサムネイルの抽出 ("最適な顔")
    - ビジュアル テキストの認識 (OCR)
    - ビジュアル コンテンツ モデレーション
    - ラベルの識別
    - シーンのセグメント化
    - などなど
- オーディオから取得できる分析情報
    - 音声の文字起こし
    - 自動言語検出
    - 複数言語の音声識別と文字起こし
    - 字幕
    - 感情の検出
    - 翻訳
    - などなど

Microsoft Learnを活用することで、簡単な演習を通して学びを深めることができます。

- [Video Indexer サービスを使用してビデオから分析情報を抽出する](https://docs.microsoft.com/ja-jp/learn/modules/extract-insights-from-videos-with-video-indexer-service/)


## ■1.2.音声

[概要](https://docs.microsoft.com/ja-jp/azure/cognitive-services/speech-service/overview)


- 音声テキスト変換、テキスト読み上げ、音声翻訳が 1 つの Azure サブスクリプションにまとめられたもの
- Speech CLI、Speech SDK、Speech Devices SDK、Speech Studio、または REST API を使用して、アプリケーション、ツール、デバイスを簡単に音声対応にできます。

#### 主な機能

- 音声テキスト変換(Speech to Text)
    - リアルタイムの音声テキスト変換
        - 音声テキスト変換では、オーディオ ストリームまたはローカル ファイルからテキストへの文字起こしまたは翻訳がリアルタイムで行われ、結果のテキストをアプリケーション、ツール、またはデバイスで使用したり表示したりできます。 
        - 音声テキスト変換を Language Understanding (LUIS) で使用し、文字起こしされた音声からユーザーの意図を抽出して、音声コマンドで対応します。
    - 一括音声テキスト変換
        - 一括音声テキスト変換では、Azure Blob Storage に格納された大量の音声データを対象に、音声からテキストへの文字起こしを非同期で行うことができます。 
        - 音声からテキストへの変換に加え、一括音声テキスト変換は、ダイアライゼーション(いつ、誰が話しているのか)や感情分析にも対応します。
    - マルチデバイスの会話
    - 会話の文字起こし
    - カスタム音声モデルの作成
- 音声合成(Text to Speech)
    - テキスト読み上げ
    - Custom Voice の作成
- 音声翻訳(Speech Translation)
    - 音声のリアルタイムの多言語翻訳がアプリケーション、ツール、デバイスで可能になります。
- 音声アシスタント
    - Bot Framework の Direct Line Speech チャネルまたは統合カスタム コマンド サービスを使用してタスクを遂行するアシスタントの実装とデバイスとの間に、高速で信頼性の高い対話を実現します。
- 話者の検証と識別(Speaker Recognition)
    - Speaker Recognition サービスは、固有の音声特性によって話者を検証および識別するアルゴリズムを提供します。 
    - Speaker Recognition は、"だれが話しているのか" という質問に回答するために使用されます。

Microsoft Learnを活用することで、簡単な演習を通して学びを深めることができます。

- [音声の認識と合成](https://docs.microsoft.com/ja-jp/learn/modules/recognize-synthesize-speech/)
- [テキストと音声を翻訳する](https://docs.microsoft.com/ja-jp/learn/modules/translate-text-with-translation-service/)

## ■1.3.Language

お使いのアプリが、構築済みスクリプトで自然言語を処理し、センチメントを評価し、ユーザーの求めるものを認識する方法を学習できるようにします。

### ▼1.3.1.Immersive Reader

[概要](https://docs.microsoft.com/ja-jp/azure/cognitive-services/immersive-reader/overview)

- 新しい読者、言語学習者、ディスレクシア (失読症) などの学習障碍者の読解力向上のために実証済みの手法を実装する、包括的に設計されたツールです。
- スタンドアロンの Web アプリケーション
- イマーシブ リーダー クライアント ライブラリを使用して呼び出すと、既存の Web アプリケーション上の iframe 内に表示されます。 
- Web アプリケーションがイマーシブ リーダー サービスを呼び出すときに、リーダーに表示するコンテンツを指定します。
-  イマーシブ リーダー クライアント ライブラリを使用すると、Microsoft Word および Microsoft One Note で使用されるものと同じテクノロジを利用して、Web アプリケーションを改良できます。
- 主な機能
    - 読みやすくするためにコンテンツを分離する
    - 一般的な単語の絵を表示する
    - 品詞を強調表示する
    - コンテンツを読み上げる
    - コンテンツをリアルタイムで翻訳する
    - 単語を音節に分割する


### ▼1.3.2.Language Understanding(LUIS)

- ユーザーが自然言語を使用してアプリケーション、ボット、IoT デバイスとやり取りできるようにする、自然言語理解 (NLU) AI サービスです。

[デモ](https://azure.microsoft.com/ja-jp/services/cognitive-services/language-understanding-intelligent-service/#demo)

- 実際の動作イメージを確認できます。

[概要](https://docs.microsoft.com/ja-jp/azure/cognitive-services/luis/what-is-luis)

- ユーザーが自然言語を使用してアプリケーション、ボット、IoT デバイスとやり取りできるようにする、自然言語理解 (NLU) AI サービスです。
- 自然言語を理解できるアプリケーションを構築できます。
- カスタムの機械学習インテリジェンスをユーザーの自然言語での会話テキストに適用して、全体の意味を予測し、関連性のある詳細な情報を引き出す、クラウドベースの会話型 AI サービス
- LUIS のクライアント アプリケーションは、ユーザーと自然言語でコミュニケーションを行ってタスクを完了する会話型アプリケーションであれば、どれでもかまいません。
    - 例として、ソーシャル メディア アプリ、AI チャットボット、音声対応デスクトップ アプリケーションがあります。
- 自然言語処理 AI のサブセットである 自然言語理解(NLU) の形式で人工知能 (AI) を提供します。
- LUIS アプリは、構築済みのドメイン モデルをひな形にできるほか、独自にモデルを構築したり、構築済みのドメインの一部に独自の情報を融合したりすることができます。
    - 構築済みのモデル: LUIS には、意図、発話、および構築済みのエンティティを含む構築済みのドメイン モデルが多数あります。 
        - 構築済みのモデルの意図と発話を使用せずに、構築済みのエンティティを使用できます。 
        - 構築済みのドメイン モデルには、必要な設計がすべて含まれているため、LUIS の使用をすぐに開始できる優れた方法です。
    - カスタム モデル の LUIS を使うと、意図を含む独自のカスタムモデルやエンティティを複数の方法で識別できます。 
- 手順
    - 1.モデルを設計して構築する
        - 意図 と呼ばれる、ユーザーの意図のカテゴリを使用してモデルを設計します。 
        - 意図にはそれぞれ、ユーザー 発話 の例が必要です。 
    - 2.クエリ予測を取得する
        - アプリのモデルがトレーニングされてエンドポイントに発行された後、クライアント アプリケーション (チャットボットなど) によって、予測エンドポイント API に発話が送信されます。 
        - API によって、分析のために発話にモデルが適用され、予測結果が JSON 形式で返されます。
        - エンドポイントからの JSON 形式の応答には、少なくとも、クエリの発話と上位スコアの意図が含まれます。
        - Contact Type エンティティや全体的なセンチメントなどのデータを抽出することもできます。
    - 3.モデルの予測の改善
        - LUIS アプリが公開され、実際のユーザーの発話を受け取ると、予測精度向上のためにエンドポイント発話のアクティブな学習が LUIS によって提供されます。
- 他の Cognitive Services との統合
    - QnA Maker は、多種多様なテキストを質問と回答のナレッジ ベースに統合できるようにします。
    - Speech サービスは、話し言葉による要求をテキストに変換します。
    - 既存の LUIS リソースの一部として Text Analytics の機能を提供します。 
    - この機能には、あらかじめ構築された keyPhrase エンティティを使用した感情分析とキー フレーズ抽出が含まれます。

Microsoft Learnを活用することで、簡単な演習を通して学びを深めることができます。

- [Language Understanding Intelligent Service (LUIS) を使用して会話用のインテリジェンスをアプリに追加する](https://docs.microsoft.com/ja-jp/learn/modules/create-and-publish-a-luis-model/)


### ▼1.3.3.QnA Maker

- 既存データに基づいて対話型の Q&A レイヤーを作成する、クラウドベースの API サービス

[概要](https://docs.microsoft.com/ja-jp/azure/cognitive-services/qnamaker/overview/overview)

- データに自然な会話レイヤーを作成できるクラウドベースの自然言語処理 (NLP) サービス
- 任意の入力に対して、カスタム ナレッジ ベース (KB) の情報から最も適切な回答を見つける目的で使用されます。
- QnA Maker を使用する場合
    - 静的な情報がある場合
    - 要求、質問、またはコマンドに同じ回答を提供する場合
    - メタ情報に基づいて静的情報をフィルター処理する場合
    - 静的な情報を含むボットの会話を管理する場合
- QnA Maker では、質問と回答がペアになったナレッジ ベースにコンテンツをインポートします。
- インポート プロセスでは、質問と回答のペア間のリレーションシップを意味する、構造化コンテンツと半構造化コンテンツのパーツ間のリレーションシップに関する情報を抽出します。
- 以下の手順で、半構造化コンテンツから簡単にボットを作成することができます。
    - 1.ナレッジ ベースの作成
    - 2.ナレッジ ベースのテストと公開
    - 3.ボットの作成
    - 4.フィードバック ループを作成する

Microsoft Learnを活用することで、簡単な演習を通して学びを深めることができます。

- [QnA Maker と Azure Bot Service を使用してボットを作成する](https://docs.microsoft.com/ja-jp/learn/modules/build-faq-chatbot-qna-maker-azure-bot-service/)

### ▼1.3.4.Text Analytics

- 構造化されていないテキスト内のセンチメント分析、エンティティ、関係、キー フレーズなどの分析情報を得られるテキストマイニングAI サービス

[概要](https://docs.microsoft.com/ja-jp/azure/cognitive-services/text-analytics/overview)

- テキスト マイニングとテキスト分析のための自然言語処理 (NLP) 機能を提供するクラウドベースのサービス
- 感情分析、オピニオン マイニング、キー フレーズ抽出、言語検出、名前付きエンティティの認識などを備えている
- 主な機能
    - センチメント分析
    - キー フレーズの抽出
    - 言語検出
    - 名前付きエンティティの認識(NER)
- 一般的なワークフロー
    - 1.Text Analytics 用の Azure リソースを作成します。 その後、対象の要求を認証するために生成されたキーを取得します。
    - 2.未加工の非構造化テキストとしてデータを含む要求を JSON で表します。
    - 3.任意のリソース (感情分析、キー フレーズ抽出、言語検出、名前付きエンティティの認識) を付加し、新規登録時に確立されたエンドポイントに要求を投稿します。
    - 4.応答をローカルでストリームまたは保存します。 要求に基づき、結果は感情スコア、抽出されたキー フレーズのコレクション、または言語コードになります。

- **センチメント分析**
    - 文章とドキュメントレベルでサービスによって検出された最も高い信頼度スコアに基づいて、センチメント ラベル ("negative"、"neutral"、"positive" など) を提供します。
    - positive、neutral、negative (肯定的、中立的、否定的) のセンチメントに関し、各ドキュメントとその中の文章に対して 0 と 1 の間の信頼度スコアを返します。
    - コンテナーを使用してオンプレミスでサービスを実行することもできます。

- **キー フレーズの抽出**
    - テキスト内の主要な概念をすばやく特定します。

- **言語検出**
    - 言語検出を使用すると、さまざまな言語、異形、方言、一部の地方言語や文化言語で、入力テキストの記述言語を検出するほか、要求で送信されたドキュメントごとに 1 つの言語コードを報告することができます。
    - 言語コードは信頼度スコアとペアになっています。

- **名前付きエンティティの認識**
    - テキスト内のエンティティを、人、場所、組織、数量として識別して分類できます。
    - 既知のエンティティも認識され、Web 上の詳細情報にリンクされます。

Microsoft Learnを活用することで、簡単な演習を通して学びを深めることができます。

- [Text Analytics サービスを使用してテキストを分析する](https://docs.microsoft.com/ja-jp/learn/modules/analyze-text-with-text-analytics-service/)
- [Text Analytics API を使用してテキスト内のセンチメントを発見する](https://docs.microsoft.com/ja-jp/learn/modules/classify-user-feedback-with-the-text-analytics-api/)
- [Text Analytics API を使用してテキスト内のエンティティを認識する](https://docs.microsoft.com/ja-jp/learn/modules/recognize-entities-text-analytics-api/)
- [Text Analytics API を使用してテキストからキー フレーズを抽出する](https://docs.microsoft.com/ja-jp/learn/modules/extract-key-phrases-text-analytics-api/)
- [Text Analytics API を使用した言語の検出](https://docs.microsoft.com/ja-jp/learn/modules/detect-language-text-analytics-api/)

### ▼1.3.5.Translator

[概要](https://docs.microsoft.com/ja-jp/azure/cognitive-services/translator/translator-info-overview)

- クラウドベースの機械翻訳サービスであり、インテリジェント アプリを構築するたに使用されるコグニティブ API の Azure Cognitive Services ファミリに含まれています。
- Microsoft の多くの製品やサービスに活かされている
- Translator によって支えられた音声翻訳は、Azure Speech サービスを通じて利用することもできます。
- テキスト翻訳、表記変換、言語検出、辞書の多言語化を実現します。
- Translator サービスの拡張機能であるカスタム翻訳ツールは、ニューラル翻訳システムをカスタマイズしたり、特定の用語やスタイルに関して翻訳を改善したりするために使用できます。
    - Custom Translator を使用すると、独自のビジネスや業界で使用される用語を処理する翻訳システムを構築できます。 
- 主な用途
    - テキストの翻訳
    - テキストを表記変換する
    - 言語の識別と検出
    - 文の長さの計算
    - 翻訳の代替候補と文中における単語の使用例の取得

## ■1.4.決定

よりスマートな意思決定をすばやく行うためのサービスを提供します。

### ▼1.4.1.Anomaly Detector

- 発生前に問題を予測するための AI サービス

[概要](https://docs.microsoft.com/ja-jp/azure/cognitive-services/anomaly-detector/overview)

- Anomaly Detector では、時系列データを監視し、その中の異常を検出できます。
-  Anomaly Detector API のアルゴリズムでは、産業、シナリオ、データ量に関係なく、データに最適なモデルが自動的に特定され、適用されます。
-  この API では、時系列データを使用し、異常検出の境界、予想される値、異常となるデータ ポイントが判断されます。
- 特徴
    - リアルタイムの異常検出。
    - バッチとして設定されたデータ全体で異常を検出します。
    - バッチとして設定されたデータ全体で変化点を検出します。
    - データに関する追加情報を取得します。
    - 異常検出の境界を調整します。
- 多変量時系列の異常検出 (パブリック プレビュー)(Multivariate time series Anomaly Detection)
    - 機械学習の知識やラベル付けされたデータがなくても、一連のメトリックから異常を検出するための高度な AI を開発者がさらに容易に統合することができます。
    - 最大 300 の異なる信号間の依存関係や相互相関が自動的に主要な要因として考慮されるようになりました。
    - Anomaly Detector の新しい API を使用して、開発者は、多変量時系列の異常検出機能を、予測メンテナンス ソリューション、複雑なエンタープライズ ソフトウェア用の AIOps 監視ソリューション、またはビジネス インテリジェンス ツールに簡単に統合できるようになりました。
    - Anomaly Detector 多変量のパブリック プレビューは現在、米国西部 2、米国東部 2、西ヨーロッパの 3 つのリージョンでご利用いただけます。


Microsoft Learnを活用することで学びを深めることができます。
(演習は含まれていないよう)

- [Anomaly Detector の概要](https://docs.microsoft.com/ja-jp/learn/modules/intro-to-anomaly-detector/)

### ▼1.4.2.Content Moderator

- コンピューター支援型コンテンツ モデレーション API と画像、テキスト、ビデオを対象とした目視レビュー ツール

[概要](https://docs.microsoft.com/ja-jp/azure/cognitive-services/content-moderator/overview)

- 不快感を与える可能性がある内容、リスクのある内容、その他望ましくない可能性のある内容を管理できる AI サービスです。
- テキスト、画像、動画をスキャンし、コンテンツ フラグを自動的に適用する AI 搭載コンテンツ モデレーション サービスと、人間のレビュー担当者からなるチーム用のオンライン モデレーター環境であるレビュー ツールが含まれています。
- モデレート API：不適切または好ましくない可能性がある素材についてコンテンツをチェックします。
    - テキストのモデレーション
    - カスタム用語リスト
    - 画像のモデレーション
    - カスタム画像リスト
    - ビデオのモデレーション
- Webベースのレビュー ツール

Microsoft Learnを活用することで、簡単な演習を通して学びを深めることができます。

- [Content Moderator の概要](https://docs.microsoft.com/ja-jp/learn/modules/intro-to-content-moderator/)
- [Azure Content Moderator を使用してテキストを分類およびモデレートする](https://docs.microsoft.com/ja-jp/learn/modules/classify-and-moderate-text-with-azure-content-moderator/)

### ▼1.4.3.Metrics Advisor(プレビュー)

- メトリクスをプロアクティブに監視し、問題を診断する AI 分析サービス

[概要](https://docs.microsoft.com/ja-jp/azure/cognitive-services/metrics-advisor/overview)

- AI を使用してデータの監視と時系列データにおける異常検出を実行するサービス
- このサービスは、データにモデルを適用するプロセスを自動化すると共に、機械学習の知識を得なくてもデータ インジェスト、異常検出、診断を行うことができる一連の API と Web ベースのワークスペースを備えています。
- Metrics Advisor を使用すると、次のことができます。
    - 複数のデータ ソースからの多次元データを分析する
    - 異常を識別して関連付ける
    - 実際のデータで使用される異常検出モデルを構成して微調整する
    - 異常を診断し、根本原因分析に役立てる

[Anomaly Detector](https://azure.microsoft.com/ja-jp/services/cognitive-services/anomaly-detector/)との違いがよくわからないんですが、Anomaly Detectorも包含されたよりマネージドなサービスなんでしょうかね？

### ▼1.4.4.Personalizer

- あらゆるユーザーにパーソナライズされた適切なエクスペリエンスを届ける、AI サービス

[概要](https://docs.microsoft.com/ja-jp/azure/cognitive-services/personalizer/what-is-personalizer)

- 最適なコンテンツ項目をアプリケーションが選択してユーザーに表示できるよう支援するクラウドベースのサービスです。 
- Personalizer サービスを使用すると、買い物客に提示すべき製品を判断したり、広告の最適な表示位置を見つけ出したりすることができます。
- そのコンテンツがユーザーに表示されると、アプリケーションは、ユーザーのリアクションを監視し、Personalizer サービスに報酬スコアをレポート バックします。
- そうすることで機械学習モデルは継続的に改善され、また受け取ったコンテキスト情報に基づいて最適なコンテンツ項目を選択する Personalizer の能力も継続的に改善されます。
- 強化学習をベースとしたサービス

Microsoft Learnを活用することで学びを深めることができます。
(演習は含まれていないよう)

- [Personalizer の概要](https://docs.microsoft.com/ja-jp/learn/modules/intro-to-personalizer/)

## ■1-5.検索

[概要](https://docs.microsoft.com/ja-jp/azure/cognitive-services/bing-web-search/bing-api-comparison)

- Bing Search API を使用すると、広告を除外して Web ページ、画像、ニュース、場所などを検索する、Web に接続されたアプリやサービスを構築できます。
- Bing Search REST API または SDK を使用して検索要求を送信することにより、Web 検索の関連情報とコンテンツを取得できます。
- 特定の種類のオンライン コンテンツを検索するアプリケーションの場合は、以下の検索 API のいずれかを検討します。
    - Entity Search
        - 人、場所、物などのエンティティを含む検索結果が返されます。
    - Image Search
    - News Search
    - Video Search
    - Visual Search
        - 画像に関する分析情報を返します。 
        - 分析情報とは、視覚的に似ている画像、ショッピング ソース、その画像が含まれる Web ページなどです。
        - 画像をアップロードするか、画像の URL を指定することができます。 
    - Local Business Search
        - アプリケーションでは検索クエリに基づいて地元企業に関する連絡先や場所の情報を検索できます。
- Bing Custom Search API でカスタム検索インスタンスを作成すると、関心のあるコンテンツとトピックだけに焦点を当てた検索エクスペリエンスを作成することができます。 
- Bing Autosuggest API を使用すると、検索候補がリアルタイムで返されるので、アプリケーションの検索エクスペリエンスが向上します。
- Bing Statistics では、アプリケーションで使用されている Bing Search API に関する分析情報が提供されます。 使用できる分析には、呼び出しのボリューム、上位のクエリ文字列、地理的な分布などが含まれます。

類似のサービスとして[Cognitive Search](https://docs.microsoft.com/ja-jp/azure/search/search-what-is-azure-search)がありますが、Microsoftの検索エンジンBingサービスをそのまま使うのがBing Searchで、カスタマイズできるのがCognitive Searchなのかなと、私は理解しました。

# ■2.Azure Machine Learning

- 企業向け仕様の機械学習サービスでモデルをよりすばやく構築してデプロイする
- エンド ツー エンドの機械学習ライフサイクルを加速させる

[概要](https://docs.microsoft.com/ja-jp/azure/machine-learning/overview-what-is-azure-ml)

- Azure Machine Learning は、従来の ML からディープ ラーニング、教師あり学習と教師なし学習まで、あらゆる種類の機械学習に使用できます。 
- SDK を使用して Python または R のコードを記述するか、または Studio でのコード不要 (またはローコード) オプションを使用するかにかかわらず、Azure Machine Learning ワークスペースで機械学習およびディープ ラーニング モデルを構築、トレーニング、追跡できます。
- ローカル コンピューターでトレーニングを開始し、その後、クラウドにスケールアウトします。
- 各タスクに適合する機械学習ツール
    - Azure Machine Learning デザイナー: ドラッグアンドドロップ モジュールを使用して実験を構築し、ロー コード環境でパイプラインをデプロイします。
    - 多くのモデルのソリューション アクセラレータ (プレビュー) は Azure Machine Learning 上に構築されており、数百または数千もの機械学習モデルをトレーニング、操作、管理できます
    - Visual Studio Code 用の Machine Learning 拡張機能 (プレビュー) は、機械学習プロジェクトの構築と管理を目的としたフル機能の開発環境を提供します。
    - Machine Learning CLI は、Azure Machine Learning リソースをコマンド ラインから管理するためのコマンドを備えた Azure CLI 拡張機能です。
    - PyTorch、TensorFlow、scikit-learn など、エンド ツー エンドの機械学習プロセスのトレーニング、デプロイ、管理を目的としたさまざまなオープンソース フレームワークとの統合。
    - Ray RLlib を使用した強化学習
    - MLflow を使用してメトリックを追跡し、モデルをデプロイする
    - Kubeflow を使用してエンドツーエンドのワークフロー パイプラインを構築する

Microsoft Learnを活用することで、簡単な演習を通して学びを深めることができます。

- [Azure Machine Learning を使用したコードなしの予測モデルの作成](https://docs.microsoft.com/ja-jp/learn/paths/create-no-code-predictive-models-azure-machine-learning/)
- [Azure Machine Learning を使用して AI ソリューションを構築する](https://docs.microsoft.com/ja-jp/learn/paths/build-ai-solutions-with-azure-ml-service/)

前者が初級者向け、後者が中級者向けで、ともに複数のモジュールが含まれたラーニングパスとなっています。

# ■3.Azure Bot Service

- エンタープライズグレードの会話型AIを設計および構築するための包括的な開発環境

[概要](https://azure.microsoft.com/ja-jp/services/bot-services/)

- ビジュアル デザイナーを使用してボットを作成する: Bot Framework Composer
- [コードを使用してボットを作成する: Bot Framework SDK](https://docs.microsoft.com/ja-jp/azure/bot-service/bot-service-overview-introduction?view=azure-bot-service-4.0)
- Azure Bot ServiceのStandard チャネルとPremium チャネルの違い
    - Standard チャネルには、Microsoft のファーストパーティ サービス (Skype、Cortana、Microsoft Teams など) や、一般提供されているボット API を使用するサービス (Facebook、Slack など) が含まれます。
    - Premium チャネルでは、ボットを使用して、お客様の独自のアプリケーションや Web サイト内で、ユーザーと信頼できる通信を行うことができます。これらのチャネルでは、オープン ソースの DirectLine と Web Chat のクライアントをカスタマイズすることで、ユーザーのクライアント エクスペリエンスをカスタマイズできます。詳細については、Bot Service のドキュメントをご覧ください。
- [複数の LUIS および QnA モデルを使用する](https://docs.microsoft.com/ja-jp/azure/bot-service/bot-builder-tutorial-dispatch?view=azure-bot-service-4.0&tabs=cs)
    - ボットで複数の LUIS モデルおよび QnA Maker ナレッジ ベース (ナレッジ ベース) が使用されている場合は、ディスパッチ ツールを使用して、どの LUIS モデルまたは QnA Maker ナレッジ ベースがユーザー入力に最も適しているかを判断できます。
    - ディスパッチ ツールでは、これを行うために、ユーザー入力を正しいモデルにルーティングする 1 つの LUIS アプリが作成されます。
- [ボットに認証を追加する](https://docs.microsoft.com/ja-jp/azure/bot-service/bot-builder-authentication?view=azure-bot-service-4.0&tabs=aadv2%2Ccsharp)
    - Azure Bot Service v4 SDK を使用すると、ユーザー認証を必要とするオンラインリソースにアクセスできるボットの開発が容易になります。
    - Azure は OAuth 2.0 を使用して各ユーザーの資格情報に基づいてトークンを生成するので、bot は認証トークンを管理する必要がありません。 
    - ボットでは、Azure によって生成されたトークンを使用して、それらのリソースにアクセスします。
- [ユーザーへのウェルカム メッセージの送信](https://docs.microsoft.com/ja-jp/azure/bot-service/bot-builder-send-welcome-message?view=azure-bot-service-4.0&tabs=csharp)
    - HeroCardは、大きな画像、タイトル、テキスト、およびアクションボタンを備えたカードを定義します。
    - SigninCardは、ユーザーがサービスにサインインできるようにするカードを定義します。
- Bot Service templates
    - Basic bot
        - ダイアログを使用してユーザー入力に応答するボットを作成する
    - Form bot
        - ガイド付き会話を介してユーザーからの入力を収集するボットを作成する
        - フォームボットは、ユーザーから特定の情報セットを収集するように設計されています。
    - Language Understanding bot
        - 自然言語モデルを使用してユーザーの意図を理解するボットを作成する
    - Question and Answer bot
        - 質問と回答のペアなどの半構造化データを明確で役立つ回答に抽出するボットを作成する
        - 質問と回答のテンプレートを使用してボットを作成する場合は、QnA Makerにサインインして、新しいQnAサービスを作成する必要があります。
    - Proactive bot
        - ユーザーにプロアクティブなメッセージを送信できるボットを作成する
        - たとえば、ボットがタイマーやリマインダーを設定した場合、時間になったらユーザーに通知する必要があります。
        - または、ボットが外部イベントに関する通知を受信した場合、その情報をユーザーに伝達する必要がある場合があります。

Microsoft Learnを活用することで、簡単な演習を通して学びを深めることができます。

[Azure Bot Service を使用してインテリジェントなボットを作成する](https://docs.microsoft.com/ja-jp/learn/paths/create-bots-with-the-azure-bot-service/)

# ■4.Azure Cognitive Search

[概要](https://docs.microsoft.com/ja-jp/azure/search/search-what-is-azure-search)

- Web、モバイル、エンタープライズの各アプリケーション内のプライベートな異種コンテンツに対する豊富な検索エクスペリエンスを構築するための API とツールを開発者に提供するクラウド検索サービスです。
- 検索サービスには次のコンポーネントがあります。
    - フルテキスト検索の検索エンジン
    - ユーザーが所有するインデックス付けされたコンテンツの永続的ストレージ
    - コンテンツのインデックス作成とクエリのための API
- アーキテクチャ上、検索サービスは、インデックスが設定されていないデータを含む外部データ ストアと、検索インデックスにクエリ要求を送信して応答を処理するクライアント アプリとの間に配置されます。
- 検索は、対外的に他の Azure サービスと統合できます。
    - Azure データ ソースからのデータのインジェストと取得を自動化する "インデクサー" という形式があるほか、
    - Cognitive Services で提供されている AI (画像やテキストの分析など) や、Azure Machine Learning 内で作成したり Azure Functions 内にラップしたりするカスタム AI を組み込んだ "スキルセット" という形式があります。

**[Azure Cognitive Search のインデクサー](https://docs.microsoft.com/ja-jp/azure/search/search-indexer-overview)**

- Azure Cognitive Search の "インデクサー" は、検索可能なテキストとメタデータを Azure 外部データ ソースから抽出し、データ ソースとインデックス間のフィールドのマッピングを検索インデックスに設定するクローラーです。
- この方法は、インデックスにデータを追加するコードを記述することなく、サービスがデータをプルするため、「プル モデル」と呼ばれることもあります。
- インデクサーは Azure 専用であり、Azure SQL、Azure Cosmos DB、Azure Table Storage、Blob Storage 用にそれぞれ個別のインデクサーを使用します。
- インデクサーを構成するときは、データ ソース (抽出元) とインデックス (ターゲット) を指定します。
- インデクサーは、オンデマンドで実行することも、5 分ごとに実行される定期的なデータ更新スケジュールで実行することもできます。


# ■参考資料

- [Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/?product=featured)
- [Microsoft Learn](https://docs.microsoft.com/ja-jp/learn/)
- [Azure クラウド サービス | Microsoft Azure](https://azure.microsoft.com/ja-jp/services/)