خوارزمية Jerdella: حل مشاكل الجنون الدلالي في أنظمة تكنولوجيا المعلومات بالبنك

المشاكل الدلالية في أنظمة تكنولوجيا المعلومات. ماذا يحدث عندما يبدأ العديد من الأشخاص المختلفين في الإنشاء

هناك أسطورة من العهد القديم حول كيف بدأ الناس في مدينة بابل القديمة في بناء برج ، لكن الله سبحانه وتعالى خلط ألسنتهم ، ولم يكتمل البرج. مع ذلك ، لأن البرج تم بناؤه بواسطة مئات المجموعات الصغيرة ، التي لم تفهم بعضها البعض معًا. وبدون فهم بعضنا البعض ، من المستحيل التفاعل. في الواقع ، من الجنون أن نطلق على نفس الشيء ، مما يعني أنه نفس الشيء ، بكلمات مختلفة. ولا يوجد شيء يثير الدهشة هنا.

يمكن نقل أسطورة العهد القديم بسهولة إلى الشركات الكبيرة الحديثة التي تطبق حلول تكنولوجيا المعلومات الحديثة. يمكن أن يُعزى مثال على هذه الشركات ، بلا شك ، إلى البنوك الروسية الحديثة ، التي لديها العشرات أو حتى المئات من وحدات الأعمال ، التي لها ثقافتها الفرعية الخاصة بالاتصالات ، المبنية على قواعدها الخاصة وأسلوبها الفريد في معدل دوران الأعمال. بطبيعة الحال ، عند تشكيل البنية التحتية لتكنولوجيا المعلومات ، يتم أخذ أسلوب تسمية الكيانات التجارية التي تم إنشاؤها في الفريق في الاعتبار. على مدى السنوات العشر الماضية ، ظهرت العديد من الأعمال حول هذا الموضوع ، على سبيل المثال هذا العمل [1]. يعرف أولئك الذين صادفوا تحليلات نظم المعلومات في البنوك ما يعنيه القيام بما يسمى "تعيين" البيانات ، خاصةً إذا تم إنشاء الأنظمة النهائية بواسطة فرق مختلفة من المحللين والمطورين والعملاء أو البائعين. عادة،60٪ من تجميع الخرائط هو فهم لجوهر ودلالات البيانات المرسلة.

الاتجاه الحالي هو استخدام مجموعة من المنهجيات الرشيقة. الجميع يتحدث عن Agile . يمكنك الجدال إلى حد البحة سواء كان ذلك مفيدًا للعمل أو للضرر. لكن شيئًا واحدًا لن يجعل أي شخص يرفض. في سياق أجايل ، تقوم العديد من الفرق المختلفة ، سواء داخل البنك أو من بائعين مختلفين ، بإنشاء مجموعة متنوعة من حلول تكنولوجيا المعلومات للأعمال ، وفي كثير من الأحيان ، دون التفاعل مع بعضها البعض ، تقوم الفرق بإنشاء المصطلحات الراسخة الخاصة بها. وفي اللحظة التي يحدث فيها الاندماج ، يحدث نفس الموقف الموصوف في العهد القديم. كيف لا يشبه البازار البابلي بآلاف التجار والمتاجر والبضائع والحمقى المقدسين والفقراء وأكلى النار؟ وهكذا ، بدأ كل هؤلاء الأشخاص ، مسلحين بأفكار مختلفة وأفكار مختلفة ، في بناء البرج.

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)



حيث يكون كل إحداثي س في الموضع المقابل هو رقم الحرف المقابل لتعليق الحقل في ملف Excel. على سبيل المثال ، لدينا التعليق "رقم الحساب الفردي". دعونا نقارن له متجهًا ينشأ من أصل إحداثيات النظام الديكارتي في فضاء أبجدي مكون من 33 بعدًا ، سيبدو كما يلي: تنسيق X A - يتوافق مع عدد الأحرف "a" وهو يساوي اثنين. X B - في هذه الحالة سيكون مساويًا للصفر ، حيث لا يوجد الحرف "b" في هذه العبارة. الأمر نفسه ينطبق على x B - الحرف " B " مفقود. لكن x و - ستكون مساوية لـ 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. سيشير هذا إلى أنه إذا كانت العبارتان الأوليان متقاربتان في المعنى من الأصل (الاختلاف في المتجهين 3.32 و 4.00 ، على التوالي) ، فمن الواضح أن العبارة الثالثة سيكون لها جوهر عمل مختلف ، على الرغم من مجموعة الكلمات المتطابقة الظاهرة على ما يبدو ...

يمكنك أن تذهب أبعد من ذلك وتحاول ، من خلال التوجيه ، تحديد مدى قرب التعليقات في المعنى. للقيام بذلك ، أقترح استخدام الإسقاطات المتجهة فوق بعضها البعض. ثم أوجد النسبة بين الإسقاط الطويل للرياح المقارنة وطول الإسقاط الذي تتم مقارنتها به. ستكون هذه النسبة دائمًا أقل من أو تساوي واحدًا. وبناءً على ذلك ، إذا كانت العبارات متطابقة مع بعضها البعض ، فسيتم دمج الإسقاط مع المتجه الذي تم عمل الإسقاط عليه. كلما زاد معنى العبارة المقارنة ، قل الإسقاط. إذا قمت بضربها في 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...

هذه هي المعلمة التي يُقترح أن تؤخذ كأساس لتحديد المراسلات الدلالية.


تنفيذ الخوارزمية في بايثون . قليلا عن المشمش. كيفية ضبط النواقل والتعامل معها



سميت الخوارزمية Jerdella . لا شيء غريب ، أنا فقط من روستوف أون دون.

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

, , Python , . , . , NumPy. , , NumPy? , – , , - « », . , NumPy. — . , , PIP... لذلك، لدينا Jerdella سوف تستخدم حزم القياسية المدرجة في PyCharm الجماعة الطبعة ل بيثون 3 مترجم .

لذا ، فإن الشيء الجيد في Python هو أنها تتمتع بالقدرة على تنفيذ مجموعة متنوعة من هياكل البيانات. ولماذا نحن غير راضين عن قائمة لتسجيل متجه؟ قائمة العناصر من النوع int هي ما تحتاجه لتعريف متجه في الفراغ الأبجدي وعمليات أخرى معه.

لقد كتبنا عددًا من الإجراءات الأساسية التي سأصفها بإيجاز أدناه.

كيف أقوم بتعيين متجه؟



لقد قمت بتعيين المتجه باستخدام إجراء المتجه التالي:

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




أي في الحلقة for على عناصر قائمة abc المعدة مسبقًا ، استخدمت العملية القياسية للعثور على مرفقات بسلسلة العد . بعد ذلك ، باستخدام طريقة الإلحاق ، قمت بملء قائمة متجه جديدة ، والتي ستكون المتجه لمزيد من العمليات الحسابية.

كيف تحسب الفرق في النواقل؟



للقيام بذلك ، قمت بإنشاء إجراء دلتا يأخذ قائمتين كمدخلات - أ و ب .

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)


كيف تحسب نسبة الإسقاط على المتجه وبالتالي تقدير النسبة المئوية للمصادفة؟



لهذا، و تبسيط و تم إنشاء الإجراء يأخذ قائمتين كإدخال. في ذلك ، قمت بتنفيذ الصيغة (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: 'Client's bank account'} ، {6.0: 'Last name'} ، {4.8: 'Metal account number'} ، {4.8: 'Client number'}]}.



يمكن أيضًا تصور هذا الرسم البياني في شكل رسم بياني. يمكنك فعل الكثير باستخدام القواميس في بايثون ... لتصور النتائج وعرضها ، استخدمنا مشروع الإنترنت المفتوح 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