Si difficile à trouver, facile à manquer et impossible à émettre

Nos règles de vie: commencez le titre des articles par la lettre "T" et recherchez les emprunts de texte rapidement, avec précision et, surtout, magnifiquement . Depuis plus d'un an, nous avons réussi à trouver des emprunts transférables et à réécrire à l'aide de réseaux de neurones. Mais parfois, vous devez intentionnellement "vous tirer une balle dans le pied" et, en boitant, prendre un autre chemin, c'est-à-dire Ne vérifiez pas la paraphrase ou le plagiat, mais laissez simplement un morceau de texte seul. Paradoxalement, ça fait mal, mais c'est nécessaire. Disons tout de suite: nous ne toucherons pas à la bibliographie. Comment le trouver dans le texte? Pourquoi est-ce facile à dire, mais beaucoup plus difficile à faire qu'il n'y paraît? Tout cela dans le prolongement du blog d'entreprise d'Antiplagiarism , le seul blog où ils n'aiment pas le texte barré .



Source de l'image: Fandom.com


Pourquoi prendre autant de temps pour trouver celui-là?


Tout d'abord, un peu de théorie. Qu'est-ce qu'un document et comment devons-nous le traiter? Dans «Archéologie du savoir», M. Foucault note: «L'histoire organise désormais le document, le divise, organise, redistribue les niveaux, fixe les rangs, les qualifie selon le degré de signification, isole les éléments, définit les unités, décrit la relation.» Nous, bien sûr, ne sommes pas des historiens des idées, mais nous savons par notre propre expérience qu'un document est une courtepointe patchwork de divers éléments cousus ensemble. Quels sont ces éléments et comment ils sont interconnectés dépend d'un document spécifique. S'il s'agit, par exemple, d'un travail d'étudiant, il comprendra très probablement: une page de titre, des chapitres du texte principal, des figures, des tableaux, des formules, des références et des applications. Dans un article scientifique, il y aura très probablement une annotation, mais la page de titre peut être complètement manquante. Et la collection d'articles ou de documents de conférence comprend toute une série d'articles, chacun ayant sa propre structure. En un mot, chaque élément du document est intéressant et autosuffisant et peut en dire beaucoup sur le type auquel appartient le document lui-même.


Idéalement, tout le monde - nous et les enseignants - souhaiterions avoir une structure de document idéale et traiter chaque élément de manière à répondre à une tâche spécifique. La première étape du succès consiste à déterminer le nom de l'élément. Stack_more_layers et moi avons décidé de commencer par le dernier mais non le moindre , à savoir un élément de texte tel que «bibliographie». Il s'agit du segment dans lequel l'emprunt de texte est le moins intéressant pour l'utilisateur. Par conséquent, il est nécessaire de montrer dans le rapport que nous avons «attrapé» la bibliographie et n'avons pas commencé à chercher quoi que ce soit dessus.


La vie est un spectacle. Peu importe combien de temps cela dure. L'essentiel est qu'il devrait y avoir une bibliographie à la fin.


Dans un monde parfait, tout est beau, et l'apparence du document aussi. Le texte d'un document idéal est structuré, il est agréable à lire et trouver une bibliographie en tirant rapidement le curseur jusqu'au bout ne sera pas du tout difficile. Comme la pratique l'a montré, la réalité a une structure complètement différente.


Pour commencer, par «bibliographie», beaucoup de gens entendent également les concepts suivants: «liste de références», «littérature utilisée», «liste de références» et même plus d'une centaine (sic!) De titres. En général, pour de telles choses, il existe des règles pour la conception de références bibliographiques et de notices, selon lesquelles vous pouvez extraire une liste de références de la couche de texte. Disons plus - il y a même un GOST pour la conception de ces enregistrements . Voici, par exemple, la conception correcte d'une notice bibliographique pour un livre bien connu:



