Azure Stream Analytics と Azure Machine Learning Studio (classic) を使用した感情分析の実行Perform sentiment analysis with Azure Stream Analytics and Azure Machine Learning Studio (classic)

この記事では、Azure Machine Learning Studio (クラシック) を統合する単純な Azure Stream Analytics ジョブをすばやくセットアップする方法について説明します。This article describes how to quickly set up a simple Azure Stream Analytics job that integrates Azure Machine Learning Studio (classic). ここでは、Cortana Intelligence ギャラリーの Machine Learning 感情分析モデルを利用して、ストリーミング テキスト データを分析し、リアルタイムでセンチメント スコアを決定します。You use a Machine Learning sentiment analytics model from the Cortana Intelligence Gallery to analyze streaming text data and determine the sentiment score in real time. Cortana Intelligence Suite を使用すると、感情分析モデルを構築する複雑な作業を心配することなくこのタスクを実行できます。Using the Cortana Intelligence Suite lets you accomplish this task without worrying about the intricacies of building a sentiment analytics model.

ヒント

パフォーマンスと信頼性を向上させるために、Azure Machine Learning Studio (classic) UDF の代わりに Azure Machine Learning UDF を使用することを強くお勧めします。It is highly recommended to use Azure Machine Learning UDFs instead of Azure Machine Learning Studio (classic) UDF for improved performance and reliability.

この記事で学ぶ内容は、次のようなシナリオに適用できます。You can apply what you learn from this article to scenarios such as these:

  • ストリーミング Twitter データに関するリアルタイムの感情分析。Analyzing real-time sentiment on streaming Twitter data.
  • サポート スタッフと顧客とのチャット レコード分析。Analyzing records of customer chats with support staff.
  • フォーラム、ブログ、ビデオに対するコメントの評価。Evaluating comments on forums, blogs, and videos.
  • その他多くのリアルタイムの予測スコアリング シナリオ。Many other real-time, predictive scoring scenarios.

現実のシナリオなら、Twitter データ ストリームから直接データを取得するでしょう。In a real-world scenario, you would get the data directly from a Twitter data stream. チュートリアルを簡単にするために、Stream Analytics ジョブが Azure Blob Storage 内の CSV ファイルからツイートを取得できるよう、こちらで既に準備しています。To simplify the tutorial, it's written so that the Streaming Analytics job gets tweets from a CSV file in Azure Blob storage. 独自の CSV ファイルを作成することも、次の図のようなサンプル CSV ファイルを使用することもできます。You can create your own CSV file, or you can use a sample CSV file, as shown in the following image:

CSV ファイルで示されているサンプル ツイート

作成する Stream Analytics ジョブは、BLOB ストアのサンプル テキスト データに対して、ユーザー定義関数 (UDF) として感情分析モデルを適用します。The Streaming Analytics job that you create applies the sentiment analytics model as a user-defined function (UDF) on the sample text data from the blob store. 出力 (感情分析の結果) は、同じ BLOB ストアの別の CSV ファイル内に書き込まれます。The output (the result of the sentiment analysis) is written to the same blob store in a different CSV file.

次の図に、この構成を示します。The following figure demonstrates this configuration. 前述のように、さらに現実的なシナリオとしては、BLOB ストレージを Azure Event Hub 入力からのストリーミング Twitter データに置き換えることができます。As noted, for a more realistic scenario, you can replace blob storage with streaming Twitter data from an Azure Event Hubs input. また、集計センチメントの Microsoft Power BI リアルタイム視覚化を構築することもできます。Additionally, you could build a Microsoft Power BI real-time visualization of the aggregate sentiment.

Stream Analytics と Machine Learning の統合の概要

前提条件Prerequisites

始める前に、以下のものを用意してください。Before you start, make sure you have the following:

  • 有効な Azure サブスクリプションAn active Azure subscription.
  • ある程度のデータが入力された CSV ファイル。A CSV file with some data in it. 前述のファイルを GitHub からダウンロードすることも、独自のファイルを作成することもできます。You can download the file shown earlier from GitHub, or you can create your own file. この記事では、GitHub からのファイルを使用することを前提としています。For this article, it is assumed that you're using the file from GitHub.

