Mejora de la calidad de la clasificación de texto conectando Wikipedia

Utilizamos una gran fuente estructurada de textos multilingües: Wikipedia para mejorar la clasificación de los textos. El enfoque es bueno con un alto grado de automatismo e independencia del cual se está resolviendo un problema de clasificación particular. Sin embargo, se espera el mayor efecto en las tareas de determinar el tema.

La idea principal es extraer de Wikipedia solo aquellos textos que nos ayudan a resolver nuestro problema de clasificación, ignorando otros. Si clasificamos textos sobre gatos, es poco probable que necesitemos textos sobre física cuántica, aunque los textos sobre otros tipos de animales pueden ser útiles. La separación automática de dichos textos entre sí es la esencia del enfoque descrito.

Wikipedia, como saben, es una colección de artículos sobre muchas áreas de conocimiento e intereses. Al mismo tiempo, una parte importante de los artículos tiene enlaces a artículos de un tema similar, pero en otros idiomas. Estas no son traducciones, es decir, artículos de un tema general. Además, la mayoría de los artículos se dividen en una o más categorías. Las categorías, a su vez, están en su mayor parte organizadas en forma de árbol jerárquico. Es decir, se puede resolver la tarea de agrupar artículos de Wikipedia sobre temas de interés para nosotros.

Utilizamos el recurso DBPedia, una versión pre-cableada y estructurada de Wikipedia. DBPedia nos brinda toda la información necesaria: los nombres de los artículos, sus anotaciones, las categorías de los artículos y las categorías superiores para las categorías. Comenzamos con el idioma más representado en Wikipedia: inglés. Si su tarea no tiene o tiene pocos textos en inglés, use el idioma para el que hay muchos documentos.

Paso 1. Agrupar Wikipedia


Centrarse en las categorías de artículos. Por ahora, ignora su contenido. Las categorías forman un gráfico, principalmente en forma de árbol, pero también hay ciclos. Los artículos son los puntos finales del gráfico (hojas) conectados a uno o más nodos del gráfico. Utilizamos la herramienta Node2Vec para obtener una representación vectorial de cada categoría y cada artículo. Los artículos de temas similares se agrupan en el espacio vectorial.

Nos agrupamos por cualquier método conveniente del artículo en un número bastante grande (cientos) de grupos.

Paso 2. Entrenamiento del clasificador en Wikipedia


Reemplazamos los nombres de los artículos en los grupos resultantes con sus anotaciones (Resumen largo y Resumen corto, aproximadamente un párrafo de texto por artículo). Ahora tenemos cientos de grupos definidos como conjuntos de textos. Utilizamos un modelo conveniente y construimos un clasificador que resuelve el problema de la clasificación multiclase: un clúster - una clase. Utilizamos FastText.
En la salida, obtenemos un modelo que toma texto como entrada, y en la salida proporciona un vector de estimaciones del grado en que el texto pertenece a nuestros cientos de grupos de clases.

Si el primer paso es agrupar los artículos de Wikipedia no por sus categorías, sino por su contenido, entonces, en primer lugar, perderemos información por categorías, pero es importante, y en segundo lugar, obtendremos un sistema degenerado, que, por textos, se agrupa y construye modelo clasificador. La calidad final probablemente será peor que con un enfoque separado. Aunque no lo comprobé.

Paso 3. Construyendo un modelo por tu cuenta, combate, datos


Utilizamos una selección de nuestros datos de combate y presentamos cada documento a la entrada del modelo del paso 2. El modelo devuelve un vector de estimaciones. Usamos este vector como un vector de características para el documento en cuestión. Como resultado, después de procesar toda nuestra muestra de entrenamiento de documentos de combate, obtenemos una tabla en forma estándar para el aprendizaje automático: una etiqueta de clase, un conjunto de signos numéricos. Llamamos a esta mesa un conjunto de entrenamiento.

Construimos sobre la muestra de entrenamiento un clasificador que puede evaluar el contenido de información de los atributos individuales. Los árboles de decisión y cualquier variación forestal aleatoria de los mismos son muy adecuados. Los signos más informativos son aquellos grupos de artículos de Wikipedia que no solo tienen temas similares con los temas de nuestros documentos de combate, sino que, lo más importante, los temas de estos artículos nos permiten separar bien nuestras clases de lucha. En las primeras iteraciones, el histograma de la informatividad de los signos suele ser bastante plano: varios grupos informativos y una larga cola son casi iguales en términos de informatividad a los cientos de signos restantes.

