Inicio rápido: Análisis de sentimiento y minería de opiniones

Documentación de referencia | Ejemplos adicionales | Paquete (NuGet) | Código fuente de biblioteca

Use este inicio rápido para crear una aplicación de análisis de sentimiento con la biblioteca cliente de .NET. En el ejemplo siguiente, creará una aplicación de C# que puede identificar las opiniones expresadas en un ejemplo de texto y realizar un análisis de sentimiento basado en aspectos.

Prerrequisitos

Instalación

Creación de un recurso de Azure

Para usar el siguiente código de ejemplo, tendrá que implementar un recurso de Azure. Este recurso contendrá una clave y un punto de conexión que se usarán para autenticar las llamadas API que envíe al servicio de lenguaje.

  1. Use el vínculo siguiente para crear un recurso de lenguaje mediante Azure Portal. Tendrá que iniciar sesión con su suscripción de Azure.

  2. En la pantalla Seleccionar características adicionales, seleccione Continuar para crear el recurso.

    Captura de pantalla que muestra opciones de características adicionales en Azure Portal.

  3. En la pantalla Crear lenguaje, proporcione la siguiente información:

    Detalle Descripción
    Subscription La cuenta de suscripción a la que se asociará el recurso. Seleccione la suscripción de Azure en el menú desplegable.
    Resource group Un grupo de recursos es un contenedor que almacena los recursos que crea. Seleccione Crear nuevo para crear un nuevo grupo de recursos.
    Region La ubicación del recurso de idioma. Las diferentes regiones pueden crear latencias, según la ubicación física en la que usted se encuentre, pero no tienen ningún impacto en la disponibilidad del tiempo de ejecución del recurso. En este inicio rápido, seleccione una región disponible cerca de usted o elija Este de EE. UU.
    Nombre Nombre para el recurso de lenguaje. Este nombre también se usará para crear una dirección URL de punto de conexión que las aplicaciones usarán para enviar solicitudes de API.
    Plan de tarifa Plan de tarifa del recurso de idioma. Puede usar el nivel Gratis F0 para probar el servicio y actualizarlo más adelante a un nivel de pago cuando pase a producción.

    Captura de pantalla que muestra en detalle la creación de un recurso en Azure Portal.

  4. Asegúrese de que la casilla Aviso de IA responsable esté activada.

  5. En la parte inferior de la página, seleccione Revisar y crear.

  6. En la pantalla que aparece, asegúrese de que se ha superado la validación y de que ha escrito la información correctamente. Seleccione Crear.

Obtención de la clave y el punto de conexión

Ahora necesitará la clave y el punto de conexión del recurso para conectar la aplicación a la API. En una sección posterior de este mismo inicio rápido, pegará la clave y el punto de conexión en el código.

  1. Después de que el recurso de lenguaje se implemente correctamente, haga clic en el botón Ir al recurso en Pasos siguientes.

    Captura de pantalla que muestra los pasos siguientes después de implementar un recurso.

  2. En la pantalla del recurso, seleccione Claves y punto de conexión en el menú de navegación izquierdo. Usará una de las claves y el punto de conexión en los pasos siguientes.

    Captura de pantalla en la que se muestra la sección de claves y punto de conexión de un recurso.

Creación de variables de entorno

La aplicación debe autenticarse para enviar solicitudes de API. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas. En este ejemplo, escribirá las credenciales en variables de entorno del equipo local que ejecuta la aplicación.

Sugerencia

No incluya la clave directamente en el código ni la exponga nunca públicamente. Consulte el artículo de Seguridad de servicios de Azure AI para ver más opciones de autenticación, como Azure Key Vault.

Para establecer la variable de entorno para la clave del recurso de lenguaje, abra una ventana de consola y siga las instrucciones correspondientes a su sistema operativo y su entorno de desarrollo.

  1. Para establecer la variable de entorno LANGUAGE_KEY, reemplace your-key por una de las claves del recurso.
  2. Para establecer la variable de entorno LANGUAGE_ENDPOINT, reemplace your-endpoint por el punto de conexión del recurso.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Nota:

Si solo necesita acceder a las variables de entorno en la consola que se está ejecutando en este momento, puede establecer la variable de entorno con set en vez de con setx.

Después de agregar las variables de entorno, puede que tenga que reiniciar todos los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de consola. Por ejemplo, si usa Visual Studio como editor, reinícielo antes de ejecutar el ejemplo.

Creación de una aplicación de .NET Core

Utilice el IDE de Visual Studio para crear una aplicación de consola de .NET Core. Así se creará un proyecto "Hola mundo" con un solo archivo de origen de C#: program.cs.

Instale la biblioteca cliente, para lo que debe hacer clic con el botón derecho en la solución en el Explorador de soluciones y seleccionar Administrar paquetes NuGet. En el administrador de paquetes que se abre, seleccione Examinar y busque Azure.AI.TextAnalytics. Seleccione la versión 5.2.0 e Instalar. También puede usar la Consola del Administrador de paquetes.

Ejemplo de código

Copie el siguiente código en el archivo program.cs y ejecute el código.

using Azure;
using System;
using Azure.AI.TextAnalytics;
using System.Collections.Generic;

namespace Example
{
    class Program
    {
        // This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
        static string languageKey = Environment.GetEnvironmentVariable("LANGUAGE_KEY");
        static string languageEndpoint = Environment.GetEnvironmentVariable("LANGUAGE_ENDPOINT");

        private static readonly AzureKeyCredential credentials = new AzureKeyCredential(languageKey);
        private static readonly Uri endpoint = new Uri(languageEndpoint);

        // Example method for detecting opinions text. 
        static void SentimentAnalysisWithOpinionMiningExample(TextAnalyticsClient client)
        {
            var documents = new List<string>
            {
                "The food and service were unacceptable. The concierge was nice, however."
            };

            AnalyzeSentimentResultCollection reviews = client.AnalyzeSentimentBatch(documents, options: new AnalyzeSentimentOptions()
            {
                IncludeOpinionMining = true
            });

            foreach (AnalyzeSentimentResult review in reviews)
            {
                Console.WriteLine($"Document sentiment: {review.DocumentSentiment.Sentiment}\n");
                Console.WriteLine($"\tPositive score: {review.DocumentSentiment.ConfidenceScores.Positive:0.00}");
                Console.WriteLine($"\tNegative score: {review.DocumentSentiment.ConfidenceScores.Negative:0.00}");
                Console.WriteLine($"\tNeutral score: {review.DocumentSentiment.ConfidenceScores.Neutral:0.00}\n");
                foreach (SentenceSentiment sentence in review.DocumentSentiment.Sentences)
                {
                    Console.WriteLine($"\tText: \"{sentence.Text}\"");
                    Console.WriteLine($"\tSentence sentiment: {sentence.Sentiment}");
                    Console.WriteLine($"\tSentence positive score: {sentence.ConfidenceScores.Positive:0.00}");
                    Console.WriteLine($"\tSentence negative score: {sentence.ConfidenceScores.Negative:0.00}");
                    Console.WriteLine($"\tSentence neutral score: {sentence.ConfidenceScores.Neutral:0.00}\n");

                    foreach (SentenceOpinion sentenceOpinion in sentence.Opinions)
                    {
                        Console.WriteLine($"\tTarget: {sentenceOpinion.Target.Text}, Value: {sentenceOpinion.Target.Sentiment}");
                        Console.WriteLine($"\tTarget positive score: {sentenceOpinion.Target.ConfidenceScores.Positive:0.00}");
                        Console.WriteLine($"\tTarget negative score: {sentenceOpinion.Target.ConfidenceScores.Negative:0.00}");
                        foreach (AssessmentSentiment assessment in sentenceOpinion.Assessments)
                        {
                            Console.WriteLine($"\t\tRelated Assessment: {assessment.Text}, Value: {assessment.Sentiment}");
                            Console.WriteLine($"\t\tRelated Assessment positive score: {assessment.ConfidenceScores.Positive:0.00}");
                            Console.WriteLine($"\t\tRelated Assessment negative score: {assessment.ConfidenceScores.Negative:0.00}");
                        }
                    }
                }
                Console.WriteLine($"\n");
            }
        }

        static void Main(string[] args)
        {
            var client = new TextAnalyticsClient(endpoint, credentials);
            SentimentAnalysisWithOpinionMiningExample(client);

            Console.Write("Press any key to exit.");
            Console.ReadKey();
        }

    }
}

Resultados

Document sentiment: Mixed

    Positive score: 0.47
    Negative score: 0.52
    Neutral score: 0.00

    Text: "The food and service were unacceptable. "
    Sentence sentiment: Negative
    Sentence positive score: 0.00
    Sentence negative score: 0.99
    Sentence neutral score: 0.00

    Target: food, Value: Negative
    Target positive score: 0.00
    Target negative score: 1.00
            Related Assessment: unacceptable, Value: Negative
            Related Assessment positive score: 0.00
            Related Assessment negative score: 1.00
    Target: service, Value: Negative
    Target positive score: 0.00
    Target negative score: 1.00
            Related Assessment: unacceptable, Value: Negative
            Related Assessment positive score: 0.00
            Related Assessment negative score: 1.00
    Text: "The concierge was nice, however."
    Sentence sentiment: Positive
    Sentence positive score: 0.94
    Sentence negative score: 0.05
    Sentence neutral score: 0.01

    Target: concierge, Value: Positive
    Target positive score: 1.00
    Target negative score: 0.00
            Related Assessment: nice, Value: Positive
            Related Assessment positive score: 1.00
            Related Assessment negative score: 0.00

Limpieza de recursos

Si quiere limpiar y eliminar una suscripción de servicios de Azure AI, puede eliminar el recurso o el grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él.

Use los siguientes comandos para eliminar las variables de entorno que creó para este inicio rápido.

reg delete "HKCU\Environment" /v LANGUAGE_KEY /f
reg delete "HKCU\Environment" /v LANGUAGE_ENDPOINT /f

Pasos siguientes

Documentación de referencia | Ejemplos adicionales | Paquete (Maven) | Código fuente de biblioteca

Use este inicio rápido para crear una aplicación de análisis de sentimiento con la biblioteca cliente de Java. En el ejemplo siguiente, creará una aplicación de Java que puede identificar las opiniones expresadas en un ejemplo de texto y realizar análisis de sentimiento basado en aspectos.

Prerrequisitos

Instalación

Creación de un recurso de Azure

