Reconnaître les dates écrites en langage naturel à l'aide de Python3

Dans l'entreprise, nous créons un service qui extrait des faits juridiques de la correspondance du client et du client. Le service est né d'une idée simple - mes clients réguliers ont décidé de simplifier le travail des managers et de créer un «générateur de contrat». La première tâche - pour intégrer les détails du client et du client dans le contrat, nous avons décidé facilement.

Une deuxième idée est venue - chercher les dates dans la correspondance et les insérer dans les termes de référence, les documents automatiquement.

Cependant, les gens écrivent rarement des dates dans les chats et les messageries instantanées afin que l'algorithme puisse facilement les reconnaître.

«Nous commençons la semaine prochaine», «ce vendredi» - si les gestionnaires sont relativement faciles à apprendre à écrire des dates dans le bon format, alors vous ne pouvez pas faire de telles demandes aux clients.

J'écris en python et python est immédiatement venu au module de secours NLP-library spaCy * - NER (reconnaissance d'entité de nom) qui a facilement récupéré les dates de la correspondance avec les clients anglophones. En conséquence, nous avons eu un tas de dates relatives: «dans deux semaines», «vendredi», «ce vendredi», «ce midi», «mercredi midi».

Mais comment traduire ces dates en objets que le service perçoit (objet datetime)?
Un long voyage a commencé dans le domaine de «l'analyse des dates lisibles par l'homme». En examinant les environs, je n'ai trouvé que trois bibliothèques python qui fonctionnaient immédiatement et sans tourment: ce sont timefhuman **, dateparser *** et datefinder ***.

L'image montre une comparaison de trois bibliothèques:

image

En général, il est clair que le temps humain, non gâché par l'attention, s'est avéré plus pratique, bien qu'avec un grand nombre de faux positifs, que l'analyseur de date que la plupart des gens utilisent.
Une logique intéressante de développeurs analysant «vendredi» a donné le futur vendredi dans le cas de timefhuman et vendredi dernier dans le parseur de date.

En général, timefhuman s'est avéré être plus vivant et a été sélectionné pour poursuivre le développement et les tests du prototype.

* spacy.io
** github.com/alvinwan/timefhuman
*** github.com/scrapinghub/dateparser
**** github.com/akoumjian/datefinder

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


All Articles