Melhorando a qualidade da classificação de texto conectando a Wikipedia

Utilizamos uma grande fonte estruturada de textos multilíngues - a Wikipedia para melhorar a classificação dos textos. A abordagem é boa com um alto grau de automatismo e independência a partir do qual um problema específico de classificação está sendo resolvido. O maior efeito, no entanto, é esperado nas tarefas de determinação do tópico.

A idéia principal é extrair da Wikipedia apenas os textos que nos ajudam a resolver nosso problema de classificação, ignorando outros. Se classificarmos textos sobre gatos, é improvável que precisemos de textos sobre física quântica, embora textos sobre outros tipos de animais possam ser úteis. A separação automática de tais textos um do outro é a essência da abordagem descrita.

A Wikipedia, como você sabe, é uma coleção de artigos sobre muitas áreas de conhecimento e interesses. Ao mesmo tempo, uma parte significativa dos artigos tem links para artigos de um assunto semelhante, mas em outros idiomas. Estas não são traduções, ou seja, artigos de um assunto geral. Além disso, a maioria dos artigos se enquadra em uma ou mais categorias. As categorias, por sua vez, são geralmente organizadas na forma de uma árvore hierárquica. Ou seja, a tarefa de agrupar artigos da Wikipedia sobre tópicos de nosso interesse pode ser resolvida.

Utilizamos o recurso DBPedia - uma versão pré-cabeada e estruturada da Wikipedia. O DBPedia nos fornece todas as informações necessárias - os nomes dos artigos, suas anotações, as categorias dos artigos e as categorias superiores para as categorias. Começamos com o idioma mais representado na Wikipedia - inglês. Se sua tarefa não possui, ou poucos, textos em inglês, use o idioma para o qual existem muitos documentos.

Etapa 1. Clustering Wikipedia


Concentre-se nas categorias de artigos. Por enquanto, ignore o conteúdo deles. As categorias formam um gráfico, principalmente do tipo árvore, mas também existem ciclos. Os artigos são os pontos finais do gráfico (folhas) conectados a um ou mais nós do gráfico. Usamos a ferramenta Node2Vec para obter uma representação vetorial de cada categoria e cada artigo. Artigos de assuntos semelhantes são agrupados no espaço vetorial.

Por qualquer método conveniente do artigo, agrupamos em um número bastante grande (centenas) de clusters.

Etapa 2. Treinamento de classificador na Wikipedia


Substituímos os nomes dos artigos nos clusters resultantes pelas anotações (Resumo longo e Resumo resumido - aproximadamente um parágrafo de texto por artigo). Agora, temos centenas de clusters definidos como conjuntos de textos. Utilizamos um modelo conveniente e construímos um classificador que resolve o problema da classificação em várias classes: um cluster - uma classe. Usamos o FastText.
Na saída, obtemos um modelo que recebe o texto como entrada e, na saída, fornece um vetor de estimativas do grau em que o texto pertence às nossas centenas de clusters de classes.

Se o primeiro passo é agrupar artigos da Wikipedia não por suas categorias, mas por seu conteúdo, primeiro perderemos informações por categorias, mas é importante e, em segundo lugar, obteremos um sistema degenerado - que, por textos, é agrupado e constrói modelo classificador. A qualidade final provavelmente será pior do que com uma abordagem separada. Embora eu não verifiquei.

Etapa 3. Criando um modelo por conta própria, combate, dados


Utilizamos uma seleção de nossos dados de combate e submetemos cada documento à entrada do modelo na etapa 2. O modelo retorna um vetor de estimativas. Usamos esse vetor como um vetor de recurso para o documento em questão. Como resultado, tendo processado toda a nossa amostra de treinamento de documentos de combate, obtemos uma tabela no formulário padrão para aprendizado de máquina - um rótulo de classe, um conjunto de sinais numéricos. Chamamos essa tabela de um conjunto de treinamento.

Construímos na amostra de treinamento um classificador que pode avaliar o conteúdo de informações de atributos individuais. As árvores de decisão e quaisquer variações aleatórias da floresta são adequadas. Os sinais mais informativos são aqueles grupos de artigos da Wikipedia que não apenas têm temas semelhantes aos de nossos documentos de combate, mas, o mais importante, os tópicos desses artigos nos permitem separar bem nossas classes de luta. Nas primeiras iterações, o histograma da informatividade dos sinais geralmente é bastante plano - vários agrupamentos informativos e uma cauda longa são quase iguais em termos de informatividade às centenas restantes de sinais.

