Redes neurais profundas para avaliação automática de chamadas

A avaliação de chamadas é uma parte essencial do controle de qualidade dos call centers. Ele permite que as organizações ajustem seu fluxo de trabalho para que os operadores possam trabalhar com mais rapidez e eficiência, além de evitar uma rotina sem sentido.

Ciente de que o call center deve ser eficaz, trabalhamos na automatização da pontuação das chamadas. Como resultado, criamos um algoritmo que processa chamadas e as distribui em dois grupos: suspeito e neutro. Todas as chamadas suspeitas foram imediatamente enviadas à equipe de avaliação da qualidade.



Como treinamos uma rede neural profunda


Para as amostras, coletamos 1700 arquivos de áudio, nos quais treinamos a rede. Como o neurônio inicialmente não sabia o que considerar suspeito e o que era neutro, marcamos manualmente todos os arquivos de acordo.

Em amostras neutras, os operadores:

  • não levantaram a voz;
  • Fornecer aos clientes todas as informações solicitadas;
  • não respondeu a provocações do cliente.

Em padrões suspeitos, os operadores costumavam fazer o seguinte:

  • linguagem obscena usada;
  • levantar a voz ou gritar com os clientes;
  • foi para a pessoa;
  • recusou-se a aconselhar sobre questões.

Quando o algoritmo terminou de processar os arquivos, marcou 200 arquivos como inválidos. Esses arquivos não continham sinais suspeitos ou neutros. Descobrimos o que havia nesses 200 arquivos:

  • o cliente desligou imediatamente após o operador responder;
  • o cliente não disse nada depois de ser atendido;
  • havia muito ruído no lado do cliente ou do operador.

Quando excluímos esses arquivos, dividimos os 1.500 restantes em casos de treinamento e teste. No futuro, usamos esses conjuntos de dados para treinar e testar uma rede neural profunda.

Etapa 1: Extrair recursos


A extração de recursos de alto nível desempenha um papel importante no aprendizado de máquina, pois isso afeta diretamente a eficiência do algoritmo. Após analisar todas as fontes possíveis, selecionamos os seguintes sintomas:

Estatísticas de tempo


  • Taxa de cruzamento zero : a velocidade na qual o sinal muda de mais para menos e vice-versa.
  • Energia mediana do quadro : a soma dos sinais ao quadrado e normalizada para o comprimento do quadro correspondente.
  • Entropia de energia do subquadro: a entropia da energia normalizada do subquadro. Pode ser interpretado como uma medida de mudanças drásticas.
  • O desvio médio / mediano / padrão do quadro .

Estatística espectral (com intervalos de frequência)


  1. Centroid espectral.
  2. Distribuição espectral.
  3. Entropia espectral.
  4. Radiação espectral.
  5. Atenuação espectral.

Os coeficientes cepstrais da frequência tonal e do vetor de saturação são sensíveis ao comprimento do sinal de entrada. Poderíamos extraí-los do arquivo inteiro de cada vez; no entanto, com isso, perderíamos o desenvolvimento do traço com o tempo. Como esse método não nos convinha, decidimos dividir o sinal em "janelas" (blocos de tempo).

Para melhorar a qualidade do sinal, dividimos o sinal em pedaços, que se sobrepunham parcialmente. Em seguida, extraímos a tag sequencialmente para cada bloco; portanto, a matriz de atributos foi calculada para cada arquivo de áudio.

Tamanho da janela - 0,2 s; passo da janela - 0,1 s.

Etapa 2: defina o tom da voz em frases separadas


Nossa primeira abordagem para resolver o problema é definir e processar cada frase no fluxo separadamente.

Primeiro, fizemos a diarização e isolamos todas as frases usando a biblioteca LIUM . Os arquivos de entrada eram de baixa qualidade; portanto, na saída também aplicamos suavização e limiar adaptativo para cada arquivo.



Processando interrupções e longo silêncio


Quando determinamos os prazos para cada frase (cliente e operador), os sobrepusemos e revelamos casos em que as duas pessoas falam ao mesmo tempo e casos em que as duas estão em silêncio. Restou apenas determinar o valor limite. Concordamos que, se 3 ou mais segundos os participantes falarem ao mesmo tempo, isso será considerado uma interrupção. Para o silêncio, um limite de 3 segundos foi definido exatamente.



O ponto é que cada frase tem seu próprio comprimento. Conseqüentemente, o número de recursos extraídos para cada frase é diferente.

A rede neural LSTM pode lidar com esse problema. Redes desse tipo podem não apenas processar seqüências de diferentes comprimentos, mas também podem conter feedback, o que permite salvar informações. Esses recursos são muito importantes porque as frases ditas anteriormente contêm informações que afetam as frases ditas depois.


Em seguida, treinamos nossa rede LSTM para determinar a entonação de cada frase.

Como conjunto de treinamento, pegamos 70 arquivos com 30 frases em média (15 frases para cada lado).

