Moi, RoboLoyer, ou comment rechercher des anomalies dans les documents

Pouvez-vous imaginer combien de documents réglementaires par heure un avocat d'entreprise doit consulter et quelles conséquences pourrait entraîner sa négligence? Un pauvre confrère doit lire chaque contrat, surtout s'il n'y a pas de modèle standard pour lui, ce qui arrive souvent.

En regardant dans les yeux fatigués de notre avocat d'entreprise, nous avons décidé de créer un service qui trouvera les problèmes dans les documents et les signalera à l'avocat somnolant. En conséquence, nous avons créé une solution avec l'agrégation des connaissances sur une certaine base de contrats et de conseils aux avocats, qui devrait faire l'objet d'une attention particulière. Bien sûr, non sans magie. Magie mathématique appelée détection d'anomalies.

Fondamentalement, les approches de détection d'anomalies sont utilisées pour analyser le comportement d'une variété d'équipements pour détecter les défaillances, ou dans le secteur bancaire pour déterminer la fraude. Et nous avons essayé d'appliquer ces algorithmes pour l'analyse des documents juridiques. Suivez la coupe pour découvrir comment nous l'avons fait.


1. Nous traitons des informations structurées


Nous avons de la chance car Les textes des contrats sont suffisamment structurés, secs et compilés selon certains modèles. Pour travailler sur le projet, l'idée a été proposée d'implémenter un prototype basé sur des contrats et des contrats du site zakupki.gov.ru (nous avons obtenu 200 000 documents). Pour 170 000 contrats, nous avons pu identifier la structure: préambule, chapitres, paragraphes et annexes du contrat, en tenant compte des mots-clés, position dans le texte et numérotation.

2. Différents types de contrats


Il est nécessaire de tenir compte du fait que les contrats peuvent être de différents types. Tous diffèrent considérablement par leur contenu, l'objet du contrat, les principaux chapitres, etc. Pour optimiser l'analyse de chaque type de contrat, il est nécessaire d'effectuer des travaux sur leur classement ou leur regroupement.
Peut-être que vous savez déjà quels types de contrats sont présents dans votre base de données, et vous connaissez les signes par lesquels ils peuvent être déterminés. Dans notre cas, nous avons un corps brut de contrats sans aucune information supplémentaire sur chaque contrat et sans aucune hypothèse sur la classification des marchés publics. Par conséquent, nous avons été contraints de recourir au clustering de notre base de contrats.

Vous pouvez standardiser le clustering en utilisant le vecteur de présentation de document tf-idf, mais nous avons décidé d'essayer l'algorithme Doc2Vec, juste pour le plaisir. À l'aide de l'algorithme Doc2Vec, les contrats ont été convertis en vecteurs et les vecteurs de contrat résultants ont été envoyés à l'entrée de l'algorithme de clustering. Nous avons utilisé l'algorithme K-means pour regrouper les vecteurs. Étant donné que la similitude est généralement mesurée à l'aide de la distance cosinus, nous l'avons utilisée à la place de la distance euclidienne.

Après avoir reçu 20 clusters de documents, il a fallu vérifier la qualité du clustering. Comme nous n'avons pas de classification des contrats, nous ne pouvons pas comparer les clusters résultants avec la partition existante. Ensuite, nous avons décidé de regarder les mots qui décrivent le cluster. Pour ce faire, nous avons pris les éléments «Objet de l'accord» pour chaque cluster, supprimé les mots vides, les nombres et les mots trouvés dans la plupart des clusters. Ensuite, nous avons sélectionné les 5 mots les plus courants pour chaque cluster comme mots clés. D'une manière si simple, on peut évaluer subjectivement la qualité du clustering.

Exemples de mots décrivant des clusters:

  • locataire, propriétaire, appartement, location, développeur
  • compétence, pédagogique, pédagogique, académique, à temps plein
  • entrepreneur général, sous-traitant, construction générale, concepteur, urbanisme
  • pharmacie, quarantaine, dépenser, phytosanitaire, étanche à l'air
  • détective, gardien de sécurité, répression, anxiété, infraction
  • licencié, sous-licencié, film, concédant de licence, relais
  • emprunteur, séquestre, créancier, prêt, nantissement
  • centralisé, approvisionnement en énergie, intrazone, plomberie, égout

3. Quelles anomalies pouvons-nous rencontrer dans les contrats


Déterminons quels cas nous considérerons anormaux et ce que nous pouvons en faire. Nous avons identifié les scénarios suivants:

  1. Une clause supplémentaire a été ajoutée au contrat qui n'a jamais été vue dans ce contexte auparavant. Il est nécessaire d'attirer l'attention d'un avocat sur lui.
  2. Il n'y a aucune clause dans le contrat qui était précédemment rencontrée dans de tels contrats. Nous devons conseiller à l'avocat de l'ajouter.
  3. Un paragraphe est similaire à un point de l'histoire, mais il est en quelque sorte reformulé, certains mots sont ajoutés ou supprimés. Vous pouvez en informer l'avocat et vous conseiller de le modifier.

