Jerdella-Algorithmus: Lösung der Probleme des semantischen Wahnsinns in Bank-IT-Systemen

Semantische Probleme in IT-Systemen. Was passiert, wenn viele verschiedene Leute anfangen zu kreieren?

Es gibt eine alttestamentliche Legende darüber, wie Menschen in der antiken Stadt Babylon mit dem Bau eines Turms begannen, aber der Allmächtige mischte ihre Zungen und der Turm wurde nicht fertiggestellt. Trotzdem, weil der Turm von Hunderten kleiner Gruppen gebaut wurde, die sich zusammen nicht verstanden. Und ohne sich zu verstehen, ist es unmöglich zu interagieren. In der Tat ist es einfach Wahnsinn, ein und dasselbe Ding zu nennen, was es mit anderen Worten gleich impliziert. Und hier ist nichts überraschend.

Die alttestamentliche Legende kann leicht auf moderne große Unternehmen übertragen werden, die moderne IT-Lösungen implementieren. Ein Beispiel für solche Unternehmen sind zweifellos moderne russische Banken, die Dutzende, wenn nicht Hunderte von Geschäftseinheiten haben, die ihre eigene Subkultur der Kommunikation entwickeln, die auf ihren eigenen Regeln und einem einzigartigen Stil des Geschäftsumsatzes basiert. Bei der Bildung der IT-Infrastruktur wird natürlich die Art der Benennung von Geschäftseinheiten berücksichtigt, die im Team festgelegt wurde. In den letzten zehn Jahren sind viele Arbeiten zu diesem Thema erschienen, zum Beispiel diese [1]. Diejenigen, die in Banken auf die Analyse von Informationssystemen gestoßen sind, wissen, was es bedeutet, das sogenannte "Mapping" von Daten durchzuführen, insbesondere wenn die Endsysteme von verschiedenen Teams aus Analysten, Entwicklern und Kunden oder Anbietern erstellt wurden. Allgemein,Die 60% ige Zusammenstellung von Mappings ist ein Verständnis der Essenz und Semantik der übertragenen Daten.

Der aktuelle Trend geht dahin, eine Reihe agiler Methoden zu verwenden. Alle reden von Agile . Sie können bis zur Heiserkeit argumentieren, ob es gut für das Geschäft oder schädlich ist. Aber eines lässt niemanden ablehnen. Im Verlauf von Agile erstellen viele verschiedene Teams, sowohl innerhalb der Bank als auch von verschiedenen Anbietern, eine Vielzahl von IT-Lösungen für Unternehmen. Oft erstellen die Teams ohne Interaktion ihre eigene, gut etablierte Terminologie. Und in dem Moment, in dem die Integration stattfindet, geschieht dieselbe Situation, die im Alten Testament beschrieben wird. Wie ähnelt es nicht dem babylonischen Basar mit seinen Tausenden von Kaufleuten, Geschäften, Waren, heiligen Narren, Fakiren und Feuerfressern? Und so beginnen all diese Menschen, die mit unterschiedlichen Ideen und Gedanken bewaffnet sind, den Turm zu bauen.

XSD ( JSON ) , - . , , «» , Confluence, Zoom Webex, « » , — .

, ESB ( ) -, , , «-» , . … , , . , , - , Kafka. , , , . XML , XSD , , , , JSON, - , «» «». , , , JSON . . , . XSD , . JSON . .

? , - . , ?



.

- . , . MS Excel, , , «» . ( JSON path), — . «». . , :

« »



« »



«20- »



«12- »



« , »



, , , , -. , : , . – “ ”. , , , , , , .

, , , PIP! xslx , . , , Python, .

, – Python. , Python. , , - . , , . – , , . : « , ». — - PyQt Tkinter. , . .

, JSONpath , . , , , Python. , .



. JSON.



. “” 33- . 33 ? – “33” . «». . , , , [2]. . «» . : , , 33- . . . , ABC :

ABC=(x,x,.....,x),(1)



Dabei ist jede x-Koordinate an der entsprechenden Position die Nummer des entsprechenden Buchstabens des Feldkommentars in der Excel-Datei. Zum Beispiel haben wir den Kommentar "Individuelle Kontonummer". Vergleichen wir dafür einen Vektor, der aus dem Koordinatenursprung des kartesischen Systems in einem alphabetischen 33-dimensionalen Raum hervorgeht. Er sieht folgendermaßen aus: Koordinate X A - entspricht der Anzahl der Buchstaben "a". Und es ist gleich zwei. X B - in diesem Fall ist es gleich Null, da diese Aussage keinen Buchstaben „b“ enthält. Gleiches gilt für x B - es gibt keinen Buchstaben "c". Aber x And - ist gleich 3, da die Buchstaben "und" im Kommentar dreimal vorkommen.







Abbildung 1 . , « » . «»= 2, «» =3. – xA=2, x=3.



, , ( ) , 33- S1 « », :

S1=(2;0;0;1;0;3;0;0;1;3;0;1;1;1;1;3;0;1;2;1;0;1;0;1;2;0;0;0;0;0;0;0;0)



