تقنية

SequenceMatcher في بايثون: تبديل المدخلين قد يغير النسبة

تبديل aba وbca يغير النسبة
نسب المثال بكسور. [1] [2]

جرّب الاتجاهين. [1] [2]

الخلاصة السريعة

ratio() قد يتغير عند تبديل المدخلين. [1] [2]

  • aba مقابل bca يعطي 1/3. [1] [2]
  • العكس يعطي 2/3. [1] [2]
  • مجموع الطولين T=6 في الاتجاهين. [1] [2]
  • المطابق المختار M يتغير من 1 إلى 2؛ النسبة 2M/T. [1] [2]
  • اختبرنا 3.12.14 وسلاسل بثلاثة أحرف، دون دالة تجاهل؛ لا نعمم على كل زوج. [1] [2]

المثال

import difflib as d
for a,b in [
 ('aba','bca'),('bca','aba')]:
 s=d.SequenceMatcher(None,a,b)
 print(s.ratio())

[1] [2]

المخرجات: 0.3333333333333333 ثم 0.6666666666666666. [1] [2]

سبب الاختلاف

عند تعادل أطول الكتل، يُفضل أسبقها في المدخل الأول. الأول يختار a وحده؛ العكس b ثم a. [1] [2]

الفهارس من صفر، بالترتيب (a,b): الأول (0,2). في العكس (0,1)، ثم (2,2). [1] [2]

الحساب

العدد المطابق هنا مجموع أحجام الكتل المختارة: 2×1/6=1/3 أو 2×2/6=2/3. [1] [2]

عدد الأحرف المطابقة المختارة يتغير
T=6 في الاتجاهين. [1] [2]

النطاق

الاختلاف هنا من التعادل؛ ليست السلاسل الطويلة موضوع التجربة. [1] [2]

المراجع

  1. Python: SequenceMatcher
  2. CPython 3.12.14: difflib.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.