Jerdellaアルゴリズム:銀行ITシステムにおけるセマンティックマッドネスの問題の解決

ITシステムのセマンティック問題。多くの異なる人々が作成し始めるとどうなりますか

古代都市バビロンの人々がどのようにして塔を建て始めたかについての旧約聖書の伝説がありますが、全能者は彼らの舌を混ぜ合わせ、塔は完成しませんでした。確かに、塔は何百もの小さなグループによって建てられましたが、彼らは一緒にお互いを理解していませんでした。そして、お互いを理解しなければ、相互作用することは不可能です。確かに、同じことを別の言葉で同じ意味で呼ぶのは単に狂気です。そして、ここで驚くべきことは何もありません。

旧約聖書の伝説は、現代のITソリューションを実装している現代の大企業に簡単に移すことができます。そのような企業の例は、間違いなく、独自のルールと独自の事業回転率に基づいて構築された独自のコミュニケーションサブカルチャーを持つ数百とは言わないまでも数十のビジネスユニットを持っている現代のロシアの銀行に起因する可能性があります。当然、ITインフラストラクチャを形成する際には、チーム内で確立されたビジネスエンティティの命名スタイルが考慮されます。過去10年間で、このトピックに関する多くの作品が登場しました。たとえば、これは[1]です。銀行で情報システム分析に出くわした人は、データのいわゆる「マッピング」を行うことの意味を知っています。特に、エンドシステムがアナリスト、開発者、顧客またはベンダーのさまざまなチームによって作成された場合はそうです。通常、マッピングの60%のコンパイルは、送信されたデータの本質とセマンティクスを理解しています

現在の傾向は、一連の機敏な方法論を使用することです。誰もがアジャイルについて話している。あなたはそれがビジネスに良いのか害になるのか、かすれた点まで議論することができます。しかし、1つのことが誰もが拒否することはありません。アジャイルの過程で、銀行内とさまざまなベンダーの両方の多くの異なるチームが、ビジネス向けのさまざまなITソリューションを作成し、多くの場合、チームは互いに対話することなく、独自の確立された用語を作成します。そして、統合が行われる瞬間に、旧約聖書に記載されているのと同じ状況が起こります。何千もの商人、店、商品、聖なる愚か者、偽物、そして火を食べる人がいるバビロニアのバザールにどのように似ていませんか?そして、さまざまなアイデアや考えを持ったこれらすべての人々が、タワーを建設し始めます。

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)



ここで、対応する位置の各x座標は、excelファイル内のフィールドコメントの対応する文字の番号です。たとえば、「個人口座番号」というコメントがあります。私たちはそれをアルファベット33次元空間におけるデカルトシステムの座標原点から出てくるのベクトルを比較してみましょう、それは次のようになります。X座標Aを-文字の数に相当します「」。そしてそれは2に等しい。X B-このステートメントには文字「b」がないため、この場合はゼロになります。同じは、xに適用されるB -何の文字「c」はありません。しかし、X-は手紙以来、3に等しいこと「と」コメントに3回発生します。







図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)



ここで、アルファベット空間のカルテシアン座標系のベクトル間の違いを見つけます。これは、分析ジオメトリからよく知られている式に従って、それぞれ見つかります。

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



どこ xn,1 そして xn,2文字に対応する軸に対応するベクトル座標。



図2. 青色はベクトル間の違いを示していますS1,2アルファベット順のスペースの文字-の平面上。



したがって、「個人の口座番号」と「物理学者の口座番号」のステートメントの違いに対応するベクトルは、次のようになります。

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)

「個人アカウント番号」と「クライアントアカウント番号」のステートメントの違いに対応するベクトルは次のようになります。

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)



さらに、次の式によって得られる計算された差ベクトルの長さ:

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



算術計算を行うと、次のようになります。

S1,2=3.32



S1,3=4.00



これは数学的に、「個人の口座番号」というフレーズは、「法的実体の口座番号」よりも「物理学者の口座番号」に近い意味であると想定しています。これは、差ベクトルの長さによって示されます。長さが短いほど、ステートメントの意味が互いに近くなります。たとえば、「個人の口座番号」と「個人の口座が開設されている支店の番号」という文を比較すると、図6.63が得られます。これは、最初の2つのステートメントの意味が元のステートメントに近い場合(それぞれベクトル3.32と4.00の違い)、3番目のステートメントは、一見同じ単語のセットであるにもかかわらず、明らかに異なるビジネスエッセンスを持っていることを示します。 ..。

