كيفية حساب مسافة ليفنشتاين بالـ r (مع الأمثلة)


مسافة Levenshtein بين سلسلتين هي الحد الأدنى لعدد تغييرات الحرف الواحد المطلوبة لتحويل كلمة إلى أخرى.

كلمة “تعديلات” تشمل الإبدال والإدراج والحذف.

على سبيل المثال، لنفترض أن لدينا الكلمتين التاليتين:

  • لنحتفل
  • حديقة

مسافة ليفنشتاين بين الكلمتين (أي عدد التغييرات التي نحتاج إلى إجرائها لتحويل كلمة إلى أخرى) ستكون 2 :

مثال على مسافة ليفنشتاين

من الناحية العملية، يتم استخدام مسافة ليفنشتاين في العديد من التطبيقات المختلفة، بما في ذلك مطابقة السلسلة المبهمة، والتدقيق الإملائي، ومعالجة اللغة الطبيعية.

يشرح هذا البرنامج التعليمي كيفية حساب مسافة Levenshtein بين السلاسل في R باستخدام الدالة stringdist() ‎ لحزمة stringdist في R.

تستخدم هذه الوظيفة بناء الجملة الأساسي التالي:

 #load stringdist package
library(stringdist)

#calculate Levenshtein distance between two strings
stringdist(" string1 ", " string2 ", method = " lv ")

لاحظ أن هذه الوظيفة يمكنها حساب العديد من قياسات المسافة المختلفة. من خلال تحديد الطريقة = “lv”، نخبر الدالة بحساب مسافة Levenshtein.

مثال 1: مسافة ليفنشتاين بين سلسلتين

يوضح التعليمة البرمجية التالية كيفية حساب مسافة Levenshtein بين السلسلتين “party” و”park” باستخدام الدالة stringdist() :

 #load stringdist package
library(stringdist)

#calculate Levenshtein distance between two strings
stringdist(' party ', ' park ', method = ' lv ')

[1] 2

وتبين أن مسافة ليفنشتاين هي 2 .

مثال 2: مسافة ليفنشتاين بين متجهين

يوضح الكود التالي كيفية حساب مسافة Levenshtein بين كل مجموعة زوجية من السلاسل في متجهين مختلفين:

 #load stringdist package
library(stringdist)

#definevectors
a <- c('Mavs', 'Spurs', 'Lakers', 'Cavs')
b <- c('Rockets', 'Pacers', 'Warriors', 'Celtics')

#calculate Levenshtein distance between two vectors
stringdist(a, b, method=' lv ')

[1] 6 4 5 5

وطريقة تفسير النتيجة هي كما يلي:

  • مسافة ليفنشتاين بين “Mavs” و “Rockets” هي 6 .
  • مسافة ليفنشتاين بين “سبيرز” و”بيسرز” هي 4 .
  • مسافة ليفنشتاين بين «الليكرز» و«وريورز» هي 5 .
  • مسافة ليفنشتاين بين “كافس” و”سيلتيكس” هي 5 .

مثال 3: مسافة ليفنشتاين بين أعمدة إطار البيانات

يوضح الكود التالي كيفية حساب مسافة Levenshtein بين كل مجموعة زوجية من السلاسل في عمودين مختلفين لإطار البيانات:

 #load stringdist package
library(stringdist)

#define data
data <- data.frame(a = c('Mavs', 'Spurs', 'Lakers', 'Cavs'),
                   b = c('Rockets', 'Pacers', 'Warriors', 'Celtics'))

#calculate Levenshtein distance
stringdist(data$a, data$b, method=' lv ')

[1] 6 4 5 5

يمكننا بعد ذلك إضافة مسافة Levenshtein كعمود جديد في إطار البيانات إذا أردنا:

 #save Levenshtein distance as vector
lev <- stringdist(data$a, data$b, method=' lv ')

#append Levenshtein distance as new column
data$lev <- lev

#view data frame
data

       ab lev
1 Mavs Rockets 6
2 Spurs Pacers 4
3 Lakers Warriors 5
4 Cavs Celtics 5

مصادر إضافية

كيفية حساب مسافة هامينغ في R
كيفية حساب المسافة الإقليدية في R
كيفية حساب المسافة من مانهاتن في R

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *