Sentimento direcionado - Amazon Comprehend

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Sentimento direcionado

O sentimento direcionado fornece uma compreensão granular dos sentimentos associados a entidades específicas (como marcas ou produtos) em seus documentos de entrada.

A diferença entre sentimento direcionado e sentimento é o nível de granularidade nos dados de saída. A análise de sentimentos determina o sentimento dominante para cada documento de entrada, mas não fornece dados para análise posterior. A análise de sentimento direcionado determina o sentimento por entidade para entidades específicas em cada documento de entrada. Você pode analisar os dados de saída para determinar os produtos e serviços específicos que recebem feedback positivo ou negativo.

Por exemplo, em um conjunto de avaliações de restaurantes, um cliente fornece a seguinte avaliação: “Os tacos estavam deliciosos e a equipe foi simpática”. A análise dessa revisão produzirá os seguintes resultados:

  • A análise de sentimento determina se o sentimento geral de cada avaliação de restaurante é positivo, negativo, neutro ou misto. Nesse exemplo, o sentimento geral é positivo.

  • A análise de sentimento direcionado determina o sentimento por entidades e atributos do restaurante que os clientes mencionam nas avaliações. Nesse exemplo, o cliente fez comentários positivos sobre “tacos” e “equipe”.

O sentimento direcionado fornece os seguintes resultados para cada trabalho de análise:

  • Identidade das entidades mencionadas nos documentos.

  • Classificação do tipo de entidade para cada menção de entidade.

  • O sentimento e uma pontuação de sentimento para cada menção de entidade.

  • Grupos de menções (grupos de correferência) que correspondem a uma única entidade.

Você pode usar o console ou a API para executar uma análise de sentimento direcionado. O console e a API oferecem suporte à análise em tempo real e análise assíncrona para sentimento direcionado.

O Amazon Comprehend suporta sentimentos direcionados para documentos no idioma inglês.

Para obter informações adicionais sobre o sentimento direcionado, incluindo um tutorial, consulte Extrair sentimento granular em texto com o sentimento direcionado no Amazon Comprehend no blog do AWS sobre machine learning.

Tipos de entidade

O sentimento direcionado identifica os seguintes tipos de entidade. Ele atribui o tipo de entidade OUTRO se a entidade não pertencer a nenhuma outra categoria. Cada menção de entidade no arquivo de saída inclui o tipo de entidade, como "Type": "PERSON".

Definições do tipo de entidade
Tipo de entidade Definição
PESSOA Os exemplos incluem indivíduos, grupos de pessoas, apelidos, personagens fictícios e nomes de animais.
LOCALIZAÇÃO Localizações geográficas, como países, cidades, estados, endereços, formações geológicas, corpos d'água, marcos naturais e localizações astronômicas.
ORGANIZAÇÃO Os exemplos incluem governos, empresas, equipes esportivas e religiões.
FACILITY Edifícios, aeroportos, rodovias, pontes e outras estruturas permanentes feitas pelo homem e melhorias imobiliárias.
MARCA Organização, grupo ou produtor de um item comercial específico ou linha de produtos.
COMMERCIAL_ITEM Qualquer item não genérico comprável ou adquirível, incluindo veículos e produtos grandes que tiveram apenas um item produzido.
FILME Um filme ou programa de televisão. A entidade pode ser o nome completo, um apelido ou um subtítulo.
MÚSICA Uma música, completa ou parcial. Além disso, coleções de criações musicais individuais, como um álbum ou uma antologia.
LIVRO Um livro publicado profissionalmente ou autopublicado.
SOFTWARE Um produto de software lançado oficialmente.
JOGO Um jogo, como videogames, jogos de tabuleiro, jogos comuns ou esportes.
TÍTULO_PESSOAL Títulos oficiais e honoríficos, como Presidente, PhD ou Dr.
EVENTO Os exemplos incluem festivais, apresentações musicais, eleições, guerras, conferências e eventos promocionais.
DATA Qualquer referência a uma data ou hora, seja específica ou geral, absoluta ou relativa.
QUANTIDADE Todas as medidas junto com suas unidades (moeda, porcentagem, número, bytes etc.).
ATRIBUTO Um atributo, característica ou traço de uma entidade, como a “qualidade” de um produto, o “preço” de um telefone ou a “velocidade” de uma CPU.
OUTRO Entidades que não pertencem a nenhuma das outras categorias.

Grupo de correferência

O sentimento direcionado identifica grupos de correferência em cada documento de entrada. Um grupo de correferência é um grupo de menções em um documento que corresponde a uma entidade do mundo real.