, , « «»» ( , , «» «») « ». S2 S3 :

S2=2;0;0;0;0;2;0;0;1;2;0;1;0;1;1;1;0;1;1;1;0;1;0;0;1;0;0;0;0;0;0;0;0),



S3=2;0;0;0;0;3;0;0;0;1;0;1;1;1;2;1;0;1;1;2;0;0;0;0;1;0;0;0;0;0;0;0;0)



Nun werden wir den Unterschied zwischen den Vektoren im kartesischen Koordinatensystem des Alphabetraums finden, der sich jeweils nach der aus der analytischen Geometrie bekannten Formel ergibt:

S1,2=(x,1x,2;x,1x,2;.....;x,1x,2),(2)



Wo xn,1 und xn,2die entsprechenden Vektorkoordinaten für die Achse, die dem Buchstaben entspricht.



Abbildung 2. Die blaue Farbe zeigt den Unterschied zwischen den VektorenS1,2auf der Ebene der Buchstaben - des alphabetischen Raums.



Der Vektor, der der Differenz zwischen den Aussagen "Kontonummer eines Individuums" und "Kontonummer eines Physikers" entspricht, sieht also folgendermaßen aus:

S1,2=(0;0;0;1;0;1;0;0;0;1;0;0;1;0;0;2;0;0;1;0;0;0;0;1;1;0;0;0;0;0;0;0;0)Der

Vektor, der der Differenz zwischen den Anweisungen "Einzelkontonummer" und "Kundenkontonummer" entspricht, sieht folgendermaßen aus:

S1,3¯=(0;0;0;1;0;0;0;0;1;2;0;0;0;0;1;2;0;0;1;1;0;1;0;1;1;0;0;0;0;0;0;0;0)

,

Ferner kann die Länge der berechneten Differenzvektoren , die durch die Formel erhalten:

|S1,2¯|=(x12+x22+...+x332),(3)



Wenn Sie eine arithmetische Berechnung durchführen, erhalten Sie:

S1,2=3.32



S1,3=4.00



Dies setzt mathematisch voraus, dass der Ausdruck „Kontonummer einer Person“ näher an der „Kontonummer eines Physikers“ als an der „Kontonummer einer juristischen Person“ liegt. Dies wird durch die Längen der Differenzvektoren angezeigt. Je kürzer die Länge, desto näher sind die Aussagen in ihrer Bedeutung. Wenn wir zum Beispiel die Aussagen „Kontonummer einer Person“ und „Nummer der Filiale, in der ein Konto einer Person eröffnet wird“ nehmen und vergleichen, erhalten wir die Abbildung 6.63. Dies weist darauf hin, dass, wenn die ersten beiden Aussagen in ihrer Bedeutung dem Original nahe kommen (der Unterschied in den Vektoren 3.32 bzw. 4.00), die dritte offensichtlich trotz des scheinbar sichtbaren identischen Satzes von Wörtern sogar eine andere geschäftliche Essenz hat ...

Sie können weiter gehen und versuchen, durch Vektorisierung die Bedeutungsnähe von Kommentaren zu quantifizieren. Dazu schlage ich vor, die Projektion von Vektoren aufeinander zu verwenden. Finden Sie dann das Verhältnis zwischen der langen Projektion des verglichenen Windes und der Länge des Windes, mit dem er verglichen wird. Dieses Verhältnis ist immer kleiner oder gleich eins. Wenn die Anweisungen identisch sind, wird die Projektion dementsprechend mit dem Vektor zusammengeführt, auf den die Projektion erstellt wird. Je weiter die verglichene Aussage von Bedeutung ist, desto geringer ist die Projektion. Wenn Sie es mit 100% multiplizieren, können Sie den Übereinstimmungsgrad der vektorisierten Anweisungen in Prozent erhalten. Somit ist die Projektion des VektorsS2 verglichene Aussage S2 auf dem Vektor der ursprünglichen Aussage S1 wird durch die folgende Formel gefunden:

S2=(S1,S2)|S1|=x1x1+x1x2+...+x1x2x12+x12+....+x12,(5)



Somit ist der Grad der Einhaltung δ wird nach folgender Formel berechnet:

δ=|S2¯||S1¯|100$$=x11x21+x21x22+...+xn1xn2x12+x12+....+x12100,(6)





Abbildung 3. Abbildung einer ProjektionS2 Vektor S2 pro Vektor S1...

Es wird vorgeschlagen, diesen Parameter als Grundlage für die Bestimmung der semantischen Entsprechung zu verwenden.


Implementierung des Algorithmus in Python . Ein bisschen über Aprikose. Festlegen und Behandeln von Vektoren



Ich habe den Algorithmus Jerdella genannt . Nichts Seltsames, ich komme nur aus Rostow am Don.

. , --, , , . , , -, -, -, “”. , .

, , Python , . , . , NumPy. , , NumPy? , – , , - « », . , NumPy. — . , , PIP... Daher verwendet unsere Jerdella die Standardpakete, die in der PyCharm Community Edition für den Python 3- Interpreter enthalten sind .