Para usar el siguiente código de ejemplo, tendrá que implementar un recurso de Azure. Este recurso contendrá una clave y un punto de conexión que se usarán para autenticar las llamadas API que envíe al servicio de lenguaje.

  1. Use el vínculo siguiente para crear un recurso de lenguaje mediante Azure Portal. Tendrá que iniciar sesión con su suscripción de Azure.

  2. En la pantalla Seleccionar características adicionales, seleccione Continuar para crear el recurso.

    Captura de pantalla que muestra opciones de características adicionales en Azure Portal.

  3. En la pantalla Crear lenguaje, proporcione la siguiente información:

    Detalle Descripción
    Subscription La cuenta de suscripción a la que se asociará el recurso. Seleccione la suscripción de Azure en el menú desplegable.
    Resource group Un grupo de recursos es un contenedor que almacena los recursos que crea. Seleccione Crear nuevo para crear un nuevo grupo de recursos.
    Region La ubicación del recurso de idioma. Las diferentes regiones pueden crear latencias, según la ubicación física en la que usted se encuentre, pero no tienen ningún impacto en la disponibilidad del tiempo de ejecución del recurso. En este inicio rápido, seleccione una región disponible cerca de usted o elija Este de EE. UU.
    Nombre Nombre para el recurso de lenguaje. Este nombre también se usará para crear una dirección URL de punto de conexión que las aplicaciones usarán para enviar solicitudes de API.
    Plan de tarifa Plan de tarifa del recurso de idioma. Puede usar el nivel Gratis F0 para probar el servicio y actualizarlo más adelante a un nivel de pago cuando pase a producción.

    Captura de pantalla que muestra en detalle la creación de un recurso en Azure Portal.

  4. Asegúrese de que la casilla Aviso de IA responsable esté activada.

  5. En la parte inferior de la página, seleccione Revisar y crear.

  6. En la pantalla que aparece, asegúrese de que se ha superado la validación y de que ha escrito la información correctamente. Seleccione Crear.

Obtención de la clave y el punto de conexión

Ahora necesitará la clave y el punto de conexión del recurso para conectar la aplicación a la API. En una sección posterior de este mismo inicio rápido, pegará la clave y el punto de conexión en el código.

  1. Después de que el recurso de lenguaje se implemente correctamente, haga clic en el botón Ir al recurso en Pasos siguientes.

    Captura de pantalla que muestra los pasos siguientes después de implementar un recurso.

  2. En la pantalla del recurso, seleccione Claves y punto de conexión en el menú de navegación izquierdo. Usará una de las claves y el punto de conexión en los pasos siguientes.

    Captura de pantalla en la que se muestra la sección de claves y punto de conexión de un recurso.

Creación de variables de entorno

La aplicación debe autenticarse para enviar solicitudes de API. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas. En este ejemplo, escribirá las credenciales en variables de entorno del equipo local que ejecuta la aplicación.

Sugerencia

No incluya la clave directamente en el código ni la exponga nunca públicamente. Consulte el artículo de Seguridad de servicios de Azure AI para ver más opciones de autenticación, como Azure Key Vault.

Para establecer la variable de entorno para la clave del recurso de lenguaje, abra una ventana de consola y siga las instrucciones correspondientes a su sistema operativo y su entorno de desarrollo.

  1. Para establecer la variable de entorno LANGUAGE_KEY, reemplace your-key por una de las claves del recurso.
  2. Para establecer la variable de entorno LANGUAGE_ENDPOINT, reemplace your-endpoint por el punto de conexión del recurso.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Nota:

Si solo necesita acceder a las variables de entorno en la consola que se está ejecutando en este momento, puede establecer la variable de entorno con set en vez de con setx.

Después de agregar las variables de entorno, puede que tenga que reiniciar todos los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de consola. Por ejemplo, si usa Visual Studio como editor, reinícielo antes de ejecutar el ejemplo.

Incorporación de la biblioteca cliente

Cree un proyecto de Maven en el entorno de desarrollo o IDE que prefiera. Luego, agregue la siguiente dependencia al archivo pom.xml del proyecto. La sintaxis de implementación de otras herramientas de compilación se puede encontrar en línea.

<dependencies>
     <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-ai-textanalytics</artifactId>
        <version>5.2.0</version>
    </dependency>
</dependencies>

Ejemplo de código

Cree un archivo de Java llamado Example.java. Abra el archivo y copie el código siguiente. Luego, ejecute el código.

import com.azure.core.credential.AzureKeyCredential;
import com.azure.ai.textanalytics.models.*;
import com.azure.ai.textanalytics.TextAnalyticsClientBuilder;
import com.azure.ai.textanalytics.TextAnalyticsClient;

public class Example {
    
    // This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
    private static String languageKey = System.getenv("LANGUAGE_KEY");
    private static String languageEndpoint = System.getenv("LANGUAGE_ENDPOINT");

    public static void main(String[] args) {
        TextAnalyticsClient client = authenticateClient(languageKey, languageEndpoint);
        sentimentAnalysisWithOpinionMiningExample(client);
    }
    // Method to authenticate the client object with your key and endpoint.
    static TextAnalyticsClient authenticateClient(String key, String endpoint) {
        return new TextAnalyticsClientBuilder()
                .credential(new AzureKeyCredential(key))
                .endpoint(endpoint)
                .buildClient();
    }
    // Example method for detecting sentiment and opinions in text.
    static void sentimentAnalysisWithOpinionMiningExample(TextAnalyticsClient client)
    {
        // The document that needs be analyzed.
        String document = "The food and service were unacceptable. The concierge was nice, however.";

        System.out.printf("Document = %s%n", document);

        AnalyzeSentimentOptions options = new AnalyzeSentimentOptions().setIncludeOpinionMining(true);
        final DocumentSentiment documentSentiment = client.analyzeSentiment(document, "en", options);
        SentimentConfidenceScores scores = documentSentiment.getConfidenceScores();
        System.out.printf(
                "Recognized document sentiment: %s, positive score: %f, neutral score: %f, negative score: %f.%n",
                documentSentiment.getSentiment(), scores.getPositive(), scores.getNeutral(), scores.getNegative());


        documentSentiment.getSentences().forEach(sentenceSentiment -> {
            SentimentConfidenceScores sentenceScores = sentenceSentiment.getConfidenceScores();
            System.out.printf("\tSentence sentiment: %s, positive score: %f, neutral score: %f, negative score: %f.%n",
                    sentenceSentiment.getSentiment(), sentenceScores.getPositive(), sentenceScores.getNeutral(), sentenceScores.getNegative());
            sentenceSentiment.getOpinions().forEach(opinion -> {
                TargetSentiment targetSentiment = opinion.getTarget();
                System.out.printf("\t\tTarget sentiment: %s, target text: %s%n", targetSentiment.getSentiment(),
                        targetSentiment.getText());
                for (AssessmentSentiment assessmentSentiment : opinion.getAssessments()) {
                    System.out.printf("\t\t\t'%s' assessment sentiment because of \"%s\". Is the assessment negated: %s.%n",
                            assessmentSentiment.getSentiment(), assessmentSentiment.getText(), assessmentSentiment.isNegated());
                }
            });
        });
    }
}