大まかに言えば、この記事で説明するタスクを完了するには、以下の手順を実行します。At a high level, to complete the tasks demonstrated in this article, you do the following:

  1. Azure ストレージ アカウントと BLOB ストレージ コンテナーを作成し、そのコンテナーに CSV 形式の入力ファイルをアップロードします。Create an Azure storage account and a blob storage container, and upload a CSV-formatted input file to the container.
  2. Cortana Intelligence ギャラリーの感情分析モデルを Azure Machine Learning Studio (クラシック) ワークスペースに追加し、このモデルを Web サービスとして Machine Learning ワークスペースにデプロイします。Add a sentiment analytics model from the Cortana Intelligence Gallery to your Azure Machine Learning Studio (classic) workspace and deploy this model as a web service in the Machine Learning workspace.
  3. この Web サービスを、テキスト入力のセンチメントを決定するための関数として呼び出す Stream Analytics ジョブを作成します。Create a Stream Analytics job that calls this web service as a function in order to determine sentiment for the text input.
  4. Stream Analytics ジョブを開始し、出力をチェックします。Start the Stream Analytics job and check the output.

Storage コンテナーを作成して CSV 入力ファイルをアップロードするCreate a storage container and upload the CSV input file

この手順では、GitHub から入手できるファイルなど、あらゆる CSV ファイルを使用できます。For this step, you can use any CSV file, such as the one available from GitHub.

  1. Azure Portal では、 [リソースの作成] > [ストレージ] > [ストレージ アカウント] をクリックします。In the Azure portal, click Create a resource > Storage > Storage account.

  2. 名前 (この例では samldemo) を指定します。Provide a name (samldemo in the example). 名前には小文字と数字だけを使用できます。名前は Azure 全体で一意である必要があります。The name can use only lowercase letters and numbers, and it must be unique across Azure.

  3. 既存のリソース グループを指定し、場所を指定します。Specify an existing resource group and specify a location. 場所については、このチュートリアルで作成するすべてのリソースで同じ場所を使用することをお勧めします。For location, we recommend that all the resources created in this tutorial use the same location.

    ストレージ アカウントの詳細を入力する

  4. Azure Portal で、ストレージ アカウントを選択します。In the Azure portal, select the storage account. ストレージ アカウント ブレードで、 [コンテナー] をクリックしてから [+ コンテナー] をクリックして、BLOB ストレージを作成します。In the storage account blade, click Containers and then click + Container to create blob storage.

    入力用の BLOB ストレージ コンテナーを作成する

  5. コンテナーの名前 (この例では azuresamldemoblob) を指定し、 [アクセスの種類][BLOB] に設定されていることを確認します。Provide a name for the container (azuresamldemoblob in the example) and verify that Access type is set to Blob. 完了したら [OK] をクリックします。When you're done, click OK.

    BLOB コンテナーの詳細を指定する

  6. [コンテナー] ブレードで新しいコンテナーを選択します。そのコンテナーのブレードが開きます。In the Containers blade, select the new container, which opens the blade for that container.

  7. [アップロード] をクリックします。Click Upload.

    コンテナーの [アップロード] ボタン

  8. [BLOB のアップロード] ブレードで、以前にダウンロードした sampleinput.csv ファイルをアップロードします。In the Upload blob blade, upload the sampleinput.csv file that you downloaded earlier. [BLOB の種類] には [ブロック BLOB] を選択し、ブロック サイズを 4 MB に設定します。このチュートリアルにはこれで十分です。For Blob type, select Block blob and set the block size to 4 MB, which is sufficient for this tutorial.

  9. ブレードの下部にある [アップロード] ボタンをクリックします。Click the Upload button at the bottom of the blade.

