Tarea: extraer expresiones clave del texto en ruso. Python NLP

Lo que se necesitaba al principio:

  • un programa que "pesca" nombres únicos de productos en una industria específica a partir de un texto sin formato en ruso. Texto sin formato: un texto que una persona escribió, simplemente expresando sus pensamientos y sin preocuparse por la formación o selección de una lista de palabras;
  • lista de palabras obtenida automáticamente;
  • procesamiento manual o automático mínimo para convertir la lista en un conjunto de hashtags o palabras clave para el texto.

Creo que muchas personas enfrentan el problema implícitamente todos los días, después de escribir o analizar un artículo, publicación, comentario, nota, informe, etc. Entonces, por mi ocupación, tuve que lidiar con este problema muchas veces al día. Por lo tanto, se puede decir que "pereza", en el buen sentido de la palabra, me llevó a la idea de la automatización.

Ahora, cuando estoy escribiendo este artículo, la idea se ha conservado, pero el conjunto de datos del resultado final ha cambiado mucho:

  • no se seleccionan palabras, sino frases clave, incluidas las palabras;
  • la lista de expresiones clave está marcada con 16 marcadores diferentes;
  • todas las palabras del texto (incluidas las que no son clave) están lematizadas: se dan en la forma inicial o están unificadas en el formato mostrado;
  • Cada palabra en el texto tiene análisis adicionales relacionados con la posición en el texto y el número de repeticiones.

Los resultados del software Nrlpk ( procesamiento natural del idioma ruso por las claves) preparan datos para:

  • análisis de textos de una gama ilimitada de temas e industrias (el desarrollo y las pruebas se realizaron sobre la base de materiales complejos industriales y militares-industriales: el Complejo Industrial Militar);
  • rubricación automática, clasificación, catalogación, materialización de materiales (sitios en línea);
  • monitoreo y filtrado por contenido con configuraciones de respuesta del sistema (servicios y sistemas de seguridad en bucles cerrados o en línea);
  • marcado multicapa de textos (AI).

Calidad


Para no extraer todo el artículo, aquellos que creen solo en los números, y no en las palabras, y aquellos que esperan calidad absoluta y no aceptan el otro ...

La calidad de la muestra está en el rango de 95 a 100% cuando se prueba en artículos que no exceden las 3.500 palabras. La dispersión está relacionada con la calidad y la complejidad de la presentación. Aquí hay un ejemplo de uno de los artículos que participaron en las pruebas, y aquí está el resultado de su análisis automático .

Es necesario eliminar aproximadamente 7-10% del intervalo de calidad obtenido, es decir El nivel real de calidad probablemente será 85-93%. Esto se debe al hecho de que:

  • durante el proceso de prueba, los requisitos para los datos seleccionados cambian, lo que no noté antes y creo que no lo noto todo ahora;
  • Al conciliar manualmente, existe mi opinión subjetiva de que lo que se puede reconocer exactamente como una clave en un artículo y lo que no lo es, y lo más probable es que no coincida la clave con la opinión de los autores de los artículos.

Puede encontrar una lista completa de los artículos que se probaron y estadísticas detalladas de los resultados en GitHub .

Lo que afectó específicamente a la calidad del resultado en cada artículo se puede encontrar en el archivo Razones en GitHub .

Como leer los resultados


En cada carpeta para un artículo específico que se analiza, hay 5 archivos con un conjunto de datos en Unicode:

  1. words.csv: una lista de palabras relevantes, incluida una lista de palabras no identificadas;
  2. keys.csv: una lista de palabras clave, ahora contiene, además de expresiones marcadas, también palabras que se repiten en el texto al menos un número específico de veces, en este caso, al menos 4 veces;
  3. garbage.csv: lista de palabras no identificadas;
  4. descr_words.csv - descripción (estadísticas) a la lista de todas las palabras del texto;
  5. descr_keys.csv: descripción (estadísticas) de la lista de palabras clave;

Y reason_quality.txt es una lista (opcional) de expresiones del artículo que se seleccionaron manualmente y omitieron las claves, o se obtuvieron incorrectamente (según el autor nrlpk).

Puede aprender a leer estos archivos del archivo Legend en GitHub .

nrlpk le permite obtener cualquier conjunto de datos en uno de los siguientes formatos:

  • Pandas Dataframe (predeterminado);
  • Diccionario Python;
  • JSON
  • Archivo CSV.

Metodología de prueba


  1. Análisis de texto de software (automático).
  2. Identificación manual (a simple vista), manual (marcado) de expresiones clave y conciliación de la lista recibida de expresiones clave, con la lista recibida automáticamente.
  3. Cálculo del porcentaje de calidad : el número de expresiones perdidas o mal escritas incorrectamente + el número de palabras en la basura, al número total de palabras en el texto.

Las herramientas


nrlpk está escrito en Python 3.7.0. Ya en el proceso de desarrollo del futuro software nrlpk, aparecieron dos requisitos obligatorios:

  • elija expresiones, no palabras, incluidas las palabras;
  • La presencia de un diccionario de términos especializados de la industria.

Estos requisitos han cuestionado el uso de NLTK y pymorphy2, lo que podría resolver algunos de los desafíos.

