Yo, RoboLoyer, o cómo buscar anomalías en los documentos.

¿Te imaginas cuántos documentos regulatorios por hora tiene que ver un abogado corporativo y qué consecuencias podría tener su descuido? Un abogado pobre debe leer todos los contratos, especialmente si no hay una plantilla estándar para él, lo que sucede a menudo.

Al mirar a los cansados ​​ojos de nuestro abogado corporativo, decidimos crear un servicio que encuentre problemas en los documentos y los señale al abogado que dormita. Como resultado, creamos una solución con la agregación de conocimientos sobre una determinada base de contratos y consejos para abogados, a los que se debe prestar especial atención. Por supuesto, no sin magia. Magia matemática llamada Detección de anomalías.

Básicamente, los enfoques de detección de anomalías se utilizan para analizar el comportamiento de una variedad de equipos para detectar fallas, o en el sector bancario para determinar el fraude. Y tratamos de aplicar estos algoritmos para el análisis de documentos legales. Sigue el corte para descubrir cómo lo hicimos.


1. Tratamos con información estructurada


Tenemos suerte porque Los textos en los contratos están suficientemente estructurados, secos y compilados de acuerdo con ciertas plantillas. Para trabajar en el proyecto, se propuso la idea de implementar un prototipo basado en contratos y contratos del sitio zakupki.gov.ru (obtuvimos 200,000 documentos). Para 170,000 contratos, pudimos identificar la estructura: el preámbulo, capítulos, párrafos y anexos del contrato, teniendo en cuenta las palabras clave, la posición en el texto y la numeración.

2. Una variedad de tipos de contratos


Es necesario tener en cuenta el hecho de que los contratos pueden ser de diferentes tipos. Todos ellos difieren mucho en contenido, tema del contrato, capítulos principales, etc. Para optimizar el análisis de cada tipo de contrato, es necesario llevar a cabo un trabajo sobre su clasificación o agrupamiento.
Quizás ya sepa qué tipos de contratos están presentes en su base de datos y conozca los signos por los cuales se pueden determinar. En nuestro caso, tenemos un cuerpo bruto de contratos sin ninguna información adicional sobre cada contrato y sin suposiciones sobre la clasificación de los contratos de adquisición. Por lo tanto, nos vimos obligados a recurrir a la agrupación de nuestra base de contratos.

Puede estandarizar la agrupación en clúster utilizando el vector de presentación de documentos tf-idf, pero decidimos probar el algoritmo Doc2Vec, solo por diversión. Usando el algoritmo Doc2Vec, los contratos se convirtieron en vectores, y los vectores de contrato resultantes se enviaron a la entrada del algoritmo de agrupamiento. Utilizamos el algoritmo K-means para agrupar vectores. Como la similitud generalmente se mide usando la distancia cosenoidal, la usamos en lugar de la distancia euclidiana.

Después de recibir 20 grupos de documentos, fue necesario verificar la calidad de los grupos. Como no tenemos ninguna clasificación de contratos, no podemos comparar los clústeres resultantes con la partición existente. Luego decidimos mirar las palabras que describen el grupo. Para hacer esto, tomamos los elementos "Sujeto del Acuerdo" para cada grupo, eliminamos las palabras vacías, los números y las palabras que se encuentran en la mayoría de los grupos. Luego seleccionamos las 5 palabras más comunes para cada grupo como palabras clave. De una manera tan directa, uno puede evaluar subjetivamente la calidad de la agrupación.

Ejemplos de palabras que describen grupos:

  • inquilino, propietario, apartamento, alquiler, desarrollador
  • competencia, docente, educativo, académico, a tiempo completo
  • contratista general, subcontratista, construcción general, diseñador, planificación urbana
  • farmacia, cuarentena, gastos, fitosanitarios, herméticos
  • detective, guardia de seguridad, represión, ansiedad, ofensa
  • licenciatario, sublicenciatario, película, licenciante, relevo
  • prestatario, fideicomiso, acreedor, préstamo, donante
  • centralizado, suministro de energía, intrazona, fontanería, alcantarillado

3. ¿Qué anomalías podemos encontrar en los contratos?


Determinemos qué casos consideraremos anormales y qué podemos hacer con ellos. Identificamos los siguientes escenarios:

  1. Se ha agregado una cláusula adicional al contrato que nunca antes se había visto en este contexto. Es necesario llamar la atención de un abogado.
  2. No hay una cláusula en el contrato que se haya encontrado previamente en dichos contratos. Debemos aconsejar al abogado que lo agregue.
  3. Un párrafo es similar a algún punto de la historia, pero de alguna manera se reformula, algunas palabras se agregan o eliminan. Puede decirle al abogado y aconsejarle que edite.