Resultados

Document = The food and service were unacceptable. The concierge was nice, however.
Recognized document sentiment: mixed, positive score: 0.470000, neutral score: 0.000000, negative score: 0.520000.
	Sentence sentiment: negative, positive score: 0.000000, neutral score: 0.000000, negative score: 0.990000.
		Target sentiment: negative, target text: food
			'negative' assessment sentiment because of "unacceptable". Is the assessment negated: false.
		Target sentiment: negative, target text: service
			'negative' assessment sentiment because of "unacceptable". Is the assessment negated: false.
	Sentence sentiment: positive, positive score: 0.940000, neutral score: 0.010000, negative score: 0.050000.
		Target sentiment: positive, target text: concierge
			'positive' assessment sentiment because of "nice". Is the assessment negated: false.

Limpieza de recursos

Si quiere limpiar y eliminar una suscripción de servicios de Azure AI, puede eliminar el recurso o el grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él.

Use los siguientes comandos para eliminar las variables de entorno que creó para este inicio rápido.

reg delete "HKCU\Environment" /v LANGUAGE_KEY /f
reg delete "HKCU\Environment" /v LANGUAGE_ENDPOINT /f

Pasos siguientes

Documentación de referencia | Ejemplos adicionales | Paquete (npm) | Código fuente de biblioteca

Use este inicio rápido para crear una aplicación de análisis de sentimiento con la biblioteca cliente de Node.js. En el ejemplo siguiente, creará una aplicación JavaScript que puede identificar las opiniones expresadas en un ejemplo de texto y realizar análisis de sentimiento basado en aspectos.

Prerrequisitos

Instalación

Creación de un recurso de Azure

Para usar el siguiente código de ejemplo, tendrá que implementar un recurso de Azure. Este recurso contendrá una clave y un punto de conexión que se usarán para autenticar las llamadas API que envíe al servicio de lenguaje.

  1. Use el vínculo siguiente para crear un recurso de lenguaje mediante Azure Portal. Tendrá que iniciar sesión con su suscripción de Azure.

  2. En la pantalla Seleccionar características adicionales, seleccione Continuar para crear el recurso.

    Captura de pantalla que muestra opciones de características adicionales en Azure Portal.

  3. En la pantalla Crear lenguaje, proporcione la siguiente información:

    Detalle Descripción
    Subscription La cuenta de suscripción a la que se asociará el recurso. Seleccione la suscripción de Azure en el menú desplegable.
    Resource group Un grupo de recursos es un contenedor que almacena los recursos que crea. Seleccione Crear nuevo para crear un nuevo grupo de recursos.
    Region La ubicación del recurso de idioma. Las diferentes regiones pueden crear latencias, según la ubicación física en la que usted se encuentre, pero no tienen ningún impacto en la disponibilidad del tiempo de ejecución del recurso. En este inicio rápido, seleccione una región disponible cerca de usted o elija Este de EE. UU.
    Nombre Nombre para el recurso de lenguaje. Este nombre también se usará para crear una dirección URL de punto de conexión que las aplicaciones usarán para enviar solicitudes de API.
    Plan de tarifa Plan de tarifa del recurso de idioma. Puede usar el nivel Gratis F0 para probar el servicio y actualizarlo más adelante a un nivel de pago cuando pase a producción.

    Captura de pantalla que muestra en detalle la creación de un recurso en Azure Portal.

  4. Asegúrese de que la casilla Aviso de IA responsable esté activada.

  5. En la parte inferior de la página, seleccione Revisar y crear.

  6. En la pantalla que aparece, asegúrese de que se ha superado la validación y de que ha escrito la información correctamente. Seleccione Crear.

Obtención de la clave y el punto de conexión

Ahora necesitará la clave y el punto de conexión del recurso para conectar la aplicación a la API. En una sección posterior de este mismo inicio rápido, pegará la clave y el punto de conexión en el código.

  1. Después de que el recurso de lenguaje se implemente correctamente, haga clic en el botón Ir al recurso en Pasos siguientes.

    Captura de pantalla que muestra los pasos siguientes después de implementar un recurso.

  2. En la pantalla del recurso, seleccione Claves y punto de conexión en el menú de navegación izquierdo. Usará una de las claves y el punto de conexión en los pasos siguientes.

    Captura de pantalla en la que se muestra la sección de claves y punto de conexión de un recurso.

Creación de variables de entorno

La aplicación debe autenticarse para enviar solicitudes de API. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas. En este ejemplo, escribirá las credenciales en variables de entorno del equipo local que ejecuta la aplicación.

Sugerencia

No incluya la clave directamente en el código ni la exponga nunca públicamente. Consulte el artículo de Seguridad de servicios de Azure AI para ver más opciones de autenticación, como Azure Key Vault.

