Reclamações sobre relógios de inteligência artificial


Qualquer organização financeira é um organismo vivo e seus processos são imperfeitos. As imperfeições do processo dão origem à insatisfação do cliente, que pode até se transformar em reclamações. Neste artigo, falaremos sobre nossa contribuição para o processo de automação implementando um pequeno projeto de Machine Learning.

Você pode tentar resolver qualquer tarefa difícil usando métodos simples, e o Machine Learning não é exceção.

O feedback é a informação mais valiosa; portanto, você deve estudar o máximo possível cada parte dela. Analisando reclamações de clientes, vemos objetivamente em quais problemas de processos de negócios surgem. Como os processos geralmente são interconectados, eles podem ser agrupados e considerados como um grupo. Assim, chegamos à tarefa padrão de Aprendizado de Máquina (ML) - "classificação multiclasse". Como resultado dessa análise, a tarefa foi resolvida - a coleção de análises consolidadas para a organização.

A tarefa de classificação é uma tarefa na qual existem muitos objetos divididos em classes de uma certa maneira. No caso da classificação multiclasse, o número de classes deve ser superior a 2 e pode chegar a muitos milhares.

Os dados sobre reclamações e respostas a eles são armazenados no servidor, o processo de descarregamento e pré-processamento é realizado como padrão por meio de uma solicitação ao banco de dados; na saída, obtemos um quadro de dados com os dados com os quais trabalharemos. A denúncia e a resposta são documentos bastante longos. Por exemplo, a resposta a uma reclamação pode chegar a centenas ou até milhares de palavras. Processar esse texto diretamente é muito caro (computacionalmente), e é por isso que o pré-processamento de texto é necessário.

def review_to_wordlist(review):
       		review_text = re.sub('[^--]',' ', review)
       		words = review_text.strip().lower().split()
       		words = [w for w in words if not w in stop_words] 
       		words = [morph.parse(w)[0].normal_form for w in words]
       		new_stop_words = find_names(words)
       		words = [w for w in words if not w in new_stop_words]
       		return words

A precisão de acordo com o modelo depende substancialmente da singularidade do texto; portanto, é necessário remover palavras do texto que não possuem muito significado - "palavras de interrupção". Geralmente, a composição das palavras inclui preposições, conjunções e outras partes insignificantes da fala. Também complementamos o dicionário de palavras de parada com o nome e o nome do meio.

def find_names(words, prob_thresh = 0.4):
    words = [w for w in words if 'str' in str(type(w))]
    add_stop_words = [w for w in words for p in morph.parse(w) if 'Name' in p.tag and
    p.score >= prob_thresh]
    stop_words.update(add_stop_words)
    return stop_words

Antes da implementação do projeto, a classificação era realizada manualmente, portanto, temos dados marcados por especialistas. E esta é uma tarefa clássica de ensino de ML com um professor. O texto pré-processado é reduzido para uma visualização que o modelo pode processar. Para fazer isso, traduzimos as respostas às reclamações em vetores de recursos (a variável independente usada no código é recursos, a variável dependente é rótulos).

tfidf = TfidfVectorizer(sublinear_tf=True, min_df=5, norm='l2', encoding='utf8',  
    ngram_range=(1, 2), stop_words=stop_words)
features = tfidf.fit_transform(df_temp['Consumer_complaint_narrative'])
labels = df_temp['Num_bp']

A Classificação de vetores de suporte linear é selecionada para classificação. Isso foi feito pelos seguintes motivos:

  • alta eficiência ao trabalhar com medições de grande dimensão;
  • trabalho estável em caso de excesso de dimensão sobre o número de amostras.

Este projeto foi preparado para implementação no baile. Todos os dias, o modelo realizará a classificação dos dados inseridos durante o dia útil. No estágio inicial, supõe-se uma verificação manual adicional do trabalho do modelo por um especialista. Uma vez por mês, o modelo será treinado novamente. A implementação deste projeto nos permitiu dar um passo mais perto do futuro!

All Articles