さらに進んで、ベクトル化を通じて、意味におけるコメントの近さを定量化することを試みることができます。このために、ベクトルの相互投影を使用することを提案します。次に、比較対象の風の長い投影と、比較対象の風の長さの比率を求めます。この比率は常に1以下になります。したがって、ステートメントが互いに同一である場合、射影は射影が行われるベクトルとマージされます。比較されたステートメントの意味が遠ければ遠いほど、予測は少なくなります。これに100%を掛けると、ベクトル化されたステートメントの対応度をパーセントで取得できます。したがって、ベクトルの投影S2 比較ステートメント S2 元のステートメントのベクトル上 S1 次の式で求められます。

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



したがって、コンプライアンスの程度 δ 次の式を使用して計算されます。

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





図3. 投影の図S2 ベクター S2 ベクトルごと S1..。

セマンティック対応を決定するための基礎として採用することが提案されているのは、このパラメータです。


Pythonでのアルゴリズムの実装アプリコットについて少し。ベクトルを設定および処理する方法



アルゴリズムにJerdellaという名前を付けました何も奇妙なことではありません、私はロストフオンドンから来ました。

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

, , Python , . , . , NumPy. , , NumPy? , – , , - « », . , NumPy. — . , , PIP..。したがって、私たちのJerdellaは中に含まれる標準パッケージを使用しますPyCharmコミュニティ版をするためにはPython 3のインタプリタ

したがって、Pythonの良いところは、さまざまなデータ構造を実装できることです。そして、なぜベクトルを記録するためのリストに満足できないのですか?タイプintの要素のリストは、アルファベット順のスペースでベクトルを定義し、それを使用してさらに操作するために必要なものです。

いくつかの基本的な手順を記述しましたが、以下に簡単に説明します。

ベクトルを設定するにはどうすればよいですか?



次のベクトル手順でベクトルを設定します。

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




つまり、前に準備したリストabcの要素のforループ、標準操作を使用してカウント文字列への添付ファイルを検索しましたその後、appendメソッドを使用して、新しいベクトルリスト入力しました。これは、さらに計算するためのベクトルになります。

ベクトルの差を計算する方法は?



これを行うために、2つのリスト(ab)を入力として受け取るデルタプロシージャを作成しました

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


for ループでは、両方のリストを反復処理することにより、差異がカウントされ、各反復ステップでデルタリストの最後に追加され、プロシージャは最終的にベクトルとして返されました。

ベクトルの長さを計算し、それによって差を推定する方法は?



これを行うために、リストを入力として受け取るプロシージャlen_deltaを作成し、このリストの各要素(アルファベット空間の座標でもあります)を繰り返して、ベクトルモジュールを見つけるためのルールに従って、ベクトルの長さを計算します。

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


ベクトルへの投影の比率を計算して、一致の割合を推定するにはどうすればよいですか?



このために、2つのリストを入力として受け取る単純化手順が作成されました。その中で、式(6)を実装しました。そしてここで重要な点は、どのベクトルが最大の長さを持つかを決定することです。一致評価をより明確にするために、小さいベクトルを大きいベクトルに投影する方が便利です。

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




得られた結果の議論。セマンティックスペースを構造化して征服する



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

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

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

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

, :



{'個人の口座番号':[{4.69: 'クライアントの銀行口座'}、{6.0: '姓'}、{4.8: '金属口座番号'}、{4.8: 'クライアント番号'}]}。



この図は、グラフ形式で視覚化することもできます。Pythonの辞書で多くのことができます...結果の視覚化とデモンストレーションのために、オープンインターネットプロジェクトwww.graphonline.ruを使用しましたこのプラットフォームを使用すると、GraphMLを使用して記述されたグラフをすばやく作成できます



図4. エンティティ「個人の数」の関係のグラフ。エンティティ内の「意味的対応の軌道」の存在の図。

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

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

, , , . . .



5. , .

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

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





6. «» . , .



. .



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

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

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

, , , , , . – .

, :

[1] . . : . . 2010.

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



P.S. Accenture — ,




All Articles