Analisi del sentiment con Analisi di flusso di Azure e Azure Machine LearningPerforming sentiment analysis by using Azure Stream Analytics and Azure Machine Learning

Questo articolo descrive come configurare rapidamente un semplice processo di Analisi di flusso di Azure che integra Azure Machine Learning.This article describes how to quickly set up a simple Azure Stream Analytics job that integrates Azure Machine Learning. Verrà usato un modello di Machine Learning per l'analisi del sentiment proveniente dalla raccolta Cortana Intelligence per analizzare il flusso di dati di testo e determinare il punteggio del sentiment in tempo reale.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 consente di eseguire questa operazione senza doversi preoccupare delle complessità della creazione di un modello di analisi del sentiment.Using the Cortana Intelligence Suite lets you accomplish this task without worrying about the intricacies of building a sentiment analytics model.

È possibile applicare le informazioni apprese in questo articolo a scenari come i seguenti:You can apply what you learn from this article to scenarios such as these:

  • Analisi in tempo reale del sentiment su flussi di dati di Twitter.Analyzing real-time sentiment on streaming Twitter data.
  • Analisi dei record delle chat dei client con il personale di supporto.Analyzing records of customer chats with support staff.
  • Valutazione dei commenti per forum, blog e video.Evaluating comments on forums, blogs, and videos.
  • Molti altri scenari di punteggio predittivo in tempo reale.Many other real-time, predictive scoring scenarios.

In uno scenario reale, si potrebbero ottenere i dati direttamente da un flusso di dati di Twitter.In a real-world scenario, you would get the data directly from a Twitter data stream. Per semplificare la presentazione, l'esercitazione è stata scritta in modo che il processo di Analisi di flusso ottenga i tweet da un file CSV in Archiviazione BLOB di Azure.To simplify the tutorial, we've written it so that the Streaming Analytics job gets tweets from a CSV file in Azure Blob storage. È possibile creare un file CSV personalizzato oppure usare un file CSV di esempio, come illustrato nella figura seguente:You can create your own CSV file, or you can use a sample CSV file, as shown in the following image:

tweet di esempio in un file CSV

Il processo di Analisi di flusso creato applica il modello di analisi del sentiment come funzione definita dall'utente (UDF) ai dati del testo di esempio dell'archivio BLOB.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. L'output (il risultato dell'analisi del sentiment) viene scritto nello stesso archivio BLOB in un file CSV diverso.The output (the result of the sentiment analysis) is written to the same blob store in a different CSV file.

La figura seguente illustra questa configurazione.The following figure demonstrates this configuration. Come indicato, per uno scenario più realistico è possibile sostituire l'archivio BLOB con il flusso di dati di Twitter provenienti da un input di Hub eventi di Azure.As noted, for a more realistic scenario, you can replace blob storage with streaming Twitter data from an Azure Event Hubs input. È anche possibile compilare una visualizzazione in tempo reale del sentimento di aggregazione in Microsoft Power BI .Additionally, you could build a Microsoft Power BI real-time visualization of the aggregate sentiment.

Panoramica dell'integrazione di Machine Learning in Analisi di flusso

PrerequisitiPrerequisites

Prima di iniziare, verificare di disporre degli elementi seguenti:Before you start, make sure you have the following:

  • Una sottoscrizione di Azure attiva.An active Azure subscription.
  • Un file CSV contenente alcuni dati.A CSV file with some data in it. È possibile scaricare il file mostrato in precedenza da GitHub oppure creare un file personalizzato.You can download the file shown earlier from GitHub, or you can create your own file. In questo articolo si presuppone l'uso del file da GitHub.For this article, we assume that you're using the file from GitHub.