Depois de estudar o histograma do conteúdo informativo dos caracteres, um ponto de inflexão foi determinado empiricamente a cada vez e aproximadamente 10 a 30% dos clusters foram para a próxima iteração. A essência da iteração é que os artigos dos clusters informativos selecionados foram combinados, submetidos às etapas 1 a 3, onde foram agrupados novamente, dois classificadores foram construídos novamente e tudo terminou com uma análise do histograma do conteúdo das informações. São necessárias 3-4 iterações.

Descobriu-se que, em nossos dados, os sinais digitais, especialmente os números dos anos, têm um peso muito forte e arrastam para si a informação de todo o cluster. Como resultado lógico, os grupos dedicados a eventos esportivos anuais se tornaram os mais informativos - uma massa de números e datas, vocabulário restrito. Eu tive que remover todos os números nos textos das anotações do artigo (na segunda etapa). Tornou-se visivelmente melhor, grupos de artigos realmente com um assunto específico começaram a se destacar (como imaginávamos). Ao mesmo tempo, apareceram grupos inesperados que logicamente caíram em nossa missão de combate, tinham o vocabulário certo, mas era muito difícil adivinhar, a priori, a utilidade de tais grupos.

Etapa 4. Finalize o modelo


Após várias iterações das etapas 1 a 3, temos um número razoável de artigos selecionados da Wikipedia, cujos tópicos ajudam a compartilhar nossos documentos de combate. Estamos expandindo a seleção com artigos semelhantes em outros idiomas de nosso interesse e criando agrupamentos finais, desta vez dezenas. Esses clusters podem ser usados ​​de duas maneiras - crie um classificador semelhante à etapa 2 e use-o para expandir o vetor de recursos digitais em sua missão de combate ou use esses conjuntos de textos como fonte de vocabulário adicional e os integre ao seu classificador de combate. Usamos o segundo caminho.

Nosso classificador de combate é um conjunto de dois modelos - bayes ingênuos truncados e xgboost. Naive Bayes trabalha em gramas longos, gramas com comprimentos de 1 a 16 elementos, e cada grama encontrada inclina o total para uma das classes, mas Bayes não toma uma decisão final - apenas fornece a soma dos pesos gramados de cada uma das aulas. O Xgboost aceita a saída de bayes, outros classificadores e alguns atributos digitais que são construídos independentemente do texto, e o xgboost já fornece o modelo final e a avaliação final. Essa abordagem facilita a conexão de qualquer conjunto de textos ao modelo de gram bayes, incluindo os conjuntos resultantes de artigos da Wikipedia, e o xgboost já está procurando padrões na forma de reações típicas de clusters da wikipedia para combater textos.

Resultados e Conclusões


O primeiro resultado deu um aumento da precisão condicional de 60% para 62%. Ao substituir as anotações dos artigos da Wikipedia na etapa 4 pelos artigos desinflados, a precisão aumentou para 66%. O resultado é natural, porque o tamanho da anotação é de duas ou três frases e o tamanho do artigo é de magnitude maior. Mais material linguístico - efeito mais alto.

Devemos esperar que, após a conclusão de todo o procedimento nos textos dos artigos, em vez das anotações, o aumento da qualidade seja ainda maior, mas já existe um problema técnico de número - é difícil desenvolver e processar toda a Wikipedia ou sua parte visível (se você não começar na primeira iteração). Além disso, se você usar inicialmente não apenas o inglês, mas todos os idiomas de interesse, ainda poderá ganhar outra coisa. Nesse caso, o crescimento nos volumes processados ​​é múltiplo, e não em ordens de magnitude, como no primeiro caso.

Vetor de documento semântico