No seguinte exemplo de uma avaliação de cliente, “spa” é a entidade com o tipo de entidade FACILITY. A entidade tem duas menções adicionais como pronome (“it”).

Grupo de correferência de sentimentos direcionados.

Organização do arquivo de saída

O trabalho de análise de sentimento direcionado cria um arquivo JSON de saída de texto. O arquivo contém um objeto JSON para cada um dos documentos de entrada. Cada objeto JSON contém os seguintes campos:

  • Entitidades – uma matriz de entidades encontradas no documento.

  • Arquivo – o nome do arquivo do documento de entrada.

  • Linha – se o arquivo de entrada for um documento por linha, Entidades conterá o número da linha do documento no arquivo.

nota

Se o sentimento direcionado não identificar nenhuma entidade no texto de entrada, ele retornará uma matriz vazia como resultado de Entidades.

O exemplo a seguir mostra as Entidades para um arquivo de entrada com três linhas de entrada. O formato de entrada é UM_DOC_POR_LINHA, então cada linha de entrada é um documento.

{ "Entities":[ {entityA}, {entityB}, {entityC} ], "File": "TargetSentimentInputDocs.txt", "Line": 0 } { "Entities": [ {entityD}, {entityE} ], "File": "TargetSentimentInputDocs.txt", "Line": 1 } { "Entities": [ {entityF}, {entityG} ], "File": "TargetSentimentInputDocs.txt", "Line": 2 }

Uma entidade na matriz Entidades inclui um agrupamento lógico (chamado de grupo de correferência) das menções de entidade detectadas no documento. Cada entidade tem a seguinte estrutura geral:

{"DescriptiveMentionIndex": [0], "Mentions": [ {mentionD}, {mentionE} ] }

Uma entidade contém os seguintes campos:

  • Menções – uma matriz de menções da entidade no documento. A matriz representa um grupo de correferência. Consulte Grupo de correferência para ver um exemplo. A ordem das menções na matriz Mentions é a ordem da respectiva localização (deslocamento) no documento. Cada menção inclui a pontuação do sentimento e a pontuação do grupo dessa menção. A pontuação do grupo indica o nível de confiança do pertencimento dessas menções à mesma entidade.

  • DescriptiveMentionIndex— Um ou mais índices na matriz Menções que fornecem o melhor nome para o grupo de entidades. Por exemplo, uma entidade pode ter três menções com os valores de Texto “ABC Hotel”, “ABC Hotel” e “it”. O melhor nome é “ABC Hotel”, que tem um DescriptiveMentionIndex valor de [0,1].

Cada menção inclui os seguintes campos

  • BeginOffset— O deslocamento para o texto do documento em que a menção começa.

  • EndOffset— O deslocamento para o texto do documento onde a menção termina.

  • GroupScore— A confiança de que todas as entidades mencionadas no grupo se relacionam com a mesma entidade.

  • Texto – o texto no documento que identifica a entidade.

  • Tipo – o tipo de identidade. O Amazon Comprehend oferece suporte a uma variedade de tipos de entidades.

  • Pontuação – confiança do modelo de que a entidade é relevante. O intervalo de valores é de zero a um, com um indicando a maior confiança.

  • MentionSentiment— Contém o sentimento e a pontuação de sentimento da menção.

  • Sentimento – o sentimento da menção. Os valores incluem: POSITIVO, NEUTRO, NEGATIVO e MISTO.

  • SentimentScore— Fornece confiança ao modelo para cada um dos sentimentos possíveis. O intervalo de valores é de zero a um, com um indicando a maior confiança.

Os valores de Sentimento têm o seguinte significado:

  • Positivo – a menção da entidade expressa um sentimento positivo.

  • Negativo – a menção da entidade expressa um sentimento negativo.

  • Misto – a menção da entidade expressa sentimentos positivos e negativos.

  • Neutro – a menção da entidade não expressa sentimentos positivos nem negativos.

No exemplo a seguir, uma entidade tem somente uma menção no documento de entrada, então DescriptiveMentionIndex é zero (a primeira menção na matriz Menções). A entidade identificada é uma PESSOA com o nome “I”. A pontuação do sentimento é neutra.

{"Entities":[ { "DescriptiveMentionIndex": [0], "Mentions": [ { "BeginOffset": 0, "EndOffset": 1, "Score": 0.999997, "GroupScore": 1, "Text": "I", "Type": "PERSON", "MentionSentiment": { "Sentiment": "NEUTRAL", "SentimentScore": { "Mixed": 0, "Negative": 0, "Neutral": 1, "Positive": 0 } } } ] } ], "File": "Input.txt", "Line": 0 }

Análise em tempo real usando o console