In generale, per completare le attività illustrate in questo articolo, è necessario eseguire le operazioni seguenti:At a high level, to complete the tasks demonstrated in this article, you do the following:

  1. Creare un account di archiviazione di Azure e un contenitore di archiviazione BLOB, quindi caricare un file di input in formato CSV nel contenitore.Create an Azure storage account and a blob storage container, and upload a CSV-formatted input file to the container.
  2. Aggiungere un modello di analisi del sentiment dalla raccolta Cortana Intelligence all'area di lavoro di Azure Machine Learning e distribuire questo modello come servizio Web nell'area di lavoro di Machine Learning.Add a sentiment analytics model from the Cortana Intelligence Gallery to your Azure Machine Learning workspace and deploy this model as a web service in the Machine Learning workspace.
  3. Creare un processo di Analisi di flusso che chiami questo servizio Web come funzione per determinare il sentiment per l'input di testo.Create a Stream Analytics job that calls this web service as a function in order to determine sentiment for the text input.
  4. Avviare il processo di Analisi di flusso e controllare l'output.Start the Stream Analytics job and check the output.

Creare un contenitore di archiviazione e caricare il file di input CSVCreate a storage container and upload the CSV input file

Per questo passaggio, è possibile usare qualsiasi file CSV, ad esempio quello disponibile da GitHub.For this step, you can use any CSV file, such as the one available from GitHub.

  1. Nel portale di Azure fare clic su Nuovo > Archiviazione > Account di archiviazione.In the Azure portal, click New > Storage > Storage account.

    creare un nuovo account di archiviazione

  2. Specificare un nome (samldemo nell'esempio).Provide a name (samldemo in the example). Il nome può contenere solo lettere minuscole e numeri e deve essere univoco in Azure.The name can use only lowercase letters and numbers, and it must be unique across Azure.

  3. Specificare un gruppo di risorse esistente e specificare un percorso.Specify an existing resource group and specify a location. Per quanto riguarda il percorso, è consigliabile che tutte le risorse create in questa esercitazione usino lo stesso percorso.For location, we recommend that all the resources created in this tutorial use the same location.

    specificare i dettagli dell'account di archiviazione

  4. Selezionare l'account di archiviazione nel portale di Azure.In the Azure portal, select the storage account. Nel pannello dell'account di archiviazione fare clic su Contenitori e quindi su + Contenitore per creare un archivio BLOB.In the storage account blade, click Containers and then click + Container to create blob storage.

    Creare un contenitore BLOB

  5. Specificare quindi un nome per il contenitore (azuresamldemoblob nell'esempio) e verificare che Tipo di accesso sia impostato su BLOB.Provide a name for the container (azuresamldemoblob in the example) and verify that Access type is set to Blob. Al termine, fare clic su OK.When you're done, click OK.

    specificare i dettagli del contenitore BLOB

  6. Nel pannello Contenitori selezionare il nuovo contenitore, in modo da aprire il pannello per tale contenitore.In the Containers blade, select the new container, which opens the blade for that container.

  7. Fare clic su Carica.Click Upload.

    Pulsante 'Carica' per un contenitore

  8. Nel pannello Carica BLOB specificare il file CSV che si vuole usare per questa esercitazione.In the Upload blob blade, specify the CSV file that you want to use for this tutorial. In Tipo BLOB selezionare BLOB in blocchi e impostare le dimensioni del blocco su 4 MB, sufficienti per questa esercitazione.For Blob type, select Block blob and set the block size to 4 MB, which is sufficient for this tutorial.

    caricare il file BLOB

  9. Fare clic sul pulsante Carica nella parte inferiore del pannello.Click the Upload button at the bottom of the blade.

Ora che i dati di esempio sono in un BLOB, è possibile abilitare il modello di analisi del sentiment nella raccolta Cortana Intelligence.Now that the sample data is in a blob, you can enable the sentiment analysis model in Cortana Intelligence Gallery.

  1. Passare alla pagina del modello di analisi predittiva del sentiment nella raccolta Cortana Intelligence.Go to the predictive sentiment analytics model page in the Cortana Intelligence Gallery.

  2. Fare clic su Open in Studio (Apri in Studio).Click Open in Studio.

    Analisi di flusso e Machine Learning, aprire Machine Learning Studio

  3. Effettuare l'accesso per passare all'area di lavoro.Sign in to go to the workspace. Selezionare una località.Select a location.

  4. Fare clic su Esegui in basso.Click Run at the bottom of the page. Il processo viene eseguito e richiede circa un minuto.The process runs, which takes about a minute.

    eseguire l'esperimento in Machine Learning Studio

  5. Al termine dell'esecuzione del processo, selezionare Deploy Web Service (Distribuisci servizio Web) nella parte inferiore della pagina.After the process has run successfully, select Deploy Web Service at the bottom of the page.

    distribuire l'esperimento in Machine Learning Studio come servizio Web

  6. Per verificare che il modello di analisi del sentiment sia pronto per l'uso, fare clic sul pulsante Test.To validate that the sentiment analytics model is ready to use, click the Test button. Immettere testo, ad esempio "Mi piace Microsoft".Provide text input such as "I love Microsoft".

    testare l'esperimento in Machine Learning Studio

    Se il test funziona, viene visualizzato un risultato simile all'esempio seguente:If the test works, you see a result similar to the following example:

    risultati del test in Machine Learning Studio

  7. Nella colonna Apps (App) fare clic sul collegamento Excel 2010 or earlier workbook (Cartella di lavoro di Excel 2010 o versione precedente) per scaricare una cartella di Excel.In the Apps column, click the Excel 2010 or earlier workbook link to download an Excel workbook. La cartella di lavoro contiene la chiave API e l'URL necessari in seguito per configurare il processo di Analisi di flusso.The workbook contains the an API key and the URL that you need later to set up the Stream Analytics job.

    Analisi di flusso e Machine Learning, panoramica rapida

Creare un processo di Analisi di flusso che usi il modello di Machine LearningCreate a Stream Analytics job that uses the Machine Learning model

È ora possibile creare un processo di Analisi di flusso che legge i tweet di esempio dal file CSV nell'archivio BLOB.You can now create a Stream Analytics job that reads the sample tweets from the CSV file in blob storage.

Creare il processoCreate the job

  1. Accedere al portale di Azure.Go to the Azure portal.

  2. Fare clic su Nuovo > Internet delle cose > Processo di Analisi di flusso.Click New > Internet of Things > Stream Analytics job.

    Percorso del portale di Azure per ottenere un nuovo processo di Analisi di flusso

  3. Assegnare il nome azure-sa-ml-demo al processo, specificare una sottoscrizione, specificare un gruppo di risorse esistente o crearne uno nuovo e selezionare il percorso per il processo.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.

    specificare le impostazioni per il nuovo processo di Analisi di flusso

Configurare l'input del processoConfigure the job input

Il processo ottiene l'input dal file CSV caricato in precedenza nell'archivio BLOB.The job gets its input from the CSV file that you uploaded earlier to blob storage.

  1. Dopo aver creato il processo, in Topologia processo nel pannello del processo, fare clic sulla casella Input.After the job has been created, under Job Topology in the job blade, click the Inputs box.

    Casella 'Input' nel pannello del processo di Analisi di flusso

  2. Nel pannello Input fare clic su + Aggiungi.In the Inputs blade, click + Add.

    Pulsante 'Aggiungi' per aggiungere un input al processo di Analisi di flusso

  3. Compilare il pannello Nuovo input con questi valori:Fill out the New input blade with these values:

    • Alias di input: usare il nome datainput.Input alias: Use the name datainput.
    • Tipo di origine: selezionare Flusso dati.Source type: Select Data stream.
    • Origine: selezionare Archiviazione BLOB.Source: Select Blob storage.
    • Opzioni di importazione: selezionare Usa l'archiviazione BLOB della sottoscrizione corrente.Import option: Select Use blob storage from current subscription.
    • Account di archiviazione.Storage account. Selezionare l'account di archiviazione creato in precedenza.Select the storage account you created earlier.
    • Contenitore.Container. Selezionare il contenitore creato in precedenza (azuresamldemoblob).Select the container you created earlier (azuresamldemoblob).
    • Formato di serializzazione eventi.Event serialization format. Selezionare CSV.Select CSV.

      Impostazioni per il nuovo input del processo

  4. Fare clic su Crea.Click Create.

Configurare l'output del processoConfigure the job output

Il processo invia i risultati allo stesso archivio BLOB da cui ottiene l'input.The job sends results to the same blob storage where it gets input.

  1. In Topologia processo, nel pannello del processo, fare clic sulla casella Output.Under Job Topology in the job blade, click the Outputs box.

    Creare un nuovo output per il processo di Analisi di flusso

  2. Nel pannello Output fare clic su + Aggiungi e quindi aggiungere un output con l'alias datamloutput.In the Outputs blade, click + Add, and then add an output with the alias datamloutput.

  3. In Sink selezionare Archivio BLOB.For Sink, select Blob storage. Compilare quindi il resto delle impostazioni di output usando gli stessi valori usati per l'archivio BLOB per l'input:Then fill in the rest of the output settings using the same values that you used for the blob storage for input:

    • Account di archiviazione.Storage account. Selezionare l'account di archiviazione creato in precedenza.Select the storage account you created earlier.
    • Contenitore.Container. Selezionare il contenitore creato in precedenza (azuresamldemoblob).Select the container you created earlier (azuresamldemoblob).
    • Formato di serializzazione eventi.Event serialization format. Selezionare CSV.Select CSV.

    Impostazioni per il nuovo output del processo

  4. Fare clic su Crea.Click Create.

Aggiungere la funzione di Machine LearningAdd the Machine Learning function

In precedenza è stato pubblicato un modello di Machine Learning in un servizio Web.Earlier you published a Machine Learning model to a web service. In questo scenario, quando si esegue il processo di Analisi di flusso, il processo invia ogni tweet di esempio dall'input al servizio Web per l'analisi del sentiment.In our scenario, when the Stream Analysis job runs, it sends each sample tweet from the input to the web service for sentiment analysis. Il servizio Web di Machine Learning restituisce un sentiment (positive, neutral o negative) e la probabilità che il tweet sia positivo.The Machine Learning web service returns a sentiment (positive, neutral, or negative) and a probability of the tweet being positive.

In questa sezione dell'esercitazione si definisce una funzione nel processo di Analisi di flusso.In this section of the tutorial, you define a function in the Stream Analysis job. La funzione può essere richiamata per inviare un tweet al servizio Web e ottenere la risposta.The function can be invoked to send a tweet to the web service and get the response back.

  1. Assicurarsi di avere a disposizione l'URL del servizio Web e la chiave API scaricati in precedenza nella cartella di lavoro di Excel.Make sure you have the web service URL and API key that you downloaded earlier in the Excel workbook.

  2. Tornare al pannello della panoramica del processo.Return to the job overview blade.

  3. In Impostazioni selezionare Funzioni e quindi fare clic su + Aggiungi.Under Settings, select Functions and then click + Add.

    Aggiungere una funzione al processo di Analisi di flusso

  4. Immettere sentiment come alias di funzione e compilare il resto del pannello con questi valori:Enter sentiment as the function alias and fill out the rest of the blade using these values:

    • Tipo funzione: selezionare Azure ML.Function type: Select Azure ML.
    • Opzione di importazione: selezionare Importa da un'altra sottoscrizione.Import option: Select Import from a different subscription. Questa impostazione offre la possibilità di immettere l'URL e la chiave.This gives you a chance to enter the URL and key.
    • URL: incollare l'URL del servizio Web.URL: Paste in the web service URL.
    • Chiave: incollare la chiave API.Key: Paste in the API key.

      Impostazioni per l'aggiunta di una funzione di Machine Learning al processo di Analisi di flusso

  5. Fare clic su Crea.Click Create.

Creare una query per trasformare i datiCreate a query to transform the data

Analisi di flusso usa una query dichiarativa basata su SQL per esaminare l'input ed elaborarlo.Stream Analytics uses a declarative, SQL-based query to examine the input and process it. In questa sezione si creerà una query che legge ogni tweet dall'input e quindi richiama la funzione di Machine Learning per eseguire l'analisi del sentiment.In this section, you create a query that reads each tweet from input and then invokes the Machine Learning function to perform sentiment analysis. La query invia quindi il risultato all'output definito (archivio BLOB).The query then sends the result to the output that you defined (blob storage).

  1. Tornare al pannello della panoramica del processo.Return to the job overview blade.

  2. In Topologia processo fare clic sulla casella Query.Under Job Topology, click the Query box.

    Creare una query per il processo di Analisi di flusso

  3. Immettere la query seguente:Enter the following query:

    WITH sentiment AS (  
    SELECT text, sentiment(text) as result from datainput  
    )  
    
    Select text, result.[Score]  
    Into datamloutput
    From sentiment  
    

    La query richiama la funzione creata in precedenza (sentiment) per eseguire l'analisi del sentiment su ogni tweet nell'input.The query invokes the function you created earlier (sentiment) in order to perform sentiment analysis on each tweet in the input.

  4. Fare clic su Salva per salvare la query.Click Save to save the query.

Avviare il processo di Analisi di flusso e controllare l'outputStart the Stream Analytics job and check the output

È ora possibile avviare il processo di Analisi di flusso.You can now start the Stream Analytics job.

Avviare il processoStart the job

  1. Tornare al pannello della panoramica del processo.Return to the job overview blade.

  2. Fare clic su Avvia nella parte superiore del pannello.Click Start at the top of the blade.

    Creare una query per il processo di Analisi di flusso

  3. In Avvia processo selezionare Personalizzato e quindi selezionare il giorno precedente al caricamento del file CSV nell'archivio BLOB.In the Start job, select Custom, and then select one day prior to when you uploaded the CSV file to blob storage. Al termine, fare clic su Avvia.When you're done, click Start.

Controllare l'outputCheck the output

  1. Consentire l'esecuzione per alcuni minuti fino a quando non vengono visualizzate attività nella casella Monitoraggio.Let the job run for a few minutes until you see activity in the Monitoring box.

  2. Se si usa normalmente uno strumento per esaminare il contenuto dell'archivio BLOB, è possibile usare questo strumento per esaminare il contenitore 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. In alternativa, seguire questa procedura nel portale di Azure:Alternatively, do the following steps in the Azure portal:

    1. Nel portale trovare l'account di archiviazione samldemo e all'interno dell'account trovare il contenitore azuresamldemoblob.In the portal, find the samldemo storage account, and within the account, find the azuresamldemoblob container. Vengono visualizzati due file nel contenitore: il file che contiene i tweet di esempio e un file CSV generato dal processo di Analisi di flusso.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. Fare clic con il pulsante destro del mouse sul file generato e quindi scegliere Scarica.Right-click the generated file and then select Download.

    Scaricare l'output del processo CSV dall'archivio BLOB

  3. Aprire il file CSV generato.Open the generated CSV file. Il contenuto visualizzato sarà simile al seguente:You see something like the following example:

    Analisi di flusso e Machine Learning, visualizzazione CSV

Visualizzare le metricheView metrics

È possibile osservare anche le metriche correlate alla funzione Azure Machine Learning.You also can view Azure Machine Learning function-related metrics. Le seguenti metriche correlate alla funzione vengono visualizzate nella casella Monitoraggio nel pannello del processo:The following function-related metrics are displayed in the Monitoring box in the job blade:

  • Richieste della funzione indica il numero di richieste inviate al servizio Web di Machine Learning.Function Requests indicates the number of requests sent to a Machine Learning web service.
  • Eventi della funzione indica il numero di eventi nella richiesta.Function Events indicates the number of events in the request. Per impostazione predefinita, ogni richiesta a un servizio Web di Machine Learning contiene fino a 1.000 eventi.By default, each request to a Machine Learning web service contains up to 1,000 events.

Passaggi successiviNext steps