サンプル データが BLOB に含まれたので、Cortana Intelligence ギャラリーの感情分析モデルを有効にできます。Now that the sample data is in a blob, you can enable the sentiment analysis model in Cortana Intelligence Gallery.

  1. Cortana Intelligence ギャラリーの予測感情分析モデルのページに進みます。Go to the predictive sentiment analytics model page in the Cortana Intelligence Gallery.

  2. [Studio で開く] をクリックします。Click Open in Studio.

    Stream Analytics Machine Learning, Machine Learning Studio を開く

  3. サインインしてワークスペースを開きます。Sign in to go to the workspace. 場所を選択します。Select a location.

  4. ページの下部にある [実行] をクリックします。Click Run at the bottom of the page. プロセスが実行され、約 1 分かかります。The process runs, which takes about a minute.

    Machine Learning Studio で実験を実行する

  5. プロセスが正常に実行されたら、ページの下部にある [Web サービスのデプロイ] を選択します。After the process has run successfully, select Deploy Web Service at the bottom of the page.

    Machine Learning Studio で実験を Web サービスとしてデプロイする

  6. 感情分析モデルが使用できる状態か検証するには、 [テスト] ボタンをクリックします。To validate that the sentiment analytics model is ready to use, click the Test button. 「I love Microsoft」などのテキストを入力します。Provide text input such as "I love Microsoft".

    Machine Learning Studio で実験をテストする

    テストが正常に機能すると、次の例のような結果が表示されます。If the test works, you see a result similar to the following example:

    Machine Learning Studio のテスト結果

  7. [アプリ] 列で、 [Excel 2010 or earlier workbook](Excel 2010 以前のブック) リンクをクリックして、Excel ブックをダウンロードします。In the Apps column, click the Excel 2010 or earlier workbook link to download an Excel workbook. このブックには、後で Stream Analytics ジョブをセットアップする際に必要になる API キーと URL が含まれています。The workbook contains the API key and the URL that you need later to set up the Stream Analytics job.

    Stream Analytics Machine Learning, 概要

Machine Learning モデルを使用する Stream Analytics ジョブを作成するCreate a Stream Analytics job that uses the Machine Learning model

続いて、サンプル ツイートを BLOB ストレージ内の CSV ファイルから読み取る Stream Analytics ジョブを作成できます。You can now create a Stream Analytics job that reads the sample tweets from the CSV file in blob storage.

ジョブを作成するCreate the job

  1. Azure ポータルにアクセスします。Go to the Azure portal.

  2. [リソースの作成] > [モノのインターネット] > [Stream Analytics ジョブ] の順にクリックします。Click Create a resource > Internet of Things > Stream Analytics job.

  3. ジョブに azure-sa-ml-demo と名前を付け、サブスクリプションを指定し、既存のリソース グループを指定するか新しく作成し、ジョブの場所を選択します。Name the job azure-sa-ml-demo, specify a subscription, specify an existing resource group or create a new one, and select the location for the job.

    新しい Stream Analytics ジョブの設定を指定する

ジョブの入力を構成するConfigure the job input

このジョブは、以前に BLOB ストレージにアップロードした CSV ファイルから入力を取得します。The job gets its input from the CSV file that you uploaded earlier to blob storage.

  1. ジョブの作成後に、ジョブ ブレード内の [ジョブ トポロジ] の下の [入力] オプションをクリックします。After the job has been created, under Job Topology in the job blade, click the Inputs option.

  2. [入力] ブレードで、 [ストリーム入力の追加] > [Blob ストレージ] をクリックします。In the Inputs blade, click Add Stream Input >Blob storage

  3. [Blob ストレージ] ブレードに以下の値を入力します。Fill out the Blob Storage blade with these values:

    フィールドField Value
    入力のエイリアスInput alias 名前 datainput を使用して、 [Select blob storage from your subscription](自分のサブスクリプションから Blob ストレージを選択する) を選択します。Use the name datainput and select Select blob storage from your subscription
    ストレージ アカウントStorage account 以前に作成したストレージ アカウントを選択します。Select the storage account you created earlier.
    コンテナーContainer 以前に作成したコンテナー (azuresamldemoblob) を選択します。Select the container you created earlier (azuresamldemoblob)
    イベントのシリアル化の形式Event serialization format [CSV] を選択します。Select CSV

    新しい Stream Analytics ジョブ入力用の設定

  4. [保存] をクリックします。Click Save.

