كيفية حساب مسافة ليفنشتاين بالـ 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