Certes, il convient de considérer le fait que le manuel sur la conception des enregistrements "selon GOST" prend près de 150 pages. Pour l'enregistrement des références bibliographiques dans les publications non imprimées, il existe un GOST distinct pour plus de 20 pages. Cependant, une question raisonnable se pose: combien de personnes consacreront du temps à une lecture aussi divertissante juste pour rédiger correctement quelques références littéraires? Comme le montre la pratique, il y en a peu. Bien sûr, il existe des systèmes de mise en page automatique du texte (par exemple, LaTeX ), mais dans l'environnement étudiant (et c'est la majorité de nos "clients") ils ne sont pas très courants. En conséquence, à l'entrée, nous avons un texte qui contient (ou peut-être ne contient pas) au moins une liste structurée de sources littéraires.


Nous allons clarifier un point de plus. Le fait est que nous ne travaillons pas directement avec le travail téléchargé (pdf, docx, doc, etc.), mais d'abord nous les apportons à un aspect unifié, à savoir, nous extrayons la couche de texte . Cela signifie que tout type de mise en forme, par exemple le type ou la taille de la police, est supprimé du texte. Par conséquent, nous n'avons que du texte «brut» à notre disposition, qui semble souvent très mauvais en raison de divers artefacts d'extraction.


Notez simplement que notre algorithme doit être rapide et précis. La sélection d'un bloc de bibliographie n'est qu'une «fonctionnalité» supplémentaire dans tout le processus de vérification d'un document, il ne devrait donc pas dépenser beaucoup de ressources. Cela signifie que l'algorithme ne doit pas être trop compliqué.


Pour ce faire, nous déterminons d'abord la métrique de qualité par laquelle nous évaluerons le fonctionnement de notre algorithme. Nous considérerons notre tâche comme un problème de classification. Chaque ligne de texte sera liée à l'une des deux classes - bibliographie ou non-bibliographie. Afin de ne pas compliquer la vie avec des indicateurs de qualité mal interprétés (et il y en a assez!), Nous considérerons la proportion de lignes correctement et incorrectement classées. Nous supposons que le calque de texte entrant est divisé en lignes. Et encore plus pour que la classification en tant que telle ait un sens, nous avons besoin d'une ligne pour ne pas combiner la bibliographie avec du texte superflu. C'est une hypothèse assez forte, mais presque tous les textes qui sont passés par notre DocParser le satisfont. Dans la classification à deux classes d'objets, qui est notre tâche, les mesures de qualité les plus populaires sont la précision et le rappel . À quoi il ressemble - voir l'image ci-dessous:



Source de l'image ci-dessus: Wikipedia
Source de l'image ci-dessous: Série: Pour les nuls


L'image montre combien de fois l'algorithme a correctement (ou non) classé la chaîne, à savoir:


  • TP est une chaîne bibliographique que l'algorithme a déterminée correctement;
  • TN est une ligne de texte brut que l'algorithme a déterminée correctement;
  • FP - une ligne de texte brut, que l'algorithme définit comme bibliographique;
  • FN est une chaîne bibliographique définie par l'algorithme comme une chaîne de texte brut.

Une autre exigence est que notre algorithme doit être suffisamment précis (c'est-à-dire avoir un score de précision suffisamment élevé). Cela peut être interprété comme «plutôt, nous ne choisissons pas quelque chose de nécessaire que de sélectionner quelque chose d'inutile».


Tout May Dreams Cam Tru


Selon vous, qu'est-ce qui prend le plus de temps pour résoudre un problème de recherche? Développement d'algorithmes? Intégrer une solution dans un système existant ou tester? Peu importe comment!


Curieusement, la plupart du temps est consacré à la collecte et à la préparation des données. Dans ce cas également: pour aboutir à un algorithme et configurer ses paramètres, il est nécessaire de disposer d'un nombre suffisant de documents balisés. Autrement dit, les documents pour lesquels on sait exactement où ils contiennent des notices bibliographiques. Il serait possible d'attirer des évaluateurs tiers, cependant, pour de si petites tâches, vous pouvez généralement vous débrouiller avec un peu de sang et annoter les données par vous-même. En conséquence, grâce à des efforts conjoints, nous avons traité environ 1 000 documents. Bien sûr, pour la formation, par exemple, d'un réseau de neurones, cela ne suffit pas. Cependant, rappelez-vous que l'algorithme doit être simple, ce qui signifie que vous n'avez pas besoin de beaucoup de données pour configurer ses paramètres.


Cependant, avant de développer un algorithme, vous devez comprendre les spécificités des données. Après avoir consulté environ 1000 documents aléatoires, ou plutôt, leurs couches de texte, nous pouvons tirer quelques conclusions sur la façon dont le texte bibliographique diffère de celui habituel. L'un des modèles les plus importants est que presque toujours une bibliographie commence par un mot-clé. Outre la populaire «liste de références» ou les «sources utilisées», il existe également des références assez spécifiques, par exemple, «Manuels, manuels, monographies».


Une autre caractéristique tout aussi importante est la numérotation des notices bibliographiques. Encore une fois, il convient de mentionner que tous ces "signes" de la liste de références sont très inexacts et il est loin d'être toujours possible de trouver toutes les notices bibliographiques dans le texte.


Cependant, même de telles fonctionnalités inexactes suffisent pour développer l'algorithme le plus simple pour trouver des bibliographies dans la couche de texte. Décrivons-le plus formellement:


  1. Nous recherchons des «clés de sol» dans le texte - les mots-clés de la bibliographie;
  2. Nous essayons de trouver dans le texte ci-dessous la numérotation des notices bibliographiques;
  3. S'il y a une numérotation, nous parcourons le texte jusqu'à sa fin.

Cet algorithme simple montre une précision de presque 100%, mais une très faible exhaustivité. Cela suggère que notre algorithme ne sélectionne que les lignes bibliographiques, mais le fait de manière si sélective qu'il ne trouve qu'une petite partie de la bibliographie. La difficulté est que la bibliographie ne peut pas facilement être numérotée, nous allons donc utiliser cet algorithme comme auxiliaire.


Essayons maintenant de construire un autre algorithme qui trouve les types de notices bibliographiques restants dans le texte. Pour ce faire, mettez en évidence les caractéristiques qui distinguent les lignes de texte brut des lignes de notices bibliographiques. Il convient de noter que le texte bibliographique est assez structuré, bien que chaque auteur forme cette structure à sa manière. Nous avons identifié les caractéristiques distinctives suivantes des lignes souhaitées:


  1. La présence de la numérotation au début de la ligne - cela a déjà été mentionné ci-dessus lors de la description du premier algorithme;
  2. La présence dans la chaîne des nombres d'années. De plus, il ne devrait pas s'agir uniquement de nombres à quatre chiffres (sinon il y aura de nombreuses coïncidences), mais des années spécifiques qui sont le plus souvent utilisées pour citer: des années 1900 à nos jours;
  3. Liste des noms complets des auteurs, éditeurs et autres personnes ayant participé à la publication de la publication, sous différents formats;
  4. Indication des numéros de page, des volumes et autres informations de type similaire;
  5. La présence dans la ligne de phrases indiquant le numéro du problème;
  6. La présence d'une URL dans la chaîne;
  7. Dépendance dans une ligne de vocabulaire professionnel. Pour la plupart, ce sont des abréviations spéciales, telles que «conf.», «Scientifique-pratique». et des abréviations similaires.

Nous définissons ces signes comme binaires et les formons sur l'un des classificateurs les plus simples, mais en même temps assez efficaces - Random Forest . L'algorithme Random Forest est une méthode de classification d'ensemble. Il se compose de nombreux (généralement environ 100) arbres de décision simples, dont chacun prend sa propre décision, à quelle classe l'objet en question appartient. La réponse de l'ensemble de l'algorithme est créée très simplement: une classe est sélectionnée qui a été formée par la plupart des arbres de décision:



Source de l'image: www.researchgate.net


Comme mentionné ci-dessus, nous sélectionnerons les paramètres de l'algorithme de manière à maximiser sa précision. Essayons d'appliquer cet algorithme à un document et regardons le résultat du travail:



Dans l'image ci-dessus, les lignes que l'algorithme considère bibliographiques sont surlignées en rouge. Comme vous pouvez le voir, l'algorithme fait très bien face à sa tâche - il n'y a presque pas de surbrillance inutile dans tout le texte, cependant, la bibliographie elle-même est déterminée par des "morceaux". Cela s'explique facilement: l'algorithme étant affiné avec une grande précision, il ne sélectionne que les lignes très susceptibles d'être bibliographiques. Selon l'algorithme, les lignes non sélectionnées ressemblent à des morceaux de texte brut.


Essayons de «peigner» le résultat. Nous devons éliminer deux problèmes: les sélections uniques aléatoires dans le texte principal et la sélection discontinue de la bibliographie elle-même. Une solution rapide et efficace à ces problèmes est les opérations de «collage» et «d'éclaircissage». Les noms parlent d'eux-mêmes: nous allons supprimer les lignes bibliographiques isolées et coller les lignes adjacentes entre lesquelles se trouvent plusieurs lignes non sélectionnées. De plus, très probablement, il faudra effectuer plusieurs itérations de collage-amincissement, car en un seul passage, les lignes simples qui ne sont pas bibliographiques peuvent rester ensemble et ne pas être supprimées. Nous avons configuré les paramètres des opérations de collage et d'amincissement (nombre de passes, largeur de collage, paramètres de suppression) sur un sous-échantillon séparé (qui ne sait pas ce qu'est la «reconversion», nous vous recommandons de regarder ici ).


Que s'est-il passé après nos améliorations? Lors de la visualisation de plusieurs documents, nous avons remarqué qu'il existe des bibliographies avec les "fonctionnalités" suivantes:


Heureusement, nous avons un algorithme simple mais efficace qui ne prend en compte que de tels cas. Et puisque cet algorithme simple ne sélectionne rien d'autre que les lignes nécessaires de la bibliographie, nous pouvons combiner les résultats des deux algorithmes sans perte de qualité.



Ça a l'air plutôt bien. Bien sûr, puisque l'algorithme est probabiliste, il est possible que la bibliographie ne soit pas du tout trouvée dans le texte. Nous avons spécifiquement modifié la liste des bibliographies afin que l'algorithme «ne l'ait pas remarqué»:



Mais une telle bibliographie, d'un point de vue purement subjectif, n'est plus très différente du texte ordinaire.


Au final, qu'avons-nous obtenu? Nous avons mis en place un module de mise en évidence des notices bibliographiques dans les documents téléchargeables. Le module se compose de deux algorithmes, chacun étant adapté à une spécificité de fonctionnement spécifique. Un algorithme alloue un bloc de bibliographie numéroté à la suite du mot-clé. Le deuxième algorithme sélectionne les lignes très susceptibles d'être bibliographiques, puis effectue plusieurs opérations de «collage» et «d'éclaircissage». Le résultat du module est l'union des algorithmes décrits.


Il convient également de noter que la vitesse de l'algorithme, même sur des documents volumineux, est plutôt élevée. Cela signifie que notre algorithme est parfaitement adapté aux exigences de la "fonction auxiliaire" pendant le processus de vérification.


Conclusion


Donc des allumettes et des glands ...

En conséquence, nous avons pu mettre en œuvre un processus simple mais efficace d'extraction de notices bibliographiques dans des textes utilisateur. Et bien qu'il s'agisse d'une petite partie de la tâche de mise en évidence de la structure des documents, il s'agit néanmoins d'une étape énorme dans l'amélioration de la qualité de service du système anti-plagiat . Soit dit en passant, les résultats de notre travail sont déjà visibles dans les rapports des utilisateurs du système. Créez avec votre propre esprit!

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


All Articles