4. ¿En qué forma presentar los contratos?


Como ya se mencionó, el contrato consta de capítulos, los capítulos se dividen en párrafos, cada párrafo puede contener subpárrafos, etc. Para dividir el contrato en capítulos y párrafos, tomamos en cuenta la numeración, las transferencias, las palabras clave: "Capítulo", "Artículo", etc. Cada elemento consta de una o más oraciones. Para dividir un elemento en oraciones, se utilizó sent_tokenize del módulo nltk.tokenize.

El contrato en sí contiene varios capítulos globales, cuya esencia y contenido se pueden encontrar en los títulos: el tema del contrato, los derechos y obligaciones de las partes, el precio y el procedimiento de liquidación ... Intentamos combinar los capítulos con los mismos títulos y trabajar con diferentes capítulos de forma independiente. Los títulos de los capítulos a menudo se reformulan, tienen errores tipográficos o signos de puntuación adicionales. Para hacer que los grupos de capítulos fueran lo suficientemente grandes, combinamos aquellos títulos que estaban cerca en la distancia de Levenshtein en un solo grupo.

Uno de los problemas que definitivamente podemos encontrar es el gran volumen de entidades nombradas en los contratos, que a menudo son únicas y pueden confundirse con una anomalía. Hay muchas entidades en los contratos, como nombres, nombres de compañías, fechas, direcciones, etc., que varían de un contrato a otro. Es necesario encontrar y eliminar tales entidades del contrato, es decir. traiga el contrato a alguna forma de plantilla. Tuvimos suerte con el conjunto de datos, porque En la descarga de contratos hubo una gran proporción de plantillas de contratos, entidades nombradas en las que se reemplazan por guiones bajos. Identificamos entre qué frases generalmente aparecen guiones bajos para encontrar estas frases en documentos completos y eliminar entidades nombradas de ellos. Está claro que de esta manera no eliminamos todas las entidades nombradas. Por lo tanto, una vez más caminamos por el casco con la biblioteca Natasha y eliminamos las entidades que encontró.

5. Definición de cláusulas anormales en el contrato.


Ya hemos podido separar los contratos por tipo mediante agrupación y hemos podido identificar grupos de capítulos similares. Ahora, utilizando el conocimiento acumulado sobre una determinada cláusula de un determinado tipo de contrato, podemos entender lo que debe corregirse en el actual. Calculemos la probabilidad de su anomalía para cada oración del capítulo.

Para cada grupo de capítulos, almacenamos todas las ofertas que encontramos en nuestro conjunto de documentos de capacitación de la contratación pública. Porque hay bastantes de ellos, para cada grupo de capítulos el modelo Word2Vec fue entrenado, y cada oración está asociada con un vector de la suma ponderada (por tf-idf) de los vectores de las palabras incluidas en él. Además, los vectores de oración se dividieron en grupos de manera similar a la división de vectores para documentos.

Ahora, cuando nos llega una propuesta, determinamos de qué grupo de contratos es, de qué grupo de capítulos, a qué grupo de propuestas está más cerca y en este grupo encontramos el más cercano. La distancia a la oferta más cercana puede considerarse como una medida de cuán anormal es esta oferta. Si la distancia a la oferta más cercana es cero, entonces nuestra oferta no es anormal. Al aumentar esta distancia, dudamos cada vez más de que la propuesta no contenga anomalías. Lo más probable es que algo esté mal con él.

6. Qué hacer con los elementos que faltan


Descubrimos cómo encontrar puntos anómalos en el contrato, pero no aprendimos cómo encontrar anomalías en forma de oraciones o puntos faltantes. Tal anomalía se puede encontrar fácilmente si tenemos en nuestras manos una plantilla para este tipo de acuerdo, pero, por ejemplo, hay momentos en que otra compañía nos envió un acuerdo elaborado de acuerdo con nuestra propia plantilla.
Para detectar tales anomalías, necesitamos crear una plantilla para el contrato con un conjunto de ofertas / cláusulas obligatorias, nuevamente basadas únicamente en nuestros contratos.

Se nos ocurrió y probamos el algoritmo para construir la plantilla. Este algoritmo asume que en nuestra base de datos de contratos hay un capítulo similar con el conjunto correcto de elementos, que queremos identificar e indicar como plantilla.