Después de estudiar el histograma del contenido de información de los personajes, se determinó empíricamente un punto de inflexión cada vez, y aproximadamente del 10 al 30% de los grupos pasaron a la siguiente iteración. La esencia de la iteración es que los artículos de los grupos informativos seleccionados se combinaron, se enviaron a los pasos 1 a 3, donde se agruparon nuevamente, se construyeron dos clasificadores nuevamente y todo terminó con un análisis del histograma del contenido de la información. Tomará 3-4 iteraciones.

Resultó que en nuestros datos los signos digitales, especialmente los números de los años, tienen un peso muy fuerte y arrastran la información de todo el clúster sobre sí mismos. Como resultado lógico, los grupos dedicados a eventos deportivos anuales se convirtieron en los más informativos: una gran cantidad de números y fechas, vocabulario limitado. Tuve que eliminar todos los números en los textos de las anotaciones del artículo (en el segundo paso). Se hizo notablemente mejor, grupos de artículos que realmente tenían un tema específico comenzaron a destacarse (como lo imaginamos). Al mismo tiempo, aparecieron grupos inesperados que lógicamente cayeron en nuestra misión de combate, tenían el vocabulario correcto, pero era muy difícil adivinar a priori la utilidad de tales grupos.

Paso 4. Finaliza el modelo


Después de varias iteraciones de los pasos 1-3, tenemos un número razonable de artículos seleccionados de Wikipedia, cuyos temas ayudan a compartir nuestros documentos de combate. Estamos ampliando la selección con artículos similares en otros idiomas de interés para nosotros y construyendo grupos finales, esta vez decenas. Estos grupos se pueden usar de dos maneras: construya un clasificador similar al paso 2 y úselo para expandir el vector de características digitales en su misión de combate, o use estos conjuntos de textos como fuente de vocabulario adicional e intégrelos en su clasificador de combate. Usamos la segunda forma.

Nuestro clasificador de combate es un conjunto de dos modelos: bayes ingenuos truncados y xgboost. Naive Bayes trabaja en gramos largos, estos son gramos con longitudes de 1 a 16 elementos, y cada gramo encontrado inclina el total a una de las clases, pero Bayes no toma una decisión final: solo da la suma de los pesos de gramo relacionados con cada uno. de las clases Xgboost acepta la salida de bayes, otros clasificadores y algunos atributos digitales que se construyen independientemente del texto, y xgboost ya ofrece el modelo final y la evaluación final. Este enfoque facilita la conexión de cualquier conjunto de textos al modelo de gram bayes, incluidos los conjuntos resultantes de artículos de Wikipedia, y xgboost ya está buscando patrones en forma de reacciones típicas de grupos de wikipedia a textos de batalla.

Resultados y conclusiones


El primer resultado dio un aumento de la precisión condicional del 60% al 62%. Al reemplazar las anotaciones de los artículos de Wikipedia en el paso 4 con los artículos desinflados, la precisión aumentó al 66%. El resultado es natural, porque el tamaño de la anotación es de dos o tres frases, y el tamaño del artículo es mucho mayor. Más material lingüístico - mayor efecto.

Deberíamos esperar que después de haber completado todo el procedimiento en los textos de los artículos, en lugar de las anotaciones, el aumento de la calidad sea aún mayor, pero ya existe un problema de número técnico: descargar y procesar toda la Wikipedia, o su parte notable (si no comienza desde la primera iteración) es difícil. Además, si inicialmente usa no solo inglés, sino todos los idiomas de interés, aún puede ganar algo más. En este caso, el crecimiento en los volúmenes procesados ​​es múltiple, y no por órdenes de magnitud, como en el primer caso.

Vector de documento semántico