4. Sous quelle forme soumettre les contrats


Comme déjà mentionné, le contrat se compose de chapitres, les chapitres sont divisés en paragraphes, chaque paragraphe peut contenir des sous-paragraphes, etc. Pour décomposer le contrat en chapitres et paragraphes, nous avons pris en compte la numérotation, les transferts, les mots clés: «Chapitre», «Article», etc. Chaque élément se compose d'une ou plusieurs phrases. Pour diviser un élément en phrases, sent_tokenize du module nltk.tokenize a été utilisé.

Le contrat lui-même contient plusieurs chapitres globaux, dont l'essence et le contenu peuvent être trouvés par les rubriques: l'objet du contrat, les droits et obligations des parties, le prix et la procédure de règlement ... Nous avons essayé de combiner les chapitres avec les mêmes rubriques et de travailler indépendamment avec différents chapitres. Les titres des chapitres sont souvent reformulés, ont des fautes de frappe ou des signes de ponctuation supplémentaires. Pour que les groupes de chapitres soient suffisamment grands, nous avons combiné les titres qui étaient proches à distance de Levenshtein en un seul groupe.

L'un des problèmes que nous pouvons certainement rencontrer est l'énorme volume d'entités nommées dans les contrats, qui sont souvent uniques et peuvent être confondues avec une anomalie. Il existe de nombreuses entités dans les contrats, telles que les noms, noms de sociétés, dates, adresses, etc., qui varient d'un contrat à l'autre. Il est nécessaire de rechercher et d'éliminer ces entités du contrat, c'est-à-dire apporter le contrat à un formulaire modèle. Nous avons eu de la chance avec l'ensemble de données, car dans le déchargement des contrats, il y avait une grande proportion de modèles de contrats, des entités nommées dans lesquelles sont remplacés par des soulignés. Nous avons identifié entre quelles phrases les soulignés se produisent généralement afin de trouver ces phrases dans les documents terminés et d'en supprimer les entités nommées. Il est clair que de cette manière, nous n'avons pas supprimé toutes les entités nommées. Par conséquent, nous avons à nouveau traversé la coque avec la bibliothèque Natasha et supprimé les entités qu'elle a trouvées.

5. Définition de clauses anormales dans le contrat


Nous avons déjà pu séparer les contrats par type en utilisant le clustering et avons pu identifier des groupes de chapitres similaires. Maintenant, en utilisant les connaissances accumulées sur une certaine clause d'un certain type de contrat, nous pouvons comprendre ce qui doit être corrigé dans le contrat actuel. Calculons la probabilité de son anomalie pour chaque phrase du chapitre.

Pour chaque groupe de chapitres, nous stockons toutes les offres que nous avons rencontrées dans notre ensemble de documents de formation issus des marchés publics. Parce que il y en a beaucoup, pour chaque groupe de chapitres le modèle Word2Vec a été formé, et chaque phrase est associée à un vecteur de la somme pondérée (par tf-idf) des vecteurs des mots qui y sont inclus. De plus, les vecteurs de phrases ont été divisés en grappes de manière similaire à la division des vecteurs pour les documents.

Maintenant, lorsqu'une proposition nous parvient, nous déterminons de quel groupe de contrats il s'agit, de quel groupe de chapitres, de quel groupe de propositions elle est la plus proche et dans ce groupe nous trouvons la plus proche. La distance par rapport à l'offre la plus proche peut être considérée comme une mesure du caractère anormal de cette offre. Si la distance à l'offre la plus proche est nulle, alors notre offre n'est pas anormale. Avec l'augmentation de cette distance, nous doutons de plus en plus que la proposition ne contienne pas d'anomalies. Il est très probable que quelque chose ne va pas avec lui.

6. Que faire des éléments manquants


Nous avons compris comment trouver des points anormaux dans le contrat, mais nous n'avons pas appris à trouver des anomalies sous la forme de phrases ou de points manquants. Une telle anomalie peut être facilement trouvée si nous avons en main un modèle pour ce type d'accord, mais, par exemple, il y a des moments où une autre entreprise nous a envoyé un accord établi selon notre propre modèle.
Pour détecter de telles anomalies, nous devons créer un modèle de contrat avec un ensemble d'offres / clauses obligatoires, toujours basées uniquement sur nos contrats.

Nous avons trouvé et testé l'algorithme de construction du modèle. Cet algorithme suppose que dans notre base de données des contrats, il existe un chapitre similaire avec l'ensemble correct des éléments, que nous voulons identifier et indiquer comme modèle.