Algoritmo


  1. Para cada grupo de capítulos, pre-entrene un modelo basado en el algoritmo MinHashLSH, que le permite encontrar rápidamente textos cercanos.
  2. Para cada capítulo del contrato descargado, encuentre una lista de párrafos cercanos de la base de datos.
  3. Con base en los párrafos cercanos obtenidos, construya un modelo de lenguaje y seleccione como un párrafo de plantilla con la mayor probabilidad predicha por el modelo de lenguaje.

Después de recibir una plantilla para cada capítulo, podemos identificar los elementos faltantes que están presentes en la plantilla pero que no están en el contrato actual, y aconsejar al abogado que los agregue.

7. Tubería completa


Para resumir y recopilar todos los pasos juntos:

I. Recolección, procesamiento y almacenamiento del cuerpo de contratos.
A. Montar el cuerpo de modelos de contratos.
B. Clasificar / agrupar contratos por tipo.
C. Desglosar el contrato en capítulos, párrafos y oraciones.
D. Eliminar entidades nombradas de los contratos.
E. Agrupe los capítulos por sus encabezados.
F. Para cada grupo de capítulos, capacite Word2Vec.
G. Relacione cada oración con el vector de la suma ponderada de los vectores de las palabras incluidas en ella.
H. Agrupe los vectores de oración recibidos y almacene cada grupo por separado para buscar rápidamente el vector más cercano en el grupo más cercano.
I. Para cada grupo de capítulos, entrene MinHashLSH.

II. Buscar anomalías en un nuevo documento
A. Destacando puntos anormales
1. Defina el tipo de contrato (clase o clúster)
2. Divida el documento en capítulos, párrafos y oraciones.
3. Para cada capítulo, encuentre el grupo correspondiente de capítulos en la base de datos
4. Une cada oración con un vector
5. Encuentra para cada oferta del contrato el grupo de ofertas más cercano, y en él la oferta más cercana
6. Calcule las distancias entre los vectores de propuesta y coloree las oraciones en función de las distancias obtenidas.
7. Colorea solo partes de oraciones, si con el más cercano difieren en algunas palabras.
8. Aconseje editar en la forma de la siguiente oración.
B. Buscar elementos faltantes
1. Para cada capítulo, cree una plantilla
2. Recomiende agregar los elementos faltantes de la plantilla

8. Evaluación de calidad


Para evaluar la calidad de las soluciones al problema, se formó un conjunto de contratos de prueba. Las anomalías se agregaron artificialmente a los contratos en forma de eliminar parte de las palabras, insertar palabras / frases en oraciones, insertar oraciones de otros capítulos, eliminar oraciones. Evaluamos la calidad de cada tipo de anomalía y obtuvimos la siguiente distribución de errores de determinación:


Es decir, el algoritmo propuesto nos permite determinar inclusiones incorrectas en 4 de 5 casos. Cabe señalar que con el aumento en el volumen de la muestra de capacitación y la agrupación de contratos para diferentes tipos, podemos obtener una mejora en esta evaluación.

9. Visualización


Para visualizar tal solución al problema, se implementó una interfaz web en la que se puede cargar un nuevo contrato, cuyo texto se mostrará en la página y se resaltarán las ofertas anormales. Cuanto más oscuro es el color de la oración, más fuerte estamos seguros de que es anómala. Porque encontramos la oferta más cercana, recomendamos editar para el usuario en la forma de esta próxima oferta, o recomendamos cambiar la parte específica de la oferta si la siguiente tiene una ligera diferencia con el original.



10. ¿Dónde sea aplicable?


La aplicación práctica del servicio resultante es más apropiada en los casos en que se requiere un examen “continuo” de la pureza legal de una gran cantidad de documentos del mismo tipo: por ejemplo, al emitir préstamos colaterales al público (hipotecas, préstamos para automóviles y seguros). Por ejemplo, en el caso de una hipoteca, estos son contratos para la venta de bienes inmuebles, contratos de seguros de bienes inmuebles y de prestatarios, contratos de evaluación de propiedades, etc. - cientos de páginas de texto en los expedientes de cada cliente, que pueden analizarse casi instantáneamente, y los lugares anormales serán "resaltados" al abogado para analizar los riesgos o el fraude.

Entonces, los abogados de carne y hueso no pueden prescindir por completo, pero las tecnologías modernas les permiten hacer la vida más fácil.

Material preparado por Elena Sannikova ( helen_sunny ).

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


All Articles