ジョブの出力を構成するConfigure the job output

このジョブは、入力を取得したのと同じ BLOB ストレージに結果を送信します。The job sends results to the same blob storage where it gets input.

  1. [ジョブ トポロジ] ジョブ ブレードの下の [出力] オプションをクリックします。Under Job Topology in the job blade, click the Outputs option.

  2. [出力] ブレードで、 [追加] > [Blob Storage] をクリックしてから、別名 datamloutput の出力を追加します。In the Outputs blade, click Add >Blob storage, and then add an output with the alias datamloutput.

  3. [Blob ストレージ] ブレードに以下の値を入力します。Fill out the Blob Storage blade with these values:

    フィールドField Value
    出力エイリアスOutput alias 名前 datamloutput を使用して、 [Select blob storage from your subscription](自分のサブスクリプションから Blob ストレージを選択する) を選択します。Use the name datamloutput and select Select blob storage from your subscription
    ストレージ アカウントStorage account 以前に作成したストレージ アカウントを選択します。Select the storage account you created earlier.
    コンテナーContainer 以前に作成したコンテナー (azuresamldemoblob) を選択します。Select the container you created earlier (azuresamldemoblob)
    イベントのシリアル化の形式Event serialization format [CSV] を選択します。Select CSV

    新しい Stream Analytics ジョブ出力用の設定

  4. [保存] をクリックします。Click Save.

Machine Learning 関数を追加するAdd the Machine Learning function

以前に、Machine Learning モデルを Web サービスに発行しました。Earlier you published a Machine Learning model to a web service. このシナリオでは、Stream Analytics ジョブの実行時に、各サンプル ツイートが感情分析のために入力から Web サービスに送信されます。In this scenario, when the Stream Analysis job runs, it sends each sample tweet from the input to the web service for sentiment analysis. Machine Learning Web サービスにより、センチメント (positiveneutralnegative) と、ツイートが positive になる確率が返されます。The Machine Learning web service returns a sentiment (positive, neutral, or negative) and a probability of the tweet being positive.

チュートリアルのこのセクションでは、Stream Analytics ジョブ内の関数を定義します。In this section of the tutorial, you define a function in the Stream Analysis job. この関数を呼び出すと、ツイートを Web サービスに送信し、返された応答を取得できます。The function can be invoked to send a tweet to the web service and get the response back.

  1. 以前ダウンロードした Web サービス URL と API キーが Excel ブックにあることをご確認ください。Make sure you have the web service URL and API key that you downloaded earlier in the Excel workbook.

  2. お使いのジョブ ブレードから、 [関数] > [+ 追加] > [AzureML] の順に移動します。Navigate to your job blade > Functions > + Add > AzureML

  3. [Azure Machine Learning 関数] ブレードに以下の値を入力します。Fill out the Azure Machine Learning function blade with these values:

    フィールドField Value
    関数のエイリアスFunction alias 名前 sentiment を使用して、URL とキーを入力するためのオプションを提示する [手動で Azure Machine Learning 関数設定を指定します] を選択します。Use the name sentiment and select Provide Azure Machine Learning function settings manually which gives you an option to enter the URL and key.
    URLURL Web サービス URL を貼り付けます。Paste the web service URL.
    キーKey API キーを貼り付けます。Paste the API key.

    Machine Learning 関数を Stream Analytics ジョブに追加するための設定

  4. [保存] をクリックします。Click Save.

データを変換するためのクエリを作成するCreate a query to transform the data

