Procedimientos: Detección de opiniones mediante la API Text AnalyticsHow to: Detect sentiment using the Text Analytics API

La característica Análisis de sentimiento de la API Text Analytics evalúa el texto y devuelve las etiquetas y puntuaciones de opinión de cada oración,The Text Analytics API's Sentiment Analysis feature evaluates text and returns sentiment scores and labels for each sentence. lo que resulta útil para detectar opiniones positivas y negativas tanto en redes sociales como en reseñas de los clientes o en foros de discusión, entre otros.This is useful for detecting positive and negative sentiment in social media, customer reviews, discussion forums and more. El servicio proporciona los modelos de AI que usa la API, el usuario solo tiene que enviar contenido para su análisis.The AI models used by the API are provided by the service, you just have to send content for analysis.

Sugerencia

Text Analytics proporciona también una imagen de contenedor de Docker basada en Linux para la detección del lenguaje, por lo que puede instalar y ejecutar el contenedor de Text Analytics cerca de los datos.Text Analytics also provides a Linux-based Docker container image for language detection, so you can install and run the Text Analytics container close to your data.

Análisis de sentimiento admite una amplia gama de idiomas, y hay más en la versión preliminar.Sentiment Analysis supports a wide range of languages, with more in preview. Para más información, consulte Lenguajes admitidos.For more information, see Supported languages.

ConceptosConcepts

La API Text Analytics utiliza un algoritmo de clasificación de aprendizaje automático para generar una puntuación de las opiniones entre 0 y 1.The Text Analytics API uses a machine learning classification algorithm to generate a sentiment score between 0 and 1. Las puntuaciones cercanas a 1 indican una opinión positiva y las puntuaciones cercanas a 0 indican una opinión negativa.Scores closer to 1 indicate positive sentiment, while scores closer to 0 indicate negative sentiment. El análisis de sentimiento se realiza en todo el documento, en lugar de en entidades individuales del texto,Sentiment analysis is performed on the entire document, instead of individual entities in the text. lo que significa que las puntuaciones de opinión se devuelven a nivel de documento o de oración.This means sentiment scores are returned at a document or sentence level.

El modelo que se usa se entrena previamente con un amplio corpus de texto y asociaciones de opinión.The model used is pre-trained with an extensive corpus of text and sentiment associations. Usa una combinación de técnicas para el análisis, lo que incluye el procesamiento de texto, el análisis de las funciones de sintaxis, la ubicación de las palabras y las asociaciones de palabras.It utilizes a combination of techniques for analysis, including text processing, part-of-speech analysis, word placement, and word associations. Para más información acerca del algoritmo, consulte la introducción a Text Analytics.For more information about the algorithm, see Introducing Text Analytics. Actualmente, no puede proporcionar sus propios datos de entrenamiento.Currently, it isn't possible to provide your own training data.

Se observa una tendencia de mejora de la puntuación cuando los documentos contienen menos frases, en lugar de un bloque de texto grande.There's a tendency for scoring accuracy to improve when documents contain fewer sentences rather than a large block of text. Durante la fase de evaluación de la objetividad, el modelo determina si un documento completo es objetivo o contiene opiniones.During an objectivity assessment phase, the model determines whether a document as a whole is objective or contains sentiment. Un documento que es mayoritariamente objetivo no pasa a la fase de detección de opiniones, lo que genera una puntuación de 0,5 y detiene el procesamiento.A document that's mostly objective doesn't progress to the sentiment detection phase, which results in a 0.50 score, with no further processing. En el caso de los documentos que continúan en la canalización, la siguiente fase genera una puntuación por encima o por debajo de 0,50.For documents that continue in the pipeline, the next phase generates a score above or below 0.50. Dicha puntuación depende del grado de opinión detectado en el documento.The score depends on the degree of sentiment detected in the document.

Versiones y características de Análisis de sentimientoSentiment Analysis versions and features

La API Text Analytics ofrece dos versiones de Análisis de sentimiento, la versión 2 y la versión 3.The Text Analytics API offers two versions of Sentiment Analysis - v2 and v3. La versión 3 de Análisis de sentimiento (versión preliminar pública) aporta importantes mejoras a la precisión y al detalle de la puntuación y categorización del texto de la API.Sentiment Analysis v3 (Public preview) provides significant improvements in the accuracy and detail of the API's text categorization and scoring.