Para cada documento, é construído um vetor da relação do documento com os tópicos fornecidos, com base nas categorias da Wikipedia. O vetor é calculado pelo método descrito na etapa 3 ou por nossos gram bayes. Dessa forma, os documentos de combate podem ser agrupados de acordo com esses vetores e obter um agrupamento de documentos de combate por assunto. Resta apenas colocar as hashtags e cada novo documento já pode cair no banco de dados com tags. Que então os usuários podem pesquisar. Este é o caso se você afixar tags de maneira explícita e visível ao usuário. Parece elegante, embora eu não seja um defensor.

Pesquisa adaptativa


Um método mais interessante de usar vetores de documentos semânticos é a pesquisa adaptativa. Observando a atividade do usuário, em quais documentos ele permanece e quais ele nem lê, é possível delinear a área de interesse do usuário no sentido de longo prazo (afinal, os usuários também têm uma divisão de responsabilidades e todos estão principalmente procurando por si) e dentro da estrutura da sessão de pesquisa atual.

Documentos com tópicos semelhantes têm vetores semânticos semelhantes com uma medida de cosseno alto, e isso permite avaliar documentos nos resultados da pesquisa em tempo real, de acordo com o grau de conformidade esperada com os interesses do usuário, resultando no aumento dos documentos necessários nos resultados da pesquisa.

Como resultado, mesmo com consultas de pesquisa idênticas para cada usuário, os resultados da pesquisa podem ser personalizados para ele e, dependendo de quais documentos da etapa anterior o usuário estava interessado, a próxima etapa da pesquisa será ajustada às necessidades do usuário, mesmo que a consulta de pesquisa em si não tenha sido alterada.

Agora estamos trabalhando no problema da pesquisa adaptativa.

Teste de Hipóteses de Negócios


Os negócios vêm periodicamente com idéias brilhantes que são muito difíceis de implementar. Devemos aprender a encontrar documentos por sua descrição, sem ter uma amostra marcada para treinamento ou a capacidade de enviar aos avaliadores algum conjunto de documentos para marcação. Isso geralmente acontece quando os documentos de destino raramente são encontrados com relação ao fluxo geral de documentos e, como resultado, enviando um conjunto de 10 mil documentos aos avaliadores sem filtragem preliminar, você pode obter 1-2 ou menos resultados necessários.

Nossa abordagem é criar um processo de aprendizado iterativo baseado em vetores semânticos. Na primeira etapa, encontramos vários textos que definem nosso tópico de destino - podem ser artigos da Wikipedia ou textos de outras fontes. Para cada texto, seu vetor semântico é produzido. Se o tópico de destino é complexo, a álgebra de conjuntos funciona - unificação, interseção, exclusão de alguns tópicos de outros. Por exemplo - existem artigos da Wikipedia sobre "Pesquisa e Desenvolvimento" e "Cosméticos", a interseção de conjuntos dará "P&D sobre cosméticos".

Todos os documentos no banco de dados podem ser classificados pelo grau de conformidade com os tópicos fornecidos, então a álgebra de conjuntos funciona nos próprios documentos da seguinte maneira - o documento é considerado relevante para o tópico se seu vetor semântico estiver mais próximo do vetor de artigos da Wikipedia de um determinado tópico do que a média do banco de dados. Interseção - se ao mesmo tempo o vetor semântico do documento estiver mais próximo dos dois tópicos do que a média do banco de dados. Outras operações são semelhantes.

Encontramos um conjunto de centenas ou dois documentos que têm a maior proximidade de todos os tópicos positivos e, ao mesmo tempo, a maior proximidade de todos os tópicos negativos (se não estivermos interessados ​​em questões financeiras na pesquisa que estamos procurando, definiremos o artigo da categoria "Finanças" como um exemplo negativo) ) Daremos esses documentos aos avaliadores, eles encontrarão vários exemplos positivos neles, com base nesses exemplos, procuraremos outros documentos com vetores semânticos próximos, marcá-los e, na saída, obteremos documentos suficientes para que a classe positiva construa qualquer classificador conveniente. Pode levar várias iterações.

Sumário


A abordagem descrita permite selecionar automaticamente, sem análise manual, da Wikipedia ou de outro conjunto de fontes de textos que ajudem a resolver o problema de classificação. Simplesmente conectando os clusters da Wikipedia a um classificador funcional, pode-se esperar um aumento significativo na qualidade, sem a necessidade de adaptação do próprio classificador.

Bem, a pesquisa adaptativa é interessante.

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


All Articles