Página inicialBlogDicas para e-commerceConcordância entre Anotadores: A Linguagem em Disputa
Homem trabalha na concordância de anotadores

Concordância entre Anotadores: A Linguagem em Disputa

Pedro ParanhosMargeting manageredrone

Quando o assunto é Processamento de Linguagem Natural e o desenvolvimento de assistentes por voz, mais cedo ou mais tarde você encontrará o termo “concordância entre anotadores”. Este acordo é fundamental para atingirmos a ilusão de que as máquinas estão, de fato, entendendo palavras.

A linguagem sempre permitiu que os humanos se comunicassem e cooperassem em prol de um bem comum. Esta cooperação e transmissão de conhecimentos adquiridos ao longo do tempo foram possibilitadas por um acordo não inteiramente consciente. Até aí tudo bem, mas parece que chegou a hora de redefinirmos este acordo devido à Inteligência Artificial (ou graças à ela).

Via de regra, vale a pena almejar um acordo, certo? É possível listar milhares de razões para isso, começando pela satisfação pessoal e chegando até a paz mundial. Porém, embora discutir se algo é branco ou preto seja algo relativamente fácil e objetivo, certos aspectos da nossa existência podem ser – para usar um termo suave – discutíveis.

Como você pode imaginar, a própria comunicação oral é uma destas coisas discutíveis, pois não há definições objetivas de “certo” e “errado”. Isso faz com que os computadores tenham dificuldade em processá-la, apenas mais uma demonstração de que a complexidade da evolução humana não pode ser subestimada.

Ao longo de milhares de gerações, o ser humano tem exercitado a comunicação oral, o processo de compartilhar pensamentos através da fala, o que resultou em um excelente domínio sobre a linguagem. No entanto, embora o significado das palavras geralmente seja claro para a maioria de nós, classificá-las é uma tarefa muito mais desafiadora!

List of cordless impact driver's traits with annotations.
O trabalho de P&D da AVA é conduzido com base em exemplos concretos. Nesta imagem, vemos uma lista de atributos, com anotações, de uma furadeira de impacto vendida pela PHU A/B/C, uma loja virtual polonesa de ferramentas.

Um dia como qualquer outro no projeto AVA. Mas vamos começar do começo.


Vamos parametrizar os termos

A Inteligência Artificial pode ir fundo em qualquer tarefa que a dermos, mas é preciso definir limites razoáveis. Quando lidamos com Processamento de Linguagem Natural (PLN), um destes limites são as anotações.

O que é uma anotação? Em poucas palavras, é a classificação de um termo ou, mais precisamente, sua parametrização. Podemos pensar nas anotações como limites ou “linhas-guia” para o PLN.

Outro conceito que precisa ser destacado é o corpus. Este é o texto (geralmente longo) que informaremos como dado de entrada (input) para o algoritmo processar e nos fornecer os resultados.

Inscreva-se na nossa newsletter

Aposte no conhecimento para desenvolver o seu negócio!

O administrador dos seus dados pessoais é a EDRONE BRASIL TECNOLOGIA LTDA. Cuidaremos dos seus dados de contato de acordo com nossa política de privacidade.


Envolvimento humano: Human in the Loop

Quem faz as anotações nos corpus enormes é o anotador. Temos um corpus de texto e queremos etiquetar as palavras, mas não todas elas. A ideia é que a AVA possa automatizar este processo o máximo possível, então precisamos ensinar o sistema a fazer as anotações por conta própria. Isso exige fazer algumas anotações manualmente.

As etiquetas dependem do que exatamente nós desejamos obter do algoritmo, e quais aspectos do corpus ele analisará. No nosso caso, queremos que ele determine “o que é, e o que não é, um atributo de produto”.

Como você pode ter percebido, tudo “depende”, “é questão de escolha”, “varia conforme o objetivo desejado”. O Aprendizado de Máquina (Machine Learning), em geral, envolve definir o escopo concreto do projeto, fornecer os dados corretos à Rede Neural, verificar e fazer ajustes, acompanhando se determinados inputs geram os outputs desejados. No entanto, embora possa parecer que há um “fantasma na máquina”, não tem mágica aqui.

É preciso discutir

O projeto AVA, assim como a edrone como um todo, foca estritamente em eCommerce, consequentemente lidando com produtos e suas características. Estas características podem ser descritas de alguma maneira (tamanho, cor, material etc). Sendo assim, a tarefa de fazer as anotações parece ser simples, já que é apenas uma questão de identificar os atributos de cada produto e descrevê-los!

Então nosso corpus será uma lista de produtos com suas descrições, fichas técnicas, medidas etc, para auxiliar os consumidores quando buscarem pelos produtos que desejam. No entanto, precisamos fazer um pequeno teste para nos assegurarmos de que a equipe de anotadores está em sintonia.

Por que isso é tão importante? Porque precisamos ensinar o algoritmo a anotar cada atributo corretamente. A concordância entre anotadores se traduzirá posteriormente na eficiência do algoritmo, que foi testado pela equipe.

É preciso concordar