Nota

  • El formato de las solicitudes de la versión 3 de Análisis de sentimiento y los límites de datos son los mismos que en la versión anterior.The Sentiment Analysis v3 request format and data limits are the same as the previous version.
  • La versión 3 de Análisis de sentimiento está disponible en las siguientes regiones: Australia East, Central Canada, Central US, East Asia, East US, East US 2, North Europe, Southeast Asia, South Central US, UK South, West Europe y West US 2.Sentiment Analysis v3 is available in the following regions: Australia East, Central Canada, Central US, East Asia, East US, East US 2, North Europe, Southeast Asia, South Central US, UK South, West Europe, and West US 2.
CaracterísticaFeature Análisis de sentimiento, versión 2Sentiment Analysis v2 Análisis de sentimiento, versión 3Sentiment Analysis v3
Métodos para solicitudes individuales y por lotesMethods for single, and batch requests XX XX
Puntuaciones de opinión de todo el documentoSentiment scores for the entire document XX XX
Puntuaciones de opinión de oraciones individualesSentiment scores for individual sentences XX
Etiquetado de opinionesSentiment labeling XX
Control de versiones de los modelosModel versioning XX

Puntuación de opiniónSentiment scoring

La versión 3 de Análisis de sentimiento clasifica el texto con etiquetas de opinión (que se describen a continuación).Sentiment Analysis v3 classifies text with sentiment labels (described below). Las puntuaciones devueltas representan la confianza del modelo de que el texto es positivo, negativo o neutro.The returned scores represent the model's confidence that the text is either positive, negative, or neutral. Cuanto más alto sea el valor, mayor será la confianza.Higher values signify higher confidence.

Etiquetado de opinionesSentiment labeling

Análisis de sentimiento v3 devuelve las etiquetas de opinión en el nivel de oración y documento (positive, negativey neutral) junto con las puntuaciones de confianza.Sentiment Analysis v3 returns sentiment labels at a sentence and document level (positive, negative, and neutral) along with confidence scores. En el nivel de documento, también se puede devolver la etiqueta de opinión mixed.The mixed sentiment label can also be returned at the document level.

La opinión del documento se determina a continuación:The sentiment of the document is determined below:

Opiniones de frasesSentence sentiment Etiqueta de documento devueltaReturned document label
Hay al menos una oración positive en el documento.At least one positive sentence is in the document. El resto de las oraciones son neutral.The rest of the sentences are neutral. positive
Hay al menos una oración negative en el documento.At least one negative sentence is in the document. El resto de las oraciones son neutral.The rest of the sentences are neutral. negative
Hay al menos una oración negative y al menos una oración positive en el documento.At least one negative sentence and at least one positive sentence are in the document. mixed
Todas las oraciones del documento son neutral.All sentences in the document are neutral. neutral

Control de versiones de los modelosModel versioning

Nota

El control de versiones del modelo para el análisis de opiniones está disponible a partir de la versión v3.0-preview.1.Model versioning for sentiment analysis is available starting in version v3.0-preview.1.

La versión 3 de Text Analytics API le permite elegir la versión del modelo más actual para los datos.Version 3 of the Text Analytics API lets you choose the model version that is most current for your data. Use el parámetro opcional model-version para seleccionar la versión del modelo que desee para sus solicitudes.Use the optional model-version parameter to select the version of the model that is desired for your requests. Si no se especifica este parámetro, la API usará de forma predeterminada latest, la versión estable más reciente.If this parameter isn't specified the API will default to latest, the latest stable version. Aunque puede usar la versión más reciente del modelo en cualquier solicitud, solo se actualizan algunas características en cada versión.Even though you can use the newest model-version in any request, only some features are updated in each version. En la tabla siguiente se describen las características que se han actualizado en cada versión del modelo:The table below describes which features have been updated in each model version:

Versión del modeloModel version Características actualizadasFeatures updated Versión más reciente para:Latest version for:
2020-02-01 Reconocimiento de entidadesEntity recognition Reconocimiento de entidadesEntity recognition
2019-10-01 Reconocimiento de entidades, análisis de opinionesEntity recognition, Sentiment analysis Detección de idioma, extracción de frases clave y análisis de sentimientoLanguage detection, Key phrase extraction, Sentiment analysis

Cada respuesta de los puntos de conexión V3 incluye un campo model-version que especifica la versión del modelo que se usó.Each response from the v3 endpoints includes a model-version field specifying the model version that was used.

