Em Habré, mais de uma ou duas vezes eles escreveram sobre robôs de voz, os princípios de seu trabalho e as tarefas que são capazes de resolver. Conseqüentemente, os princípios gerais de criação de tais robôs (preferimos chamá-los de “agentes digitais) são claros para muitos. E isso é bom, porque neste artigo gostaríamos de falar sobre o aprendizado rápido de robôs.
Conseguimos treinar agentes com sucesso em uma base de chamadas muito limitada. O número mínimo de registros com base nos quais um agente digital completo pode ser desenvolvido é apenas 500. (Alerta de spoiler - estamos falando mais sobre a especialização de um assistente, e não sobre aprender do zero). Como o treinamento ocorre e quais são as armadilhas, recursos, o que está no cerne da tecnologia? Falaremos sobre isso hoje.
O que um agente digital deve ser capaz de fazer?
No momento, os agentes digitais que estamos projetando, que trabalham com o uso do classificador de intent no segmento b2c, podem manter um diálogo completo. Isso se tornou possível devido ao fato de que lhes ensinamos:
- Determine na fala de uma pessoa e classifique várias respostas, perguntas, objeções.
- Selecione uma resposta ou reação que tenha um significado apropriado.
- Identifique os casos em que o assinante não está sintonizado no diálogo e expressa negativas. Determine quando o assinante é criança e / ou idoso e, nesses casos, encerre corretamente a chamada.
- Determine na fala de uma pessoa e registre, se necessário, várias entidades para as quais o assinante liga: nomes, endereços, datas, números de telefone, etc.
- . , , , . .
- «» («», «») , .
- , (, ) . , .
- «background sound» (« »). , , « », , - , .. . — .
Para que serve esse recurso? Para que o agente digital possa assumir as tarefas de trabalhar na linha de entrada do call center e responder às perguntas padrão dos clientes. Em nossa experiência, um agente digital pode processar de forma independente até 90% das solicitações. Ao mesmo tempo, os operadores humanos podem realizar tarefas mais criativas e ajudar com problemas fora do padrão. A IA pode ser instruída a conduzir um diálogo com assinantes de call center, suporte da empresa, etc.
Bem, e o mais importante neste segmento é que os agentes digitais não conseguem vender pior (e em muitos casos até melhor) do que uma operadora ao vivo. Criamos esses agentes digitais avançados, por exemplo, para grandes operadoras de telecomunicações.
Como treinar um robô para conduzir um diálogo
Este é um desafio muito interessante. Agora estamos resolvendo isso de uma maneira completamente diferente de alguns anos atrás. E agora, precisamos de várias centenas de registros para treinar um agente. Mas, é claro, não chegamos a esse ponto - tivemos que trabalhar muito.
Como era antes?
Há vários anos, a extração de intenções e entidades da fala humana e sua classificação era realizada por meio de expressões regulares ( regex ). Para simplificar, é uma linguagem de pesquisa de texto. Para pesquisar, uma string de amostra (também conhecida como padrão) é usada, que define a regra de pesquisa. O regex usa uma sintaxe especial para definir as regras de pesquisa. Mas esse método tinha várias desvantagens:
- A necessidade de um grande e qualificado recurso humano para criar expressões regulares.
- – , , .
- , — .
- , .
- - (NLU).
- ( , , , , ) 3-7 ; .
?
Desenvolvemos um banco de dados básico, um conjunto de dados de milhões de chamadas feitas usando expressões regulares: verificamos e marcamos os dados e criamos um modelo que, de fato, imita o resultado do trabalho do classificador em expressões regulares, mas com melhor qualidade.
No decorrer do uso posterior do modelo em projetos reais, realizamos treinamento adicional por meio de uma interface de marcação especial em nossa plataforma. Assim, os gerentes de conteúdo identificam pistas que não são classificadas com precisão, marcam-nas e “alimentam” o modelo para que possa ser melhorado em seus casos.
Agora o treinamento consiste em duas etapas: treinamento direto do modelo no conjunto de dados e treinamento adicional durante a operação comercial. No momento, a conexão ao motor da NLU e os testes de reconhecimento expresso levam apenas algumas horas.
A qualidade que costumava ser alcançada por semanas de trabalho meticuloso agora é fornecida imediatamente graças à base principal. Por exemplo, no segmento b2c, a% inicial de erros no reconhecimento do consentimento / recusa em realizar uma ação direcionada diminuiu 3 vezes (de 10% para 2-3% do número total de casos).
O treinamento começa com a disponibilização de gravações de conversas entre operadoras e clientes da empresa cliente. Idealmente, um conjunto de dados deve conter pelo menos 500 registros. Além disso, são solicitadas informações adicionais, incluindo datas de vencimento, prioridade, instruções existentes e scripts para funcionários de call center (opcional, mas desejável).
Para resolver isso, usamos um motor NLU especializado . Baseia-se na análise semântica de texto proveniente de sistemas ASR. No decurso do reconhecimento, os principais objetos de reconhecimento são de dois tipos:
Entidades .
Intenções (intenção).
Um ponto importante: não temos um sistema de diálogo clássico em seu sentido tradicional, um sistema de aprendizado de máquina não compõe uma resposta dinamicamente, a resposta é determinada pelos designers de script. As frases do bot são estritamente predeterminadas, não há livre arbítrio para inteligência artificial, felizmente ou infelizmente ...
A lógica da conversa também é predeterminada - na verdade, o classificador Intent é usado para determinar o que o assinante nos disse e para qual propósito. Tendo determinado o Intent, seremos capazes de selecionar a frase de bot apropriada, que é necessária para responder ao assinante - na verdade, para conduzir um diálogo completo.
Exemplo de diálogo
Abaixo está um script de RH complexo com as intenções de designação e entidades; entidades e intenções reconhecidas são indicadas em cada réplica do assinante e estão em itálico.
Bot: Olá! Meu nome é Elena, estou ligando para falar do seu currículo. Diga-me, a oferta de vaga é relevante para você?
Assinante: Sim, olá
Intent: hello_confirm = true
Bot:Olha, agora temos uma vaga para especialista em escritório de vendas. As responsabilidades incluem consultar assinantes, vender equipamentos e trabalhar com a caixa registradora. O registro é totalmente oficial, o salário é branco, a renda média é de N rublos, o nível máximo é praticamente ilimitado, há uma oportunidade de crescimento na carreira. Agendar 5 dias úteis com dois dias flutuantes de folga. Também oferecemos todas as garantias sociais, VMS, bônus e descontos da empresa.
Considere essas condições por si mesmo?
Assinante: E novamente, de onde você está ligando?
Intenção: question = what_company
Bot: Esta é uma rede de varejo NNN
Assinante: Qual é a sua programação?
Intent: question = schedule
Bot:O horário de trabalho é formado pelo programa de forma automática, levando em consideração o fluxo de clientes e a carga horária no escritório com dois dias de folga flutuante, ou seja, o turno dos trabalhadores 6 8 10 12 horas por dia não pode ser superior a 40 horas uma semana. Nesse caso, a programação é feita com antecedência de 2 semanas, ou seja, você conhece com antecedência sua programação, seu final de semana e já pode planejar.
Assinante: Bem,
intenção: confirmação = verdadeiro
Bot: Deixe-nos então verificar seus dados pessoais com você ...
Por favor, me diga seu sobrenome Nome completo
Assinante patronímico : Elena Gudkova
Entidade: name = true
Bot: Por favor, nomeie sua data de nascimento
Assinante:décimo terceiro zero segundo oitenta e sétimo
Entidades:
dia = [13]
mês == [fevereiro]
ano == [1987]
Bot: Diga-me, posso anotar o número para o qual estou ligando para você?
Assinante: Não, provavelmente
Intenção: confirmação = falso
Bot: Diga-me então o número pelo qual posso contatá-lo?
Assinante: novecentos dez oitocentos e oitenta e cinquenta vinte e cinco
Entidade: telefone = verdadeiro
Bot: Diga-me, qual é a sua formação?
Assinante:
Entidade superior : educação = Bot superior
:Esclareça: atualmente você está estudando em tempo integral?
Assinante: Sem
intenção: confirmação = falso
Bot: Diga-me, você tem cidadania russa?
Assinante: cidadania russa
Entidade: cidadania = russia
Bot: Ok, essa foi a última pergunta. Obrigado por responder minhas perguntas, agora enviarei o questionário ao gerente para apreciação. Os questionários são analisados em até 3 dias e, em caso de decisão positiva, nossos funcionários entrarão em contato com você. Adeus.
Ok, o script está desenvolvido, e daí?
Depois de tudo isso, os roteiros desenvolvidos são acordados com o cliente. Em alguns casos, os clientes desejam adicionar ou alterar algo, o que nós fazemos. Às vezes torna-se necessário esclarecer os parâmetros técnicos:
- Método de integração.
- Parâmetros de entrada / saída.
- Conexão de tronco SIP (se for planejada para usar a telefonia do cliente).
- Conexão de SMS ou conexão com sistemas de clientes de terceiros (CRM, gerenciamento de campanha).
Quais são os parâmetros de entrada e saída? Essas são várias variáveis que nosso agente digital precisa para iniciar uma chamada. Em primeiro lugar, é claro que esse é o número de telefone ou id do assinante para o qual estamos ligando. Opcionalmente, dependendo do cliente e projeto específicos, podem ser outros dados, por exemplo:
- vários componentes e custos de serviços e serviços que o assistente deve anunciar a diferentes assinantes, dependendo de condições específicas;
- nomes de pacotes de serviços ou serviços que o assistente liga para assinantes diferentes;
- nomes diferentes pelos quais o assistente pode se dirigir aos chamadores ao saudar;
- Informações adicionais.
Ou seja, para que o assistente, dependendo de certas condições, execute esta ou aquela ação durante a chamada ou após ela, é necessário transmitir a ele essas condições, que são chamadas de "parâmetros de entrada".
Bem, os parâmetros de saída são um conjunto de dados que o assistente deve nos devolver após fazer uma chamada.
Por exemplo: o número de telefone do assinante, a duração da chamada, o nome do projeto no qual a chamada foi feita, os resultados da chamada, etc. A saída também contém o resultado principal da chamada, que depende dos resultados do diálogo em um projeto específico (o exemplo mais simples é o resultado "Consentimento" se o assinante concordou em realizar a ação alvo ou o resultado "Recusa" se o assinante recusado). E por último são os dados técnicos sobre o estado da chamada e vários códigos de possíveis erros (a chamada foi feita, a chamada não foi realizada devido a problemas de telefonia, a chamada não foi realizada devido a dados de entrada incorretos, etc. )
Esses dados podem simplesmente cair na saída dos dados de entrada (por exemplo, nos dados de entrada passamos o número do assinante para o assistente e nos dados de saída após a chamada, o assistente nos deu o mesmo número de telefone).
Além disso, o robô pode “coletar” esses dados do assinante com base no resultado da chamada: por exemplo, anote os nomes, endereços, números de telefone, etc. nomeados pelos assinantes e registre-os nos dados de saída. Com base neles, relatórios e análises são gerados.
Bem, então chega a vez de etapas como pontuação de script, desenvolvimento de lógica, desenvolvimento de padrões, verificação de software e, por fim, transferência do projeto para o cliente.
Isso, na verdade, é tudo. Claro, o próprio processo de criação de um agente digital é um pouco mais complicado do que o descrito acima - apenas no âmbito do artigo não será possível indicar absolutamente todas as nuances. Agora pretendemos dar continuidade a este artigo fazendo já a segunda parte sobre os aspectos técnicos da formação e da “cozinha” interna da empresa. Se você quiser saber algo que não está no artigo agora - pergunte e com certeza responderemos.