Stream Analytics は、SQL ベースの宣言型クエリを使用し、入力を確認して処理します。Stream Analytics uses a declarative, SQL-based query to examine the input and process it. このセクションでは、入力から各ツイートを読み取ってから、Machine Learning 関数を呼び出して感情分析を実行するクエリを作成します。In this section, you create a query that reads each tweet from input and then invokes the Machine Learning function to perform sentiment analysis. それからこのクエリは、定義した出力 (BLOB ストレージ) に結果を送信します。The query then sends the result to the output that you defined (blob storage).

  1. ジョブ概要ブレードに戻ります。Return to the job overview blade.

  2. [ジョブ トポロジ] の下の [クエリ] ボックスをクリックします。Under Job Topology, click the Query box.

  3. 次のクエリを入力します。Enter the following query:

    WITH sentiment AS (  
    SELECT text, sentiment1(text) as result 
    FROM datainput  
    )  
    
    SELECT text, result.[Score]  
    INTO datamloutput
    FROM sentiment  
    

    このクエリは、入力内の各ツイートに対して感情分析を実行するために、以前に作成した関数 (sentiment) を呼び出します。The query invokes the function you created earlier (sentiment) in order to perform sentiment analysis on each tweet in the input.

  4. [保存] をクリックしてクエリを保存します。Click Save to save the query.

Stream Analytics ジョブを開始して出力をチェックするStart the Stream Analytics job and check the output

続いて、Stream Analytics ジョブを開始できます。You can now start the Stream Analytics job.

ジョブの開始Start the job

  1. ジョブ概要ブレードに戻ります。Return to the job overview blade.

  2. ブレードの上部にある [開始] をクリックします。Click Start at the top of the blade.

  3. [ジョブの開始][カスタム] を選択し、CSV ファイルを BLOB ストレージにアップロードした時刻の 1 日前を選びます。In the Start job, select Custom, and then select one day prior to when you uploaded the CSV file to blob storage. 終了したら [開始] をクリックします。When you're done, click Start.

出力をチェックするCheck the output

  1. [監視] ボックスにアクティビティが表示されるまで、数分間ジョブを実行します。Let the job run for a few minutes until you see activity in the Monitoring box.

  2. BLOB ストレージのコンテンツの確認に通常使用しているツールがある場合は、そのツールを使用して azuresamldemoblob コンテナーを確認します。If you have a tool that you normally use to examine the contents of blob storage, use that tool to examine the azuresamldemoblob container. 別の方法として、Azure Portal で次の手順を実行します。Alternatively, do the following steps in the Azure portal:

    1. Portal で samldemo ストレージ アカウントを検索し、このアカウント内で azuresamldemoblob コンテナーを検索します。In the portal, find the samldemo storage account, and within the account, find the azuresamldemoblob container. このコンテナー内には 2 つのファイルがあります。サンプル ツイートが含まれているファイルと、Stream Analytics ジョブで生成された CSV ファイルです。You see two files in the container: the file that contains the sample tweets and a CSV file generated by the Stream Analytics job.
    2. 生成されたファイルを右クリックし、 [ダウンロード] を選択します。Right-click the generated file and then select Download.

    Blob Storage から CSV ジョブ出力をダウンロードする

  3. 生成された CSV ファイルを開きます。Open the generated CSV file. 次の例のように表示されます。You see something like the following example:

    Stream Analytics Machine Learning, CSV ビュー

メトリックを表示するView metrics

Azure Machine Learning 関数に関連するメトリックも表示できます。You also can view Azure Machine Learning function-related metrics. ジョブ ブレード内の [監視] ボックスに、次の関数に関連するメトリックが表示されます。The following function-related metrics are displayed in the Monitoring box in the job blade:

  • [関数要求] は、Machine Learning Web サービスに対して送信された要求数を示します。Function Requests indicates the number of requests sent to a Machine Learning web service.
  • [関数イベント] は、要求内のイベントの数を示します。Function Events indicates the number of events in the request. 既定では、Machine Learning Web サービスへの各要求には、最大 1,000 件のイベントが含まれています。By default, each request to a Machine Learning web service contains up to 1,000 events.

次のステップNext steps