Para cada documento, se construye un vector de la relación del documento con los temas dados según las categorías de Wikipedia. El vector se calcula por el método descrito en el paso 3 o por nuestros gram bayes. En consecuencia, los documentos de combate se pueden agrupar de acuerdo con estos vectores y obtener una agrupación de documentos de combate por tema. Solo queda dejar los hashtags y cada nuevo documento ya puede caer en la base de datos con etiquetas. Que luego los usuarios pueden buscar. Este es el caso si coloca etiquetas de forma explícita y visible para el usuario. Parece de moda, aunque no soy partidario.

Búsqueda adaptativa


Un método más interesante de usar vectores de documentos semánticos es la búsqueda adaptativa. Observando la actividad del usuario, en qué documentos se demora y en cuáles ni siquiera lee, puede delinear el área de interés del usuario a largo plazo (después de todo, los usuarios también tienen una división de responsabilidades y todos buscan principalmente la suya) y en el marco de la sesión de búsqueda actual.

Los documentos con temas similares tienen vectores semánticos similares con una medida de coseno alto, y esto le permite evaluar documentos en los resultados de búsqueda sobre la marcha de acuerdo con el grado de cumplimiento esperado con los intereses del usuario, como resultado de lo cual puede aumentar los documentos necesarios en los resultados de búsqueda.

Como resultado, incluso con consultas de búsqueda idénticas para cada usuario, los resultados de búsqueda se pueden personalizar para él y, dependiendo de cuál de los documentos en el paso anterior le interesó, el siguiente paso de búsqueda se ajustará a las necesidades del usuario, incluso si la consulta de búsqueda en sí no ha cambiado.

Ahora estamos trabajando en el problema de la búsqueda adaptativa.

Prueba de hipótesis de negocios


Los negocios periódicamente vienen con ideas brillantes que son muy difíciles de implementar. Debemos aprender a encontrar documentos por su descripción, sin tener una muestra marcada para capacitación o la capacidad de enviar a los evaluadores algún conjunto de documentos para marcar. Esto suele suceder cuando los documentos de destino rara vez se encuentran con respecto al flujo general de documentos y, como resultado, al enviar un conjunto de 10 mil documentos a los evaluadores sin un filtrado preliminar, puede obtener 1-2 resultados necesarios o incluso menos resultados.

Nuestro enfoque es crear un proceso de aprendizaje iterativo basado en vectores semánticos. En el primer paso, encontramos varios textos que establecen nuestro tema objetivo: estos pueden ser artículos de Wikipedia o textos de otras fuentes. Para cada texto, se produce su vector semántico. Si el tema objetivo es complejo, el álgebra de conjuntos funciona: unificación, intersección, exclusión de algunos temas de otros. Por ejemplo, hay artículos de Wikipedia sobre "Investigación y desarrollo" y sobre "Cosméticos", la intersección de los conjuntos dará "I + D sobre cosméticos".

Todos los documentos en la base de datos se pueden ordenar por el grado de cumplimiento con los temas dados, luego el álgebra de conjuntos funciona en los documentos mismos de la siguiente manera: el documento se considera relevante para el tema si su vector semántico está más cerca del vector de artículos de Wikipedia de un tema determinado que el promedio de la base de datos. Intersección: si al mismo tiempo el vector semántico del documento está más cerca de ambos temas que el promedio de la base de datos. Otras operaciones son similares.

Encontramos un conjunto de cientos o dos documentos que tienen la proximidad más cercana a todos los temas positivos y, al mismo tiempo, la cercanía más cercana a todos los temas negativos (si no estamos interesados ​​en problemas financieros en la investigación que estamos buscando, estableceremos el artículo de la categoría "Finanzas" como un ejemplo negativo) ) Daremos estos documentos a los evaluadores, encontrarán varios ejemplos positivos en ellos, en base a estos ejemplos buscaremos otros documentos con vectores semánticos cercanos, los marcaremos y en la salida obtendremos suficientes documentos para que la clase positiva construya cualquier clasificador conveniente. Puede tomar varias iteraciones.

Resumen


El enfoque descrito permite automáticamente, sin análisis manual, seleccionar de Wikipedia u otro conjunto fuente de textos que ayuden a resolver el problema de clasificación. Simplemente conectando los clústeres de Wikipedia a un clasificador en funcionamiento, uno puede esperar un aumento significativo en la calidad, sin requerir la adaptación del clasificador en sí.

Bueno, la búsqueda adaptativa es interesante.

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


All Articles