Você pode usar o console do Amazon Comprehend para executar Sentimento direcionado em tempo real. Use o texto de amostra ou cole seu próprio texto na caixa de texto de entrada e escolha Analisar.

No painel Insights, o console exibe três visualizações da análise de sentimento direcionada:

  • Texto analisado – exibe o texto analisado e sublinha cada entidade. A cor do sublinhado indica o valor do sentimento (positivo, neutro, negativo ou misto) que a análise atribuiu à entidade. O console exibe mapeamentos de cores no canto superior direito da caixa do texto analisado. Se você passar o cursor sobre uma entidade, o console exibirá um painel pop-up contendo valores de análise (tipo de entidade, pontuação de sentimento) da entidade.

  • Resultados – exibe uma tabela contendo uma linha para cada menção de entidade identificada no texto. Para cada entidade, a tabela mostra a entidade e a pontuação da entidade. A linha também inclui o sentimento principal e a pontuação de cada valor de sentimento. Se houver várias menções da mesma entidade, conhecida como Grupo de correferência, a tabela exibirá essas menções como um conjunto flexível de linhas associadas à entidade principal.

    Se você passar o mouse sobre uma linha da entidade na tabela Resultados, o console destacará a menção da entidade no painel Texto analisado.

  • Integração de aplicação – exibe os valores dos parâmetros da solicitação de API e a estrutura do objeto JSON retornado na resposta da API. Para obter uma descrição dos campos no objeto JSON, consulte Organização do arquivo de saída.

Exemplo de análise em tempo real no console

Este exemplo usa o texto a seguir como entrada, que é o texto de entrada padrão fornecido pelo console.

Hello Zhang Wei, I am John. Your AnyCompany Financial Services, LLC credit card account 1111-0000-1111-0008 has a minimum payment of $24.53 that is due by July 31st. Based on your autopay settings, we will withdraw your payment on the due date from your bank account number XXXXXX1111 with the routing number XXXXX0000. Customer feedback for Sunshine Spa, 123 Main St, Anywhere. Send comments to Alice at sunspa@mail.com. I enjoyed visiting the spa. It was very comfortable but it was also very expensive. The amenities were ok but the service made the spa a great experience.

O painel Texto analisado mostra a seguinte saída para esse exemplo. Passe o mouse sobre o texto Zhang Wei para ver o painel pop-up dessa entidade.

Texto analisado por sentimento direcionado.

A tabela Resultados fornece detalhes adicionais sobre cada entidade, incluindo a pontuação da entidade, o sentimento principal e a pontuação de cada sentimento.

Tabela de resultados de sentimento direcionado.

Em nosso exemplo, a análise de sentimento direcionado reconhece que cada menção de seu no texto de entrada é uma referência à entidade pessoal Zhang Wei. O console exibe essas menções como um conjunto de linhas recolhíveis associadas à entidade principal.

Tabela de resultados de sentimento direcionado.

O painel de integração de aplicativos exibe o objeto JSON que a DetectTargetedSentiment API gera. Veja a próxima seção para um exemplo detalhado.

Exemplo de saída de sentimento direcionado

O exemplo a seguir mostra o arquivo de saída de um trabalho de análise de sentimento direcionado. O arquivo de entrada consiste em três documentos simples:

The burger was very flavorful and the burger bun was excellent. However, customer service was slow. My burger was good, and it was warm. The burger had plenty of toppings. The burger was cooked perfectly but it was cold. The service was OK.

A análise de sentimento direcionado desse arquivo de entrada produz a seguinte saída.