Quando se fala em avaliar a eficiência de avaliações sim/não, é muito comum encontrar o termo “F-score” ou “F1-score”. Pode parecer um pouco complicado no começo, mas acredite, é brincadeira de criança (ok, talvez de adolescente). Tudo se resume a somar, multiplicar e dividir alguns valores.

F1-score

Temos dois anotadores que farão as anotações no corpus individual e secretamente. O F1-score exige um ponto de referência, portanto um dos anotadores será considerado “arbitrariamente certo”.

Este anotador de referência definirá a divisão de “atributos/não atributos” (respectivamente, lado esquerdo e direito da imagem abaixo). O outro anotador será testado em relação ao primeiro (suas escolhas estão dentro do círculo na imagem abaixo).

Esta palavra representa um atributo do produto?

  • Verdadeiro positivo: A resposta foi “Sim”, e trata-se de um atributo do produto.
  • Verdadeiro negativo: A resposta foi “Não”, e de fato não é um atributo do produto.
  • Falso positivo: A resposta foi “Sim”, mas aquele não é um atributo do produto.
  • Falso negativo: A resposta foi “Não”, mas aquele é um atributo do produto.
concordância entre anotadores: comparativo entre escolha do anotador, atributos e não atributos

Portanto, no exemplo acima temos:

Verdadeiro Positivo = 11
Verdadeiro Negativo = 13
Falso Positivo = 2
Falso Negativo = 3

Bem simples até aqui, certo? Agora vamos complicar um pouco e calcular a precisão e revocação das anotações.

Podemos dizer que a precisão foca nas respostas “sim” (VP e FP). Ela responde à pergunta: Qual parcela dos atributos selecionados (dentro do círculo) eram, de fato, atributos do produto?

[ {displaystyle text{Precisão} = {frac {text{VP}}{text{VP}+text{FP}}} = {frac {11}{13}} = 0.846 !} ]

A revocação, por outro lado, considera todos os atributos. Ela responde à pergunta: Qual parcela de atributos relevantes foi selecionada?

[ {displaystyle text{Revocação} = {frac {text{VP}}{text{VP}+text{FN}}} = {frac {11}{14}} = 0.785 !} ]

Agora calculamos o F1-score:

[ {displaystyle text{F1} = { 2 cdot frac {text{Precisão} cdot text{Revocação}}{text{Precisão}+text{Revocação}}} =  0.814 !} ]

Nada mal! Infelizmente, este é apenas um exemplo inventado. A vida real não é assim tão fácil 😉

Coeficiente kappa de Cohen

O F1-score não reflete a concordância de fato, uma vez que não leva em consideração a probabilidade dela acontecer. Hora de complicar um pouco mais com a introdução de uma letrinha grega: 𝜅, ou kappa. No contexto da estatística, temos duas variações de kappa:

  • Kappa de Cohen: usado quando dois anotadores fazem anotações de atributos de uma mesma categoria.
  • Kappa de Fleiss: usado quando mais de dois anotadores fazem anotações de atributos de uma mesma categoria 𝑛 vezes.

Além de considerar a probabilidade das concordâncias, o kappa também permite compararmos as taxas de concordância entre testes diferentes. Por exemplo, o coeficiente 𝜅 de anotações em forma de palavras pode ser comparado ao 𝜅 de anotações de imagens.

O kappa de Cohen representa o exemplo apresentado acima, portanto é o que usaremos para avançar.

[ {displaystyle kappa equiv {frac {p_{o}-p_{e}}{1-p_{e}}}!} ]

[  p_0 – text{taxa de concordância relativa} ]

O Kappa de Cohen leva em consideração a probabilidade da concordância acontecer aleatoriamente.

[  p_e – text{probabilidade de concordância aleatória}  ]

[  p_e =  p_{sim}+p_{não}  ]

[  p_{sim} – text{probabilidade de concordância positiva (SIM)} newline p_{não} – text{probabilidade de concordância negativa (NÃO)} ]

Probabilidade de concordância positiva (SIM): Comparativo entre a proporção de respostas “sim” do anotador A com a proporção de respostas “sim” do anotador B:

[ {displaystyle p_{sim} = {frac {S_{A}}{S_{A}+N_{A}}} cdot {frac {S_{B}}{S_{B}+N_{B}}}!} ]

Probabilidade de concordância negativa (NÃO): Comparativo entre a proporção de respostas “não” do anotador A com a proporção de respostas “não” do anotador B:

[ {displaystyle p_{não} = {frac {N_{A}}{S_{A}+N_{A}}} cdot {frac {N_{B}}{S_{B}+N_{B}}}!} ]

O coeficiente kappa de Cohen pode ter valores entre -1 e 1. Porém, valores negativos de kappa devem ser descartados e reavaliados.

Um coeficiente kappa negativo indica que os anotadores estão em discordância em vez de concordância. Em outras palavras, as anotações seriam mais compatíveis entre si se fossem aleatórias.

Por isso, na prática, lidamos apenas com valores positivos de kappa.

