Erkennen von Daten in natürlicher Sprache mit Python3

Wir im Unternehmen schaffen einen Service, der rechtliche Fakten aus der Korrespondenz von Kunde und Kunde extrahiert. Der Service entstand aus einer einfachen Idee: Meine Stammkunden beschlossen, die Arbeit der Manager zu vereinfachen und einen „Vertragsgenerator“ zu schaffen. Die erste Aufgabe - die Details des Kunden und des Kunden in den Vertrag einzubeziehen, haben wir uns leicht entschieden.

Eine zweite Idee kam auf - nach Daten in der Korrespondenz zu suchen und diese automatisch in den Arbeitsbericht, die Dokumente, einzufügen.

Menschen schreiben jedoch selten Daten in Chats und Instant Messenger, damit der Algorithmus sie leicht erkennen kann.

"Wir fangen nächste Woche an", "diesen Freitag" - wenn Manager relativ einfach lernen, wie man Daten im richtigen Format schreibt, können Sie solche Anforderungen nicht an Kunden stellen.

Ich schreibe in Python und Python kam sofort zum Rettungsmodul der NLP-Bibliothek spaCy * - NER (Name Entity Recognition), mit dem Daten aus der Korrespondenz mit englischsprachigen Kunden leicht abgerufen werden können. Als Ergebnis haben wir eine Reihe von relativen Daten erhalten: "in zwei Wochen", "Freitag", "diesen Freitag", "diesen Mittag", "Mittwoch Mittag".

Aber wie können diese Daten in Objekte übersetzt werden, die der Dienst wahrnimmt (Datum / Uhrzeit-Objekt)?
Eine lange Reise begann im Bereich des „Parsens von lesbaren Daten“. Als ich die Umgebung untersuchte, fand ich nur drei Python-Bibliotheken, die sofort und ohne Qual funktionierten: Timefhuman **, Dateparser *** und Datefinder ***.

Das Bild zeigt einen Vergleich von drei Bibliotheken:

Bild

Im Allgemeinen ist es klar, dass sich der Zeitmensch, der nicht die Aufmerksamkeit verdorben hat, als bequemer herausstellte, obwohl er eine große Anzahl von Fehlalarmen aufwies, als der Datums-Parser, den die meisten Menschen verwenden.
Eine interessante Logik von Entwicklern, die "Freitag" analysierten, gab den zukünftigen Freitag im Fall von timefhuman und den letzten Freitag im Dateparser an.

Im Allgemeinen erwies sich timefhuman als lebendiger und wurde für die weitere Entwicklung und Erprobung des Prototyps ausgewählt.

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

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


All Articles