Para establecer la variable de entorno para la clave del recurso de lenguaje, abra una ventana de consola y siga las instrucciones correspondientes a su sistema operativo y su entorno de desarrollo.

  1. Para establecer la variable de entorno LANGUAGE_KEY, reemplace your-key por una de las claves del recurso.
  2. Para establecer la variable de entorno LANGUAGE_ENDPOINT, reemplace your-endpoint por el punto de conexión del recurso.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Nota:

Si solo necesita acceder a las variables de entorno en la consola que se está ejecutando en este momento, puede establecer la variable de entorno con set en vez de con setx.

Después de agregar las variables de entorno, puede que tenga que reiniciar todos los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de consola. Por ejemplo, si usa Visual Studio como editor, reinícielo antes de ejecutar el ejemplo.

Creación de una aplicación Node.js

En una ventana de la consola (como cmd, PowerShell o Bash), cree un directorio para la aplicación y vaya a él.

mkdir myapp 

cd myapp

Ejecute el comando npm init para crear una aplicación de nodo con un archivo package.json.

npm init

Instalación de la biblioteca cliente

Instale los paquetes de npm:

npm install @azure/ai-language-text

Ejemplo de código

Abra el archivo y copie el código siguiente. Luego, ejecute el código.

"use strict";

const { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics");

// This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
const key = process.env.LANGUAGE_KEY;
const endpoint = process.env.LANGUAGE_ENDPOINT;


//an example document for sentiment analysis and opinion mining
const documents = [{
    text: "The food and service were unacceptable. The concierge was nice, however.",
    id: "0",
    language: "en"
  }];
  
async function main() {
  console.log("=== Sentiment analysis and opinion mining sample ===");

  const client = new TextAnalysisClient(endpoint, new AzureKeyCredential(key));

  const results = await client.analyze("SentimentAnalysis", documents, {
    includeOpinionMining: true,
  });

  for (let i = 0; i < results.length; i++) {
    const result = results[i];
    console.log(`- Document ${result.id}`);
    if (!result.error) {
      console.log(`\tDocument text: ${documents[i].text}`);
      console.log(`\tOverall Sentiment: ${result.sentiment}`);
      console.log("\tSentiment confidence scores:", result.confidenceScores);
      console.log("\tSentences");
      for (const { sentiment, confidenceScores, opinions } of result.sentences) {
        console.log(`\t- Sentence sentiment: ${sentiment}`);
        console.log("\t  Confidence scores:", confidenceScores);
        console.log("\t  Mined opinions");
        for (const { target, assessments } of opinions) {
          console.log(`\t\t- Target text: ${target.text}`);
          console.log(`\t\t  Target sentiment: ${target.sentiment}`);
          console.log("\t\t  Target confidence scores:", target.confidenceScores);
          console.log("\t\t  Target assessments");
          for (const { text, sentiment } of assessments) {
            console.log(`\t\t\t- Text: ${text}`);
            console.log(`\t\t\t  Sentiment: ${sentiment}`);
          }
        }
      }
    } else {
      console.error(`\tError: ${result.error}`);
    }
  }
}
  
main().catch((err) => {
  console.error("The sample encountered an error:", err);
});

Resultados

=== Sentiment analysis and opinion mining sample ===
- Document 0
    Document text: The food and service were unacceptable. The concierge was nice, however.
    Overall Sentiment: mixed
    Sentiment confidence scores: { positive: 0.49, neutral: 0, negative: 0.5 }
    Sentences
    - Sentence sentiment: negative
      Confidence scores: { positive: 0, neutral: 0, negative: 1 }
      Mined opinions
            - Target text: food
              Target sentiment: negative
              Target confidence scores: { positive: 0.01, negative: 0.99 }
              Target assessments
                    - Text: unacceptable
                      Sentiment: negative
            - Target text: service
              Target sentiment: negative
              Target confidence scores: { positive: 0.01, negative: 0.99 }
              Target assessments
                    - Text: unacceptable
                      Sentiment: negative
    - Sentence sentiment: positive
      Confidence scores: { positive: 0.98, neutral: 0.01, negative: 0.01 }
      Mined opinions
            - Target text: concierge
              Target sentiment: positive
              Target confidence scores: { positive: 1, negative: 0 }
              Target assessments
                    - Text: nice
                      Sentiment: positive

Limpieza de recursos

Si quiere limpiar y eliminar una suscripción de servicios de Azure AI, puede eliminar el recurso o el grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él.

Use los siguientes comandos para eliminar las variables de entorno que creó para este inicio rápido.

reg delete "HKCU\Environment" /v LANGUAGE_KEY /f
reg delete "HKCU\Environment" /v LANGUAGE_ENDPOINT /f

Pasos siguientes

Documentación de referencia | Ejemplos adicionales | Paquete (PyPi) | Código fuente de biblioteca

Use este inicio rápido para crear una aplicación de análisis de sentimiento con la biblioteca cliente de Python. En el ejemplo siguiente, creará una aplicación de Python que puede identificar las opiniones expresadas en un ejemplo de texto y realizar análisis de sentimiento basado en aspectos.

Prerrequisitos

Instalación

Creación de un recurso de Azure

Para usar el siguiente código de ejemplo, tendrá que implementar un recurso de Azure. Este recurso contendrá una clave y un punto de conexión que se usarán para autenticar las llamadas API que envíe al servicio de lenguaje.

  1. Use el vínculo siguiente para crear un recurso de lenguaje mediante Azure Portal. Tendrá que iniciar sesión con su suscripción de Azure.

  2. En la pantalla Seleccionar características adicionales, seleccione Continuar para crear el recurso.

    Captura de pantalla que muestra opciones de características adicionales en Azure Portal.

  3. En la pantalla Crear lenguaje, proporcione la siguiente información:

    Detalle Descripción
    Subscription La cuenta de suscripción a la que se asociará el recurso. Seleccione la suscripción de Azure en el menú desplegable.
    Resource group Un grupo de recursos es un contenedor que almacena los recursos que crea. Seleccione Crear nuevo para crear un nuevo grupo de recursos.
    Region La ubicación del recurso de idioma. Las diferentes regiones pueden crear latencias, según la ubicación física en la que usted se encuentre, pero no tienen ningún impacto en la disponibilidad del tiempo de ejecución del recurso. En este inicio rápido, seleccione una región disponible cerca de usted o elija Este de EE. UU.
    Nombre Nombre para el recurso de lenguaje. Este nombre también se usará para crear una dirección URL de punto de conexión que las aplicaciones usarán para enviar solicitudes de API.
    Plan de tarifa Plan de tarifa del recurso de idioma. Puede usar el nivel Gratis F0 para probar el servicio y actualizarlo más adelante a un nivel de pago cuando pase a producción.

    Captura de pantalla que muestra en detalle la creación de un recurso en Azure Portal.

  4. Asegúrese de que la casilla Aviso de IA responsable esté activada.

  5. En la parte inferior de la página, seleccione Revisar y crear.

  6. En la pantalla que aparece, asegúrese de que se ha superado la validación y de que ha escrito la información correctamente. Seleccione Crear.

Obtención de la clave y el punto de conexión

Ahora necesitará la clave y el punto de conexión del recurso para conectar la aplicación a la API. En una sección posterior de este mismo inicio rápido, pegará la clave y el punto de conexión en el código.

  1. Después de que el recurso de lenguaje se implemente correctamente, haga clic en el botón Ir al recurso en Pasos siguientes.

    Captura de pantalla que muestra los pasos siguientes después de implementar un recurso.

  2. En la pantalla del recurso, seleccione Claves y punto de conexión en el menú de navegación izquierdo. Usará una de las claves y el punto de conexión en los pasos siguientes.

    Captura de pantalla en la que se muestra la sección de claves y punto de conexión de un recurso.

Creación de variables de entorno

La aplicación debe autenticarse para enviar solicitudes de API. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas. En este ejemplo, escribirá las credenciales en variables de entorno del equipo local que ejecuta la aplicación.

Sugerencia

No incluya la clave directamente en el código ni la exponga nunca públicamente. Consulte el artículo de Seguridad de servicios de Azure AI para ver más opciones de autenticación, como Azure Key Vault.

Para establecer la variable de entorno para la clave del recurso de lenguaje, abra una ventana de consola y siga las instrucciones correspondientes a su sistema operativo y su entorno de desarrollo.

  1. Para establecer la variable de entorno LANGUAGE_KEY, reemplace your-key por una de las claves del recurso.
  2. Para establecer la variable de entorno LANGUAGE_ENDPOINT, reemplace your-endpoint por el punto de conexión del recurso.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Nota:

Si solo necesita acceder a las variables de entorno en la consola que se está ejecutando en este momento, puede establecer la variable de entorno con set en vez de con setx.

Después de agregar las variables de entorno, puede que tenga que reiniciar todos los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de consola. Por ejemplo, si usa Visual Studio como editor, reinícielo antes de ejecutar el ejemplo.

Instalación de la biblioteca cliente

Después de instalar Python, puede instalar la biblioteca cliente con:

pip install azure-ai-textanalytics==5.2.0

Ejemplo de código

Cree un nuevo archivo de Python y copie el código siguiente. Después, ejecute el código:

# This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
language_key = os.environ.get('LANGUAGE_KEY')
language_endpoint = os.environ.get('LANGUAGE_ENDPOINT')

from azure.ai.textanalytics import TextAnalyticsClient
from azure.core.credentials import AzureKeyCredential

# Authenticate the client using your key and endpoint 
def authenticate_client():
    ta_credential = AzureKeyCredential(language_key)
    text_analytics_client = TextAnalyticsClient(
            endpoint=language_endpoint, 
            credential=ta_credential)
    return text_analytics_client

client = authenticate_client()

# Example method for detecting sentiment and opinions in text 
def sentiment_analysis_with_opinion_mining_example(client):

    documents = [
        "The food and service were unacceptable. The concierge was nice, however."
    ]

    result = client.analyze_sentiment(documents, show_opinion_mining=True)
    doc_result = [doc for doc in result if not doc.is_error]

    positive_reviews = [doc for doc in doc_result if doc.sentiment == "positive"]
    negative_reviews = [doc for doc in doc_result if doc.sentiment == "negative"]

    positive_mined_opinions = []
    mixed_mined_opinions = []
    negative_mined_opinions = []

    for document in doc_result:
        print("Document Sentiment: {}".format(document.sentiment))
        print("Overall scores: positive={0:.2f}; neutral={1:.2f}; negative={2:.2f} \n".format(
            document.confidence_scores.positive,
            document.confidence_scores.neutral,
            document.confidence_scores.negative,
        ))
        for sentence in document.sentences:
            print("Sentence: {}".format(sentence.text))
            print("Sentence sentiment: {}".format(sentence.sentiment))
            print("Sentence score:\nPositive={0:.2f}\nNeutral={1:.2f}\nNegative={2:.2f}\n".format(
                sentence.confidence_scores.positive,
                sentence.confidence_scores.neutral,
                sentence.confidence_scores.negative,
            ))
            for mined_opinion in sentence.mined_opinions:
                target = mined_opinion.target
                print("......'{}' target '{}'".format(target.sentiment, target.text))
                print("......Target score:\n......Positive={0:.2f}\n......Negative={1:.2f}\n".format(
                    target.confidence_scores.positive,
                    target.confidence_scores.negative,
                ))
                for assessment in mined_opinion.assessments:
                    print("......'{}' assessment '{}'".format(assessment.sentiment, assessment.text))
                    print("......Assessment score:\n......Positive={0:.2f}\n......Negative={1:.2f}\n".format(
                        assessment.confidence_scores.positive,
                        assessment.confidence_scores.negative,
                    ))
            print("\n")
        print("\n")
          
sentiment_analysis_with_opinion_mining_example(client)

Resultados

Document Sentiment: mixed
Overall scores: positive=0.47; neutral=0.00; negative=0.52

Sentence: The food and service were unacceptable.
Sentence sentiment: negative
Sentence score:
Positive=0.00
Neutral=0.00
Negative=0.99

......'negative' target 'food'
......Target score:
......Positive=0.00
......Negative=1.00

......'negative' assessment 'unacceptable'
......Assessment score:
......Positive=0.00
......Negative=1.00

......'negative' target 'service'
......Target score:
......Positive=0.00
......Negative=1.00

......'negative' assessment 'unacceptable'
......Assessment score:
......Positive=0.00
......Negative=1.00



Sentence: The concierge was nice, however.
Sentence sentiment: positive
Sentence score:
Positive=0.94
Neutral=0.01
Negative=0.05

......'positive' target 'concierge'
......Target score:
......Positive=1.00
......Negative=0.00

......'positive' assessment 'nice'
......Assessment score:
......Positive=1.00
......Negative=0.00

Limpieza de recursos

Si quiere limpiar y eliminar una suscripción de servicios de Azure AI, puede eliminar el recurso o el grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él.

Use los siguientes comandos para eliminar las variables de entorno que creó para este inicio rápido.

reg delete "HKCU\Environment" /v LANGUAGE_KEY /f
reg delete "HKCU\Environment" /v LANGUAGE_ENDPOINT /f

Pasos siguientes

Documentación de referencia

Use este inicio rápido para enviar solicitudes de análisis de sentimiento mediante la API REST. En el ejemplo siguiente, usará cURL para identificar las opiniones expresadas en un ejemplo de texto y realizar análisis de sentimiento basado en aspectos.

Prerrequisitos

Instalación

Creación de un recurso de Azure

Para usar el siguiente código de ejemplo, tendrá que implementar un recurso de Azure. Este recurso contendrá una clave y un punto de conexión que se usarán para autenticar las llamadas API que envíe al servicio de lenguaje.

  1. Use el vínculo siguiente para crear un recurso de lenguaje mediante Azure Portal. Tendrá que iniciar sesión con su suscripción de Azure.

  2. En la pantalla Seleccionar características adicionales, seleccione Continuar para crear el recurso.

    Captura de pantalla que muestra opciones de características adicionales en Azure Portal.

  3. En la pantalla Crear lenguaje, proporcione la siguiente información:

    Detalle Descripción
    Subscription La cuenta de suscripción a la que se asociará el recurso. Seleccione la suscripción de Azure en el menú desplegable.
    Resource group Un grupo de recursos es un contenedor que almacena los recursos que crea. Seleccione Crear nuevo para crear un nuevo grupo de recursos.
    Region La ubicación del recurso de idioma. Las diferentes regiones pueden crear latencias, según la ubicación física en la que usted se encuentre, pero no tienen ningún impacto en la disponibilidad del tiempo de ejecución del recurso. En este inicio rápido, seleccione una región disponible cerca de usted o elija Este de EE. UU.
    Nombre Nombre para el recurso de lenguaje. Este nombre también se usará para crear una dirección URL de punto de conexión que las aplicaciones usarán para enviar solicitudes de API.
    Plan de tarifa Plan de tarifa del recurso de idioma. Puede usar el nivel Gratis F0 para probar el servicio y actualizarlo más adelante a un nivel de pago cuando pase a producción.

    Captura de pantalla que muestra en detalle la creación de un recurso en Azure Portal.

  4. Asegúrese de que la casilla Aviso de IA responsable esté activada.

  5. En la parte inferior de la página, seleccione Revisar y crear.

  6. En la pantalla que aparece, asegúrese de que se ha superado la validación y de que ha escrito la información correctamente. Seleccione Crear.

Obtención de la clave y el punto de conexión

Ahora necesitará la clave y el punto de conexión del recurso para conectar la aplicación a la API. En una sección posterior de este mismo inicio rápido, pegará la clave y el punto de conexión en el código.

  1. Después de que el recurso de lenguaje se implemente correctamente, haga clic en el botón Ir al recurso en Pasos siguientes.

    Captura de pantalla que muestra los pasos siguientes después de implementar un recurso.

  2. En la pantalla del recurso, seleccione Claves y punto de conexión en el menú de navegación izquierdo. Usará una de las claves y el punto de conexión en los pasos siguientes.

    Captura de pantalla en la que se muestra la sección de claves y punto de conexión de un recurso.

Creación de variables de entorno

La aplicación debe autenticarse para enviar solicitudes de API. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas. En este ejemplo, escribirá las credenciales en variables de entorno del equipo local que ejecuta la aplicación.

Sugerencia

No incluya la clave directamente en el código ni la exponga nunca públicamente. Consulte el artículo de Seguridad de servicios de Azure AI para ver más opciones de autenticación, como Azure Key Vault.

Para establecer la variable de entorno para la clave del recurso de lenguaje, abra una ventana de consola y siga las instrucciones correspondientes a su sistema operativo y su entorno de desarrollo.

  1. Para establecer la variable de entorno LANGUAGE_KEY, reemplace your-key por una de las claves del recurso.
  2. Para establecer la variable de entorno LANGUAGE_ENDPOINT, reemplace your-endpoint por el punto de conexión del recurso.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint

Nota:

Si solo necesita acceder a las variables de entorno en la consola que se está ejecutando en este momento, puede establecer la variable de entorno con set en vez de con setx.

Después de agregar las variables de entorno, puede que tenga que reiniciar todos los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de consola. Por ejemplo, si usa Visual Studio como editor, reinícielo antes de ejecutar el ejemplo.

Creación de un archivo JSON con el cuerpo de la solicitud de ejemplo

En un editor de código, cree un archivo denominado test_sentiment_payload.json y copie el JSON de ejemplo siguiente. Esta solicitud de ejemplo se enviará a la API en el paso siguiente.

{
	"kind": "SentimentAnalysis",
	"parameters": {
		"modelVersion": "latest",
		"opinionMining": "True"
	},
	"analysisInput":{
		"documents":[
			{
				"id":"1",
				"language":"en",
				"text": "The food and service were unacceptable. The concierge was nice, however."
			}
		]
	}
} 

Guarde test_sentiment_payload.json en algún lugar del equipo. Por ejemplo, el escritorio.

Envío de una solicitud de API de minería de opiniones y de un análisis de sentimiento

Nota

En los ejemplos siguientes se incluye una solicitud para la característica de minería de opiniones de análisis de sentimiento, que proporciona información detallada sobre las valoraciones (adjetivos) relacionadas con los destinos (nombres) del texto.

Use los comandos siguientes para enviar la solicitud de API mediante el programa que usa. Copie el comando en el terminal y ejecútelo.

parámetro Descripción
-X POST <endpoint> Especifica el punto de conexión para acceder a la API.
-H Content-Type: application/json Tipo de contenido para enviar datos JSON.
-H "Ocp-Apim-Subscription-Key:<key> Especifica la clave para acceder a la API.
-d <documents> El archivo JSON que contiene los documentos que quiere enviar.

Sustituya C:\Users\<myaccount>\Desktop\test_sentiment_payload.json por la ubicación del archivo de solicitud JSON de ejemplo que ha creado en el paso anterior.

Símbolo del sistema

curl -X POST "%LANGUAGE_ENDPOINT%/language/:analyze-text?api-version=2023-04-15-preview" ^
-H "Content-Type: application/json" ^
-H "Ocp-Apim-Subscription-Key: %LANGUAGE_KEY%" ^
-d "@C:\Users\<myaccount>\Desktop\test_sentiment_payload.json"

PowerShell

curl.exe -X POST $env:LANGUAGE_ENDPOINT/language/:analyze-text?api-version=2023-04-15-preview `
-H "Content-Type: application/json" `
-H "Ocp-Apim-Subscription-Key: $env:LANGUAGE_KEY" `
-d "@C:\Users\<myaccount>\Desktop\test_sentiment_payload.json"

Respuesta JSON

{
	"kind": "SentimentAnalysisResults",
	"results": {
		"documents": [{
			"id": "1",
			"sentiment": "mixed",
			"confidenceScores": {
				"positive": 0.47,
				"neutral": 0.0,
				"negative": 0.52
			},
			"sentences": [{
				"sentiment": "negative",
				"confidenceScores": {
					"positive": 0.0,
					"neutral": 0.0,
					"negative": 0.99
				},
				"offset": 0,
				"length": 40,
				"text": "The food and service were unacceptable. ",
				"targets": [{
					"sentiment": "negative",
					"confidenceScores": {
						"positive": 0.0,
						"negative": 1.0
					},
					"offset": 4,
					"length": 4,
					"text": "food",
					"relations": [{
						"relationType": "assessment",
						"ref": "#/documents/0/sentences/0/assessments/0"
					}]
				}, {
					"sentiment": "negative",
					"confidenceScores": {
						"positive": 0.0,
						"negative": 1.0
					},
					"offset": 13,
					"length": 7,
					"text": "service",
					"relations": [{
						"relationType": "assessment",
						"ref": "#/documents/0/sentences/0/assessments/0"
					}]
				}],
				"assessments": [{
					"sentiment": "negative",
					"confidenceScores": {
						"positive": 0.0,
						"negative": 1.0
					},
					"offset": 26,
					"length": 12,
					"text": "unacceptable",
					"isNegated": false
				}]
			}, {
				"sentiment": "positive",
				"confidenceScores": {
					"positive": 0.94,
					"neutral": 0.01,
					"negative": 0.05
				},
				"offset": 40,
				"length": 32,
				"text": "The concierge was nice, however.",
				"targets": [{
					"sentiment": "positive",
					"confidenceScores": {
						"positive": 1.0,
						"negative": 0.0
					},
					"offset": 44,
					"length": 9,
					"text": "concierge",
					"relations": [{
						"relationType": "assessment",
						"ref": "#/documents/0/sentences/1/assessments/0"
					}]
				}],
				"assessments": [{
					"sentiment": "positive",
					"confidenceScores": {
						"positive": 1.0,
						"negative": 0.0
					},
					"offset": 58,
					"length": 4,
					"text": "nice",
					"isNegated": false
				}]
			}],
			"warnings": []
		}],
		"errors": [],
		"modelVersion": "2022-06-01"
	}
}

Limpieza de recursos

Si quiere limpiar y eliminar una suscripción de servicios de Azure AI, puede eliminar el recurso o el grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él.

Use los siguientes comandos para eliminar las variables de entorno que creó para este inicio rápido.

reg delete "HKCU\Environment" /v LANGUAGE_KEY /f
reg delete "HKCU\Environment" /v LANGUAGE_ENDPOINT /f

Pasos siguientes