Coeficiente KappaConcordância% de dados confiáveis
0.00 – 0.20Insignificante0 – 4%
0.21 – 0.39Mínima4 – 15%
0.40 – 0.59Fraca15 – 35%
0.60 – 0.79Moderada35 – 63%
0.80 – 0.90Forte64 – 81%
0.91 – 1.00Quase perfeita82 – 100%

Concordância entre Anotadores na prática

Em um teste real que fizemos no desenvolvimento da AVA, escolhemos quatro eCommerces e selecionamos cinco produtos aleatórios de cada loja, totalizando 20 produtos. A tarefa era identificar corretamente os nomes (p. ex. “cor”), valores (p. ex. “azul”), e outras descrições de seus atributos.

Para extrair o máximo possível de informações, este teste envolveu três anotadores que são especialistas em Inteligência Artificial (vamos chamá-los de Lucas, Humberto e Pedro), em três cenários. Os anotadores trabalharam em pares, gerando três resultados para cada cenário. Os F1-scores também foram calculados.

Cenário I – [ALL] – cinco parâmetros

  • Nome – início
  • Nome – meio
  • Valor – início
  • Valor – meio
  • Outros

Cenário II – [ATR] – três parâmetros

  • Nome
  • Valor
  • Outros

Cenário III – [NAM] – três parâmetros

  • Nome – início
  • Nome – meio
  • Outros

Nos cenários I e III há uma divisão dos nomes e valores entre “início” e “meio”. Isso não é crucial para compreender este artigo, mas vale a pena ser mencionado. Os nomes e valores de cada atributo são compostos por unidades mínimas de anotação chamadas de “tokens”. O token pode ser uma palavra, um conjunto de palavras, um conjunto de letras, ou apenas uma letra. Sua definição é uma escolha de quem está conduzindo o experimento. O “início” é o primeiro token, e o “meio” é todo o restante.

Como tivemos três pares de anotadores trabalhando em três cenários, cada um gerando duas métricas (F1-score e coeficiente kappa), o experimento gerou um total de 18 métricas que podemos usar para avaliar a concordância entre anotadores:


Cenário ALL
AnotadoresF1-scoreKappa de Cohen
(H, L)0.53590.4679
(H, P)0.55090.4974
(L, P)0.59600.5674

Cenário ATR
AnotadoresF1-scoreKappa de Cohen
(H, L)0.65480.4918
(H, P)0.67670.5284
(L, P)0.70310.5918

Cenário NAM
AnotadoresF1-scoreKappa de Cohen
(H, L)0.60170.4639
(H, P)0.62920.5132
(L, P)0.65520.5239

Estes resultados são bons? Não muito. O nível de concordância foi fraco. Isso é ruim? Não necessariamente! Resultados abaixo do esperado faz parte de qualquer processo de P&D. Porém, os resultados nos dão pistas, e o importante é saber interpretá-los para continuar avançando.

É preciso ter perspectiva

Os resultados representam o ponto de vista de cada anotador. Basicamente, significa que eles têm opiniões diferentes sobre quais deveriam ser os nomes dos atributos e quais valores devem identificá-los. O que podemos aprender com isso?

Eficiência do anotador

Precisamos ensinar o algoritmo a fazer as anotações de cada atributo corretamente. A concordância entre anotadores determinará a eficiência (medida pelo F1-score) com a qual o algoritmo conseguirá fazer isso.

Se o ponto de referência para o F1-score for determinado pelas anotações do Lucas, o algoritmo aprenderá a fazer anotações da mesma forma que o Lucas faz. Neste caso, a concordância entre o Lucas e o algoritmo será alta. Porém, se testarmos este algoritmo contra o Humberto, a taxa de concordância entre os anotadores terá um valor semelhante ao do teste Lucas vs. Humberto.

Como fazer anotações de forma correta

Em todos os cenários, os testes Lucas vs. Pedro tiveram os maiores valores de concordância. Isto aponta que uma abordagem semelhante à deles pode ser o melhor caminho. Por outro lado, vale analisar o que tinha de diferente na abordagem de Humberto, pois ele pode estar considerando ou percebendo algum detalhe interessante, e no fim pode ser que a abordagem dele seja a melhor.

Mantenha a calma, faça anotações e calcule o kappa. Temos uma Inteligência Artificial para construir!

Pedro Paranhos

Margeting manager

edrone

Gerente de Marketing LATAM na edrone. Profissional de marketing full-stack interessado em tecnologia, história (passado e futuro), negócios e idiomas. Leitor de livros e entusiasta de cervejas artesanais.

kpis e-commerce ebook

E-book e Planilha para Calcular KPIs do E-commerce

Use os dados da sua loja virtual a seu favor e saia na frente da concorrência!

Baixe o Ebook Gratuito

Conteúdos relacionados

Deixe a gente te mostrar o mundo do e-commerce
Inscreva-se na nossa newsletter

O administrador dos seus dados pessoais é a EDRONE BRASIL TECNOLOGIA LTDA. Cuidaremos dos seus dados de contato de acordo com nossa política de privacidade.