{"Entities":[ { "DescriptiveMentionIndex": [ 0 ], "Mentions": [ { "BeginOffset": 4, "EndOffset": 10, "Score": 0.999991, "GroupScore": 1, "Text": "burger", "Type": "OTHER", "MentionSentiment": { "Sentiment": "POSITIVE", "SentimentScore": { "Mixed": 0, "Negative": 0, "Neutral": 0, "Positive": 1 } } } ] }, { "DescriptiveMentionIndex": [ 0 ], "Mentions": [ { "BeginOffset": 38, "EndOffset": 44, "Score": 1, "GroupScore": 1, "Text": "burger", "Type": "OTHER", "MentionSentiment": { "Sentiment": "NEUTRAL", "SentimentScore": { "Mixed": 0.000005, "Negative": 0.000005, "Neutral": 0.999591, "Positive": 0.000398 } } } ] }, { "DescriptiveMentionIndex": [ 0 ], "Mentions": [ { "BeginOffset": 45, "EndOffset": 48, "Score": 0.961575, "GroupScore": 1, "Text": "bun", "Type": "OTHER", "MentionSentiment": { "Sentiment": "POSITIVE", "SentimentScore": { "Mixed": 0.000327, "Negative": 0.000286, "Neutral": 0.050269, "Positive": 0.949118 } } } ] }, { "DescriptiveMentionIndex": [ 0 ], "Mentions": [ { "BeginOffset": 73, "EndOffset": 89, "Score": 0.999988, "GroupScore": 1, "Text": "customer service", "Type": "ATTRIBUTE", "MentionSentiment": { "Sentiment": "NEGATIVE", "SentimentScore": { "Mixed": 0.000001, "Negative": 0.999976, "Neutral": 0.000017, "Positive": 0.000006 } } } ] } ], "File": "TargetSentimentInputDocs.txt", "Line": 0 } { "Entities": [ { "DescriptiveMentionIndex": [ 0 ], "Mentions": [ { "BeginOffset": 0, "EndOffset": 2, "Score": 0.99995, "GroupScore": 1, "Text": "My", "Type": "PERSON", "MentionSentiment": { "Sentiment": "NEUTRAL", "SentimentScore": { "Mixed": 0, "Negative": 0, "Neutral": 1, "Positive": 0 } } } ] }, { "DescriptiveMentionIndex": [ 0, 2 ], "Mentions": [ { "BeginOffset": 3, "EndOffset": 9, "Score": 0.999999, "GroupScore": 1, "Text": "burger", "Type": "OTHER", "MentionSentiment": { "Sentiment": "POSITIVE", "SentimentScore": { "Mixed": 0.000002, "Negative": 0.000001, "Neutral": 0.000003, "Positive": 0.999994 } } }, { "BeginOffset": 24, "EndOffset": 26, "Score": 0.999756, "GroupScore": 0.999314, "Text": "it", "Type": "OTHER", "MentionSentiment": { "Sentiment": "POSITIVE", "SentimentScore": { "Mixed": 0, "Negative": 0.000003, "Neutral": 0.000006, "Positive": 0.999991 } } }, { "BeginOffset": 41, "EndOffset": 47, "Score": 1, "GroupScore": 0.531342, "Text": "burger", "Type": "OTHER", "MentionSentiment": { "Sentiment": "POSITIVE", "SentimentScore": { "Mixed": 0.000215, "Negative": 0.000094, "Neutral": 0.00008, "Positive": 0.999611 } } } ] }, { "DescriptiveMentionIndex": [ 0 ], "Mentions": [ { "BeginOffset": 52, "EndOffset": 58, "Score": 0.965462, "GroupScore": 1, "Text": "plenty", "Type": "QUANTITY", "MentionSentiment": { "Sentiment": "NEUTRAL", "SentimentScore": { "Mixed": 0, "Negative": 0, "Neutral": 1, "Positive": 0 } } } ] }, { "DescriptiveMentionIndex": [ 0 ], "Mentions": [ { "BeginOffset": 62, "EndOffset": 70, "Score": 0.998353, "GroupScore": 1, "Text": "toppings", "Type": "OTHER", "MentionSentiment": { "Sentiment": "NEUTRAL", "SentimentScore": { "Mixed": 0, "Negative": 0, "Neutral": 0.999964, "Positive": 0.000036 } } } ] } ], "File": "TargetSentimentInputDocs.txt", "Line": 1 } { "Entities": [ { "DescriptiveMentionIndex": [ 0 ], "Mentions": [ { "BeginOffset": 4, "EndOffset": 10, "Score": 1, "GroupScore": 1, "Text": "burger", "Type": "OTHER", "MentionSentiment": { "Sentiment": "POSITIVE", "SentimentScore": { "Mixed": 0.001515, "Negative": 0.000822, "Neutral": 0.000243, "Positive": 0.99742 } } }, { "BeginOffset": 36, "EndOffset": 38, "Score": 0.999843, "GroupScore": 0.999661, "Text": "it", "Type": "OTHER", "MentionSentiment": { "Sentiment": "NEGATIVE", "SentimentScore": { "Mixed": 0, "Negative": 0.999996, "Neutral": 0.000004, "Positive": 0 } } } ] }, { "DescriptiveMentionIndex": [ 0 ], "Mentions": [ { "BeginOffset": 53, "EndOffset": 60, "Score": 1, "GroupScore": 1, "Text": "service", "Type": "ATTRIBUTE", "MentionSentiment": { "Sentiment": "NEUTRAL", "SentimentScore": { "Mixed": 0.000033, "Negative": 0.000089, "Neutral": 0.993325, "Positive": 0.006553 } } } ] } ], "File": "TargetSentimentInputDocs.txt", "Line": 2 } }