Wir automatisieren hier Busse. In letzter Zeit sind mit unserer Hilfe alle Tickets in Russland elektronisch geworden . Der Markt betritt gerade erst die IT, und in den Getreidespeichern wird noch viel getan.
Ich erzähle Ihnen von einer einfachen Episode der Automatisierung, die bereits vor Jahrzehnten in der Luftfahrt und auf der Eisenbahn abgeschlossen wurde, aber gerade erst bei uns begonnen hat. Also die Situation: Es gibt ungefähr hundert verschiedene Informationssysteme, die uns Daten über Buslinien senden. Es ist eine Sammlung von selbstgeschriebenen Automatisierungen von verschiedenen Anbietern und konkurrierenden kommerziellen Produkten. Jedes System hat ein eigenes Format, um aufzuzeichnen, wie die Rückgabe des Bustickets erfolgt. Meistens - eine für Menschen lesbare Aufzeichnung in russischer Sprache, die für Betreiber und Kassierer geschrieben wurde, aber etwa 20% der Systeme senden überhaupt keine Rückgabedaten.
Einige der Regeln überschneiden sich, und es kann mehrere Verschachtelungsebenen geben: „ Alle Tickets sind nicht erstattungsfähig, aber in diese Richtung kehren wir gemäß 259-FZ zurück - unter diesen Bedingungen . "
Wir müssen dem Passagier die Bedingungen für die Rückerstattung des Tickets anzeigen (erstattbar, nicht erstattbar, 100% Rückerstattung oder nicht, wenn eine Rückerstattung möglich ist). Verwenden Sie diese Parameter, um Rückerstattungen zu suchen, zu vergleichen und tatsächlich zu automatisieren.
Nun, ich musste verstehen, wie man mehrere tausend Texte in russischer Sprache in Ticketparameter umwandelt, wo man sie speichert und wie man alles verwaltet.
Wie sehen die Antworten der Datenquellen aus?
Hier einige Beispiele:
Das erste, was mir in den Sinn kommt, ist das NLP-Parsen. Um einer neuronalen Netzwerk-Engine NLP beizubringen, all dies zu analysieren, benötigen Sie eine Reihe von Regeln, die einen Korpus für das Training bilden. Um einen Regelsatz zu erhalten, müssen Sie alles manuell analysieren und auf bestimmte Regelsätze in einem einzigen Format reduzieren.
Die Lösung erwies sich als so einfach wie ein Protokoll. Fast alle Rückgaberegeln haben sich seit Jahren nicht geändert, und in einem Monat kommen nur wenige neue Zeilen. Wir haben eine Inhaltsabteilung, die Daten aus verschiedenen Quellen sammelt - zum Beispiel Bushaltestellen anruft, Stoppdaten sammelt und so weiter. Einige davon sind automatisiert, andere nicht. Was automatisiert wird, wird durch das Skript und die Tests abgedeckt und geht an prod. Was manuell gemacht wird, kann durch die Tatsache vereinfacht werden, dass bereits vorbereitete Daten zum Inhalt gelangen, dh wir rufen den menschlichen Bediener über eine API auf, die ein typisches Anforderungsformular enthält.
Es hat sich als billiger herausgestellt, alles einmal manuell zu analysieren und die Änderungen manuell zu verwalten, als die Automatisierung einzuschrauben und aufrechtzuerhalten und dann die Richtigkeit zu überwachen. Infolgedessen verwendeten wir komplexe neuronale Netze - direkt das Gehirn der Bediener. Und sie zeigten sehr hohe Leistung.
Dann haben wir eine Hashing-Regel gemäß MD5 hinzugefügt, nachdem wir nicht funktionierende Leerzeichen gelöscht und in einen Fall konvertiert haben - um zu verstehen, dass sie sich geändert hat. Wenn es sich geändert hat, legt die Automatisierung eine Aufgabe für die Inhaltsabteilung fest, und die Inhaltsabteilung gibt eine neue Regel in unser System ein.
Auch hier ist es richtig, die BRMS-Klassenentscheidung zum Speichern vieler Regeln zu verwenden. Aber alles stellte sich für uns als einfacher heraus, das gesamte Regelwerk wurde auf solche Matrizen reduziert:
In dieser Iteration haben wir beschlossen, die Modifikatoren zu bewerten. Erstens ist nicht klar, was sie sind. Zweitens scheinen sie an wenigen Stellen verwendet zu werden. Zumindest bis jetzt gab es keinen besonderen Bedarf für sie.
Es wird ein solcher Text in einem einheitlichen Format:
Deshalb speichern wir sie direkt in unserem System, das die Parameter von Tickets verwaltet. Das heißt, wir fügen der Datenbank in jedem Ticket einfach einen Link zu den Regeln für die Rückgabe von diesem Unternehmen hinzu.
Dies ist , wie es zu sehen begann:
GDS sind Quellen, dann gibt es einen „Zusammenbruch“ der Flüge (der gleiche Flug aus verschiedenen Quellen mit einigen Änderungen kommen kann, gibt es diese Hölle mehr über hier , zum Beispiel).
So funktioniert der Regelvergleich. Von jedem Flug wird eine Rückgaberegel erhalten, gemäß ihrem Hash wird nach unserer entsprechenden Regel gesucht (in das von uns benötigte Formular analysiert), und wenn alles geklappt hat, wird sie angewendet:
Oft sendet GDS keine Rückgaberegeln für einen bestimmten Flug. In diesem Fall können wir unsere eigenen "manuellen" Rückgaberegeln haben. Zum Beispiel können wir die im Bundesgesetz vorgeschriebenen Standardstandards anwenden. Übrigens, was theoretisch interessant ist, sollten dies die Mindestbedingungen für alle sein, aber in der Praxis werden sie von den Trägern oft entweder verbessert oder verschlechtert.
Fluggesellschaften haben möglicherweise lokale Regeln, wie ich ein Beispiel gegeben habe: "Für alle Flüge ist das so, aber auf Flügen von Moskau nach St. Petersburg ist es so." Speziell dafür haben wir den Parameter "Priorität" für die "manuellen" Regeln festgelegt. Infolgedessen besteht eine solche „manuelle“ Rückgaberegel aus drei Teilen: Parametern, anhand derer wir verstehen, dass diese Regel geeignet ist (Abfahrts- / Ankunftsort, Beförderer, GDS), Priorität und Ergebnis (in der Tat genau die Intervalle mit Aufbewahrung) Prozentsätze). Wenn GDS einen Flug ohne Rückerstattungsregeln ausstellt, gehen wir mit „manuellen“ Regeln zur Basis, wählen alle geeigneten aus und nehmen den mit der höchsten Priorität. Ferner ist der Flug mit diesen erhaltenen Regeln dekoriert.
Natürlich können wir etwas mit solchen "manuellen" Regeln nicht abdecken. Zu diesem Zweck haben wir einen Bericht erstellt, der Anweisungen enthält, die nicht unter die Regeln fallen. Es wird von den Mitarbeitern der Inhaltsabteilung manuell zerlegt.
So. Wie gesagt, alles ist recht einfach, aber es gibt immer noch viele solcher Situationen auf dem Markt, weil der Busmarkt gerade den elektronischen Verkauf eröffnet und es einen riesigen Zoo selbstgeschriebener Lösungen gibt oder es oft keine Automatisierung gibt alle.
Nun haben wir eine einheitliche Basis von Regeln für die Rückerstattung von Tickets für jede uns bekannte offizielle Buslinie in Russland erstellt.