Algorithme:


  1. Pour chaque groupe de chapitres, pré-entraînez un modèle basé sur l'algorithme MinHashLSH, qui vous permet de trouver rapidement des textes proches.
  2. Pour chaque chapitre du contrat téléchargé, recherchez une liste des paragraphes qui lui sont proches dans la base de données.
  3. Sur la base des paragraphes fermés obtenus, construisez un modèle de langage et sélectionnez comme paragraphe de modèle avec la probabilité la plus élevée prédite par le modèle de langage.

Après avoir reçu un modèle pour chaque chapitre, nous pouvons identifier les éléments manquants qui sont présents dans le modèle mais ne figurent pas dans le contrat actuel, et conseiller à l'avocat de les ajouter.

7. Pipeline complet


Pour résumer et rassembler toutes les étapes ensemble:

I. Collecte, traitement et stockage des corps de contrats
A. Assembler le corps des contrats types.
B. Classer / regrouper les contrats par type.
C. Décomposer le contrat en chapitres, paragraphes et phrases.
D. Supprimer les entités nommées des contrats.
E. Regroupez les chapitres par titre.
F. Pour chaque groupe de chapitres, entraînez Word2Vec.
G. Faites correspondre chaque phrase avec le vecteur de la somme pondérée des vecteurs des mots qui y sont inclus.
H. Cluster les vecteurs de phrases reçus et stocker chaque cluster séparément pour rechercher rapidement le vecteur le plus proche dans le cluster le plus proche.
I. Pour chaque groupe de chapitres, entraînez MinHashLSH.

II. Recherche d'anomalies dans un nouveau document
A. Souligner les points anormaux
1. Définissez le type de contrat (classe ou cluster)
2. Divisez le document en chapitres, paragraphes et phrases
3. Pour chaque chapitre, recherchez le groupe de chapitres correspondant dans la base de données
4. Faites correspondre chaque phrase avec un vecteur
5. Trouvez pour chaque offre du contrat le cluster d'offres le plus proche, et en lui l'offre la plus proche
6. Calculez les distances entre les vecteurs de proposition et coloriez les phrases en fonction des distances obtenues.
7. Ne coloriez que des parties de phrases, si elles diffèrent en quelques mots par les plus proches.
8. Conseillez l'édition sous la forme de la phrase suivante.
Recherche d'objets manquants
1. Pour chaque chapitre, créez un modèle
2. Conseillez d'ajouter les éléments manquants du modèle

8. Évaluation de la qualité


Pour évaluer la qualité des solutions au problème, un ensemble de contrats de test a été formé. Des anomalies ont été artificiellement ajoutées aux contrats sous la forme de la suppression d'une partie des mots, l'insertion de mots / phrases dans les phrases, l'insertion de phrases d'autres chapitres, la suppression de phrases. Nous avons évalué la qualité de chaque type d'anomalie et obtenu la distribution suivante des erreurs de détermination:


Autrement dit, l'algorithme proposé nous permet de déterminer des inclusions incorrectes dans 4 cas sur 5. Il convient de noter qu'avec l'augmentation du volume de l'échantillon de formation et le regroupement des contrats pour différents types, nous pouvons obtenir une amélioration de cette évaluation.

9. Visualisation


Pour visualiser une telle solution au problème, une interface web a été mise en place dans laquelle un nouveau contrat peut être chargé, dont le texte sera affiché sur la page et les offres anormales seront mises en évidence. Plus la couleur de la phrase est foncée, plus nous sommes sûrs qu'elle est anormale. Parce que nous avons trouvé l'offre la plus proche, nous recommandons de modifier pour l'utilisateur sous la forme de cette prochaine offre, ou nous recommandons de modifier la partie spécifique de l'offre si la prochaine a une légère différence avec l'original.



10. Le cas échéant?


L'application pratique du service résultant est la plus appropriée dans les cas où un examen «en continu» de la pureté juridique d'un grand nombre de documents du même type est requis: par exemple, lors de l'octroi de prêts collatéraux au public (hypothèque, prêts-auto et assurance). Par exemple, dans le cas d'une hypothèque, il s'agit de contrats de vente de biens immobiliers, de contrats d'assurance immobilière et d'emprunteur, de contrats d'évaluation immobilière, etc. - des centaines de pages de texte dans les dossiers de chaque client, qui peuvent être analysées presque instantanément, et des endroits anormaux seront "mis en évidence" à l'avocat pour analyse des risques ou fraudes.

Donc, les avocats de la chair et du sang ne peuvent pas se passer complètement, mais les technologies modernes leur permettent de vous faciliter la vie.

Matériel préparé par Elena Sannikova ( helen_sunny ).

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


All Articles