Das Gute an Python ist, dass es eine Vielzahl von Datenstrukturen implementieren kann. Und warum sind wir mit einer Liste zum Aufzeichnen eines Vektors nicht zufrieden? Eine Liste von Elementen vom Typ int ist das, was Sie benötigen, um einen Vektor im alphabetischen Raum zu definieren und weitere Operationen damit durchzuführen.

Wir haben eine Reihe grundlegender Verfahren geschrieben, die ich im Folgenden kurz beschreiben werde.

Wie setze ich einen Vektor?



Ich setze den Vektor mit der folgenden Vektorprozedur:

def vector(self,a):
    vector=[]
    abc = ["", '', "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
                "", "", "", "", "", "", "", "", "", "", "", "", ""]
    for char in abc:
        count=a.count(char)
        vector.append(count)
    return(vector)




Das heißt, in der for- Schleife über die Elemente der zuvor vorbereiteten Liste abc habe ich die Standardoperation verwendet, um Anhänge an die Zählzeichenfolge zu finden . Danach wird die Verwendung von append Methode , I gefüllt in einer neuen Vektorliste , welche der Vektor für die weiteren Berechnungen wird.

Wie berechnet man die Differenz der Vektoren?



Zu diesem Zweck habe ich eine Delta- Prozedur erstellt , die zwei Listen als Eingabe verwendet - a und b .

def delta(self, a, b):
    delta = []
    for char1, char2 in zip(a, b):
        d = char1 - char2
        delta.append(d)
    return (delta)


In der for- Schleife wurde durch Iteration über beide Listen die Differenz gezählt und bei jedem Iterationsschritt zum Ende der Delta- Liste hinzugefügt , die die Prozedur schließlich als Vektor zurückgab.

Wie berechnet man die Länge eines Vektors und schätzt dabei die Differenz?



Zu diesem Zweck habe ich eine Prozedur len_delta erstellt , die eine Liste als Eingabe verwendet und durch Iteration über jedes Element dieser Liste (es ist auch eine Koordinate im alphabetischen Raum) unter Verwendung der Regel zum Finden des Vektormoduls die Länge des Vektors berechnet.

def len_delta(self, a):
    len = 0
    for d in a:
        len += d * d
    return round(math.sqrt(len), 2)


Wie berechnet man das Verhältnis der Projektion auf einen Vektor und schätzt dabei den Prozentsatz der Übereinstimmung?



Zu diesem Zweck wurde eine Vereinfachungsprozedur erstellt , die zwei Listen als Eingabe verwendet. Darin habe ich Formel (6) implementiert. Und hier ist es wichtig zu bestimmen, welcher Vektor die größte Länge hat. Für eine klarere Bewertung der Übereinstimmung ist es bequemer, einen kleineren Vektor auf einen größeren zu projizieren.

def simplify(self, a, b):
    len1 = 0
    len2 = 0
    scalar = 0
    for x in a: len1 += x * x
    for y in b: len2 += y * y
    for x, y in zip(a, b): scalar += x * y
    if len1 > len2:
        return (scalar / len1) * 100
    else:
        return (scalar / len2) * 100




Diskussion der erzielten Ergebnisse. Wir erobern den semantischen Raum, indem wir ihn strukturieren



, , Jerdella . : 1) , , . 2) -. , CRM Siebel ESB, -. , , , -. , , . … . , , , …

… 2 , Agile, , point-to-point, , .

. , , . 2-3 , , . , , , : « » « », « », « », « », , . , 3000 , 500 ? – ? . , - 3000 ?

. «» , . . Python . «». “” , . « ». , , , – .

, :



{'Kontonummer einer Person': [{4.69: 'Bankkonto des Kunden'}, {6.0: 'Nachname'}, {4.8: 'Metallkontonummer'}, {4.8: 'Kundennummer'}]}.



Dieses Diagramm kann auch grafisch dargestellt werden. Mit Wörterbüchern in Python können Sie viel anfangen ... Zur Visualisierung und Demonstration der Ergebnisse haben wir das offene Internetprojekt www.graphonline.ru verwendet . Mit dieser Plattform können Sie schnell ein mit GraphML geschriebenes Diagramm erstellen .



Abbildung 4. Diagramm der Beziehung der Entität "Nummer einer Person". Eine Illustration des Vorhandenseins von "Bahnen semantischer Korrespondenz" in einer Entität.

«» , (3) , , «» , . « » « ». , . , , , . .

? , « » «-». ( S1 ( 3) δ (5)), . , « » . , « ».

, , , . . .



5. , .

, . … , , . , – ? ? ? — . 80%, , . , . , … - – . , .

, , , , . , , «» ( 6), . «», «», «», - -. , 30% . . , . , , , .





6. «» . , .



. .



«-» . , , - . ? , -.

. - . , . : « - ». , , . « » . , , , . – « ! - »…

, , - , , « », « » « », « », « ». , « ». , . ? ? « »?

, , , , , . – .

, :

[1] . . : . . 2010.

[2]. , . , . . Python. . – . , 2019, — 368 .



P.S. Accenture — ,




All Articles