• Levenshteyin jadvali
  • Til va madaniyat amaliy filologiya




    Download 0,51 Mb.
    Pdf ko'rish
    bet7/12
    Sana22.01.2024
    Hajmi0,51 Mb.
    #143201
    1   2   3   4   5   6   7   8   9   ...   12
    Bog'liq
    n.xudayberganov sh.hasanov til va madaniyat

    75
    Tabiiy tilni qayta ishlashda so‘zlar orasidagi masofani aniqlash algoritmlaridan foydalanish
     2-rasm. Levenshteyin masofasini aniqlashga oid misollar
    O‘zgarishlar soni: 1ta belgi qo‘shish, 1ta belgi almashtirish 
    va 5ta belgini o‘chirish. Demak, Levenshteyin masofasi = 7ga teng 
    bo‘ladi.
    Levenshteyin jadvali - bu 2 o‘lchamli massiv bo‘lib, lev[i][j] - 
    Levenshteyin masofasining qiymatiga teng bo‘ladi. Bunda: i = ‘a’ satr 
    uzunligi] va j = [‘b’ satr uzunligi] [Grashchenko, 2022] 

    3-rasm. Levenshteyin jadvalini hosil qilish qoidasi
    Berilgan formula orqali Levenshteyin jadvali hosil qilinadi.
    4-rasm. Levenshteyin jadvali
    Psevdokodi
    function LEVDIST(a,b)
    if a.size() == 0 then
    return b.size();
    end
    if b.size() == 0 then
    return a.size();
    end
    indicator ← a[0] 0 ≠ b[0] ? 1 : 0;
    return Minimum(


    76
    Nizomaddin XUDAYBERGANOV, Shaxboz HASANOV 
    LEVDIST(a.substr(1),b)+1,
    // 
    oʻchirish;
    LEVDIST(b.substr(1),a)+1,
    // 
    qoʻshish;
    LEVDIST(a.substr(1),b.substr(1))+indicator);
    // 
    almashtirish;
    end
    Python dasturlash tiliga tatbig‘i. Avvalambor, berilgan 
    satrlar uzunligi orqali maxsus Levenshteyin jadvalimizni hosil 
    qilamiz. Keyingi qadamlarni kerakli bo‘lgan qiymatlarni hisoblash 
    hamda ularni maxsus jadvalga saqlash orqali olib boriladi.
    #Levenshteyn algoritmi
    # ‘a’ va ‘b’ qiymatlarni aniqlash:
    a = “matematika”
    b = “maktab”
    # lev o‘zgaruchi massivini rows = len(a) + 1 va 
    columns = len(b) + 1 orqali kiritish
    lev = [[0 for i in range(len(b) + 1)] for j in 
    range(len(a) + 1)]
    # Birinchi qatordagi(row) sonlarni aniqlash:
    for i in range(len(a) + 1):
    lev[i][0] = i
    # Birinchi ustundagi(column) sonlarni aniqlash:
    for j in range(len(b) + 1):
    lev[0][j] = j
    for i in range(1, len(a) + 1):
    for j in range(1, len(b) + 1):
    if a[i - 1] == b[j - 1]:
    lev[i][j] = lev[i - 1][j - 1]
    else:
    insertion = 1 + lev[i][j - 1] 
    #belgini qo‘shish 
    deletion = 1 + lev[i - 1][j] 
    #belgini o‘chirish
    replacement = 1 + lev[i - 1][j - 1] 
    #belgini almashtirish


    Tabiiy tilni qayta ishlashda so‘zlar orasidagi masofani aniqlash algoritmlaridan foydalanish
    77
    # Eng foydali o‘zgarishni 
    tanlash:
    lev[i][j] = min(insertion, 
    deletion, replacement)
    #Levenshtein Masofasini ekranga chiqar
    print(“Levenshtein Masofasi: “, lev[len(a)][len(b)])

    Download 0,51 Mb.
    1   2   3   4   5   6   7   8   9   ...   12




    Download 0,51 Mb.
    Pdf ko'rish