Para eliminar dudas, se realizó una selección manual de una selección de textos de los medios tomados del mayor agregador de noticias en idioma ruso sobre el tema del complejo militar-industrial: VPK.Name . El análisis de etiquetado reveló:

  • toda una capa de datos que no deberían estar sujetos a la tokenización y lematización palabra por palabra;
  • La imposibilidad en muchos casos de tokenización según las oraciones a una transformación seria del texto para corregir imprecisiones gramaticales que los autores permiten en más del 80% de los artículos. Estas inexactitudes de ninguna manera afectan la percepción del texto por parte de una persona, sino que afectan significativamente la percepción e interpretación de dicho texto por parte de la máquina.

Además, ya en esta etapa, se hizo evidente la necesidad de recopilar y almacenar una variedad de información estadística sobre los objetos que se procesan.

Dados estos factores, se eligió a Pandas como el paquete básico para trabajar con datos, lo que, además de las tareas descritas anteriormente, permitió llevar a cabo la lematización por lotes.

Después de analizar los diccionarios disponibles del idioma ruso, se tomó como base OpenCorpora , que , por cierto, también se usa en pymorphy2.
Se transformó en una forma conveniente para trabajar con Pandas, después de lo cual se seleccionaron los siguientes diccionarios:

  • grande: toda la base de palabras;
  • malas palabras: palabras que se excluyen del análisis del texto debido a la falta de importancia;
  • especial: un diccionario de palabras especializadas (industria). Los nombres propios no están incluidos en el diccionario: nombres, nombres, apellidos, direcciones, productos, productos, empresas, personas, etc. Esta es una decisión fundamental e informada, ya que en cualquier industria / dirección viva, tal enfoque requeriría un monitoreo constante y la adición manual de diccionarios, lo que arruina la idea de facilitar el trabajo a través de la automatización;

Los diccionarios se guardan unicode en un formato de texto simple para la administración desde cualquier programa externo.

Como la base para los diccionarios en nrlpk y pymorphy2 es idéntica, la designación de partes del discurso (gramme) es idéntica. El número de marcadores (gramos no estándar) en este momento es 16 y la mayoría de ellos, si las expresiones marcadas no consisten en varias palabras, además del marcador, también tienen una designación de la parte del discurso del gramo básico. La designación de marcadores coincidentes (gramos no estándar) con pymorphy2 es idéntica, en particular:

  • NUMB es un número;
  • ROMN es un número romano;
  • UNKN: la ficha no se pudo analizar.

Por cierto, para expresiones que contienen datos numéricos, en nrlpk, además de NUMB y ROMN, se utilizan adicionalmente los siguientes marcadores:

  • NUSR: la expresión contiene uno o más datos numéricos;
  • MATEMÁTICAS: la expresión contiene una fórmula matemática.

¿Qué es una expresión de palabras clave de varias palabras? Por ejemplo, NUSR:

  • si el texto es el 25 de febrero de 2020, la expresión clave será el 25 de febrero de 2020, con el lema "25/02/2020", el gramo "NUSR" y el marcador NUSR;
  • sin embargo, si el texto dice "25 de febrero de 2020", la expresión clave será "25 de febrero de 2020", con el lema "2f2g", el gramo "WIQM" y el marcador WIQM;
  • si el texto contiene 25 toneladas, en la clave veremos "25 toneladas", con el lema "2t", donde "NUSR" también se utilizará como gramo y marcador.

¿Por qué necesita describir palabras y claves?


Al principio, era necesario verificar el funcionamiento de los algoritmos nrlpk: si se perdieron las palabras, si hubo una unión innecesaria, cuál es la proporción de claves en el texto, etc.

Pero a medida que se depuraba el software, comenzaron a aparecer algunas "regularidades", cuya identificación, como tarea, no se planteó a nrlpk:

  • identificación de palabras escritas con errores ortográficos;
  • identificación de textos con mal estilo, mal -%> 35% (observaciones prácticas como resultado de la prueba);
  • identificación de textos de destino (enfocados de manera estrecha, posicionamiento claro) - skeys-% <5 sin teclas numéricas (observaciones prácticas como resultado de las pruebas);
  • identificación de textos que no están sujetos a temas de la industria - skeys-% <1.

Un análisis de la combinación mutua de indicadores estadísticos puede ser no menos interesante, por ejemplo:

  • identificación de textos de "amplio alcance" - teclas -%> 45% con ukeys-% atendiendo a las teclas-%.

¿Por qué está todo escrito?


nrlpk está listo para trabajar con los indicadores de calidad actuales para procesar textos en ruso, pero no se proporciona como un servicio. El autor tiene instrucciones claras y comprensibles de desarrollo para aumentar el porcentaje de calidad y estabilizar este porcentaje. Para desarrollar esta tarea, se requiere un inversor estratégico y / o un nuevo titular de derechos de autor listos para el desarrollo posterior del proyecto a los objetivos establecidos.

PS


Nrlpk genera automáticamente las etiquetas para este texto (inicial - en Habré un poco cambiado) (enumerado a continuación) con los siguientes parámetros:

  • No reconozca como claves las expresiones con datos numéricos;
  • reconocer como claves las palabras repetidas en el texto al menos 8 veces.

Los datos detallados sobre el resultado del procesamiento nrlpk de este artículo se pueden encontrar en GitHub .

Publicado por: avl33

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


All Articles