{
    "documents": […]
    "errors": []
    "model-version": "2019-10-01"
}

Consulte Novedades para más información sobre las actualizaciones de estas versiones del modelo.See What's new for details on the updates for these model versions.

Ejemplo de código C#Example C# code

Puede encontrar un ejemplo de aplicación C# que llama a esta versión dl Análisis de sentimiento en GitHub.You can find an example C# application that calls this version of Sentiment Analysis on GitHub.

Envío de una solicitud de API RESTSending a REST API request

PreparaciónPreparation

Análisis de sentimiento genera un resultado de mayor calidad cuando se le proporcionan fragmentos de texto más pequeños para trabajar.Sentiment analysis produces a higher-quality result when you give it smaller amounts of text to work on. Esto es opuesto a la extracción de frases clave, que funciona mejor en bloques de texto más grandes.This is opposite from key phrase extraction, which performs better on larger blocks of text. Para obtener los mejores resultados de ambas operaciones, considere la posibilidad de reestructurar las entradas en consecuencia.To get the best results from both operations, consider restructuring the inputs accordingly.

Debe tener documentos JSON en este formato: identificador, texto e idioma.You must have JSON documents in this format: ID, text, and language.

El tamaño del documento debe ser inferior a 5120 caracteres por documento.Document size must be under 5,120 characters per document. Puede tener hasta 1000 elementos (identificadores) por colección.You can have up to 1,000 items (IDs) per collection. La colección se envía en el cuerpo de la solicitud.The collection is submitted in the body of the request.

Estructurar la solicitudStructure the request

Cree una solicitud POST.Create a POST request. Puede usar Postman o la consola de pruebas de API en los siguientes vínculos de referencia para estructurar y enviar rápidamente una.You can use Postman or the API testing console in the following reference links to quickly structure and send one.

Establezca el punto de conexión HTTPS para el análisis de sentimiento, para lo que puede usar un recurso de Text Analytics en Azure o un contenedor de Text Analytics con instancias.Set the HTTPS endpoint for sentiment analysis by using either a Text Analytics resource on Azure or an instantiated Text Analytics container. Debe incluir la dirección URL correcta para la versión que desea usar.You must include the correct URL for the version you want to use. Por ejemplo:For example:

Nota

Puede encontrar la clave y el punto de conexión del recurso de Text Analytics en Azure Portal.You can find your key and endpoint for your Text Analytics resource on the azure portal. Están en la página Inicio rápido del recurso, en Administración de recursos.They will be located on the resource's Quick start page, under resource management.

https://<your-custom-subdomain>.cognitiveservices.azure.com/text/analytics/v3.0-preview.1/sentiment

Establezca un encabezado de la solicitud para incluir la clave de la API Text Analytics.Set a request header to include your Text Analytics API key. En el cuerpo de la solicitud, proporcione la colección de documentos JSON que preparó para este análisis.In the request body, provide the JSON documents collection you prepared for this analysis.

Solicitud de ejemplo de Análisis de sentimientoExample Sentiment Analysis request

En el siguiente ejemplo se presenta contenido que se podría enviar para el análisis de opiniones.The following is an example of content you might submit for sentiment analysis. El formato de la solicitud es el mismo para las dos versiones de la API.The request format is the same for both versions of the API.

{
    "documents": [
    {
        "language": "en",
        "id": "1",
        "text": "Hello world. This is some input text that I love."
    },
    {
        "language": "en",
        "id": "2",
        "text": "It's incredibly sunny outside! I'm so happy."
    }
    ],
}

Publicar la solicitudPost the request

El análisis se realiza tras la recepción de la solicitud.Analysis is performed upon receipt of the request. Para obtener información sobre el tamaño y el número de solicitudes que puede enviar por minuto y segundo, consulte la sección de límites de datos de la introducción.For information on the size and number of requests you can send per minute and second, see the data limits section in the overview.

La API Text Analytics no tiene estado.The Text Analytics API is stateless. No se almacenan datos en la cuenta y los resultados se devuelven inmediatamente en la respuesta.No data is stored in your account, and results are returned immediately in the response.

View the resultsView the results