O objetivo principal era avaliar as frases do operador do call center, para que não utilizássemos a fala do cliente para treinamento. Foram utilizadas 750 frases como conjunto de dados de treinamento e 250 frases como teste. Como resultado, o neurônio aprendeu a classificar a fala com uma precisão de 72%.

Mas, no final, não ficamos satisfeitos com o desempenho da rede LSTM: trabalhar com ela levou muito tempo, enquanto os resultados estão longe de serem perfeitos. Portanto, foi decidido usar uma abordagem diferente.

É hora de dizer como determinamos o tom da voz usando o XGBoost mais uma combinação de LSTM e XGB.

Determine o tom de voz para o arquivo inteiro


Marcamos os arquivos como suspeitos se contivessem pelo menos uma frase que violasse as regras. Então, marcamos 2500 arquivos.

Para extrair atributos, usamos o mesmo método e a mesma arquitetura ANN , mas com uma diferença: escalamos a arquitetura para ajustar as novas dimensões dos atributos.

Com parâmetros ideais, a rede neural produziu uma precisão de 85%.


XGBoost


O modelo XGBoost requer um número fixo de atributos para cada arquivo. Para satisfazer esse requisito, criamos vários sinais e parâmetros.



As seguintes estatísticas foram usadas:

  1. O valor médio do sinal.
  2. O valor médio dos primeiros 10 segundos do sinal.
  3. O valor médio dos últimos 3 segundos do sinal.
  4. O valor médio dos máximos locais no sinal.
  5. O valor médio dos máximos locais nos primeiros 10 segundos do sinal.
  6. O valor médio dos máximos locais nos últimos 3 segundos do sinal.

Todos os indicadores foram calculados separadamente para cada sinal. O número total de atributos é 36, com exceção do comprimento do registro. Como resultado, tivemos 37 sinais numéricos para cada registro.

A precisão da previsão desse algoritmo é 0,869.

Combinação de LSTM e XGB


Para combinar os classificadores, cruzamos esses dois modelos. Na saída, isso aumentou a precisão em 2%.


Ou seja, conseguimos aumentar a precisão da previsão para 0,9 ROC - AUC (Area Under Curve).

Resultado


Testamos nossa rede neural profunda em 205 arquivos (177 neutros, 28 suspeitos). A rede teve que processar cada arquivo e decidir a qual grupo pertence. A seguir estão os resultados:

  • 170 arquivos neutros foram identificados corretamente;
  • 7 arquivos neutros foram identificados como suspeitos;
  • 13 arquivos suspeitos foram identificados corretamente;
  • 15 arquivos suspeitos foram identificados como neutros.

Para estimar a porcentagem de resultados corretos / falsos, usamos a Matriz de erro na forma de uma tabela 2x2.

Encontre uma frase específica em uma conversa


Estávamos ansiosos por tentar essa abordagem para reconhecer palavras e frases em arquivos de áudio. O objetivo era encontrar arquivos nos quais o operador do call center não foi apresentado aos clientes nos primeiros 10 segundos da conversa.

Pegamos 200 frases com duração média de 1,5 segundos, nas quais os operadores chamam seu nome e o nome da empresa.

A pesquisa manual desses arquivos demorou muito tempo, porque Eu tive que ouvir cada arquivo para verificar se ele continha as frases necessárias. Para acelerar o treinamento adicional, aumentamos “artificialmente” o conjunto de dados: alteramos cada arquivo 6 vezes aleatoriamente - adicionamos ruído, alteramos a frequência e / ou o volume. Então, temos um conjunto de dados de 1.500 arquivos.

Sumário


Usamos os primeiros 10 segundos da resposta do operador para treinar o classificador, porque foi nesse intervalo que a frase desejada foi pronunciada. Cada uma dessas passagens foi dividida em janelas (comprimento da janela 1,5 s, etapa 1 da janela) e processadas pela rede neural como um arquivo de entrada. Como arquivo de saída, recebemos a probabilidade de pronunciar cada frase na janela selecionada.


Executamos outros 300 arquivos na rede para descobrir se a frase desejada foi falada nos primeiros 10 segundos. Para esses arquivos, a precisão foi de 87%.

Na verdade, para que serve tudo isso?


A avaliação automática de chamadas ajuda a determinar KPIs claros para os operadores de call center, destacar e seguir as práticas recomendadas e aumentar o desempenho do call center. Mas vale a pena notar que o software de reconhecimento de fala pode ser usado para uma ampla gama de tarefas.

Abaixo estão alguns exemplos de como o reconhecimento de fala pode ajudar as organizações:

  • coletar e analisar dados para melhorar o UX de voz;
  • analisar registros de chamadas para identificar relacionamentos e tendências;
  • reconhecer pessoas por voz;
  • Encontre e identifique emoções do cliente para melhorar a satisfação do usuário
  • aumentar a receita média por chamada;
  • reduzir vazão;
  • e muito mais!

Source: https://habr.com/ru/post/pt428598/


All Articles