سؤال

أنا أحاول خارج مكتبة Difflib.لدي قوائمان: L_1 و L_2 تحتوي على سلاسل.أريد أن أعرف، إذا كانت هذه التسلسلات مماثلة (أمر غير مهم). giveacodicetagpre. يجب أن يكون

على ما يرام.ولكن giveacodicetagpre. يجب أن لا يكون

على ما يرام.

لقد توصلت إلى فكرة التكرار خلال القائمة الأولى l_1 ومطابقة كل عنصر من عنصر l_1 بواسطة الطريقة giveacodicetagpre.

مقابل القائمة الثانية L_2.إذا كان هناك تطابق مع نسبة أكبر، فلن نقول 0.7 إزالته من L_2 والمتابعة.لكنني أشك في أنها خطة جيدة.هل هناك واحد أفضل؟

هل كانت مفيدة؟

المحلول

I would do something like:

import difflib

L_1 = ["Bob", "Mary", "Hans"]
L_2 = ["Bob", "Marie", "Hans"]

def similiarity(L_1, L_2):
    L_1 = set(intern(w) for w in L_1)
    L_2 = set(intern(w) for w in L_2)

    to_match = L_1.difference( L_2)
    against = L_2.difference(L_1)
    for w in to_match:
        res = difflib.get_close_matches(w, against)
        if len(res):
            against.remove( res[0] )
    return (len(L_2)-len(against)) / (len(L_1))

print similiarity(L_1,L_2)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top