El analizador de sentimiento clasifica el texto como predominantemente positivo o negativo.The sentiment analyzer classifies text as predominantly positive or negative. Asigna una puntuación en el rengo que oscila entre 0 y 1.It assigns a score in the range of 0 to 1. Los valores próximos a 0,5 son neutros o indeterminados.Values close to 0.5 are neutral or indeterminate. Una puntuación de 0,5 indica neutralidad.A score of 0.5 indicates neutrality. Cuando el sentimiento de una cadena no se puede analizar o no tiene sentimiento, la puntuación es siempre 0,5.When a string can't be analyzed for sentiment or has no sentiment, the score is always 0.5 exactly. Por ejemplo, si se pasa una cadena de español con un código de idioma inglés, la puntuación es 0,5.For example, if you pass in a Spanish string with an English language code, the score is 0.5.

La salida se devuelve inmediatamente.Output is returned immediately. Puede transmitir los resultados a una aplicación que acepte JSON o guardar la salida en un archivo en el sistema local.You can stream the results to an application that accepts JSON or save the output to a file on the local system. Después, importe el resultado en una aplicación que pueda usar para ordenar los datos, realizar búsquedas en ellos y manipularlos.Then, import the output into an application that you can use to sort, search, and manipulate the data. Debido a la compatibilidad con varios idiomas y con Emojis, la respuesta puede contener desplazamientos de texto.Due to multilingual and emoji support, the response may contain text offsets. Consulte cómo procesar desplazamientos para más información.See how to process offsets for more information.

Respuesta de ejemplo de la versión 3 de Análisis de sentimientoSentiment Analysis v3 example response

Las respuestas de la versión 3 de Análisis de sentimiento contienen puntuaciones y etiquetas de opinión de cada oración y documento analizados.Responses from Sentiment Analysis v3 contain sentiment labels and scores for each analyzed sentence and document. documentScores no se devuelve si la etiqueta de opinión del documento es mixed.documentScores is not returned if the document sentiment label is mixed.

{
    "documents": [
        {
            "id": "1",
            "sentiment": "positive",
            "documentScores": {
                "positive": 0.98570585250854492,
                "neutral": 0.0001625834556762,
                "negative": 0.0141316400840878
            },
            "sentences": [
                {
                    "sentiment": "neutral",
                    "sentenceScores": {
                        "positive": 0.0785155147314072,
                        "neutral": 0.89702343940734863,
                        "negative": 0.0244610067456961
                    },
                    "offset": 0,
                    "length": 12
                },
                {
                    "sentiment": "positive",
                    "sentenceScores": {
                        "positive": 0.98570585250854492,
                        "neutral": 0.0001625834556762,
                        "negative": 0.0141316400840878
                    },
                    "offset": 13,
                    "length": 36
                }
            ]
        },
        {
            "id": "2",
            "sentiment": "positive",
            "documentScores": {
                "positive": 0.89198976755142212,
                "neutral": 0.103382371366024,
                "negative": 0.0046278294175863
            },
            "sentences": [
                {
                    "sentiment": "positive",
                    "sentenceScores": {
                        "positive": 0.78401315212249756,
                        "neutral": 0.2067587077617645,
                        "negative": 0.0092281140387058
                    },
                    "offset": 0,
                    "length": 30
                },
                {
                    "sentiment": "positive",
                    "sentenceScores": {
                        "positive": 0.99996638298034668,
                        "neutral": 0.0000060341349126,
                        "negative": 0.0000275444017461
                    },
                    "offset": 31,
                    "length": 13
                }
            ]
        }
    ],
    "errors": []
}

ResumenSummary

En este artículo, ha aprendido los conceptos y el flujo de trabajo del análisis de sentimiento mediante la API Text Analytics.In this article, you learned concepts and workflow for sentiment analysis using the Text Analytics API. En resumen:In summary:

  • Análisis de sentimiento está disponible para determinados idiomas en dos versiones.Sentiment Analysis is available for selected languages in two versions.
  • Los documentos JSON del cuerpo de la solicitud incluyen un identificador, un texto y el código de idioma.JSON documents in the request body include an ID, text, and language code.
  • La solicitud POST se realiza a un punto de conexión /sentiment, mediante una clave de acceso y un punto de conexión personalizados, que sean válidos para la suscripción.The POST request is to a /sentiment endpoint by using a personalized access key and an endpoint that's valid for your subscription.
  • La salida de la respuesta, que consta de una puntuación de las opiniones de cada identificador de documento, se puede transmitir en secuencias a cualquier aplicación que acepte JSON.Response output, which consists of a sentiment score for each document ID, can be streamed to any app that accepts JSON. Por ejemplo, Excel y Power BI.For example, Excel and Power BI.

Consulte tambiénSee also