حساب التشابه بين ملفين نصيين بخوارزميّة تشابة جيب التّمام calculating similarity between text file by cosine
صفحة 1 من اصل 1 • شاطر
حساب التشابه بين ملفين نصيين بخوارزميّة تشابة جيب التّمام calculating similarity between text file by cosine
أهلا بكم
في هذا المقال سوف نتعرّف على أفضل الطرق المستخدمة في البحث عن المستندات ذاتِ العلاقة و هي خوارزميّة تشابه-جيب التّمام
تعريف خوارزمية تشابه-جيب التّمام(cosine Similarity)
المفهوم الرّياضي لتشابه-جيب التّمام Math Behind Cosine Similarity
تطبيق عمليّ على بيانات رقميّة
تطبيق عمليّ على بيانات نصيّة
يُستخدم خوارزمية تشابه-جيب التّمام في علم البيانات على سبيل المثال لا الحصر مع البيانات النصيّة لمعرفة مدى تطابق النّصوص مع بعضها البعض في عمليات البحث، وهناك العديد من محرّكات البحث مثل غوغل (google) و بينغ (Bing) التي تستخدم هذا المقياس في إيجاد الكلمات المطابقة في النصوص، بالإضافة إلى استخدامه في عملياتِ استرجاعِ البيانات واكتشاف عمليات السّرقات الأدبيّة والعديد من الاستخدامات الأخرى.وفي هذا المقال عزيزي القارئ سوف نتطرق بالشرح المفصل ل خوارزميّة تشابه-جيب التّمام لحساب التشابهة بين البيانات النصية و الرقمية
تشابه-جيب التّمام هو عبارةٌ عن مقياسٍ من خلاله نستطيع أن نحدّد مدى تطابق المستندات بغضّ النظر عن حجمها، ورياضيّاً هو عبارة عن مقياس جيب تمام الزّاوية cosine بين متجهَين في فضاءٍ ثنائيّ الأبعاد، ويمكن أن يكون هذان المتجهَان عبارةً عن بياناتٍ رقميّة أو نصيّة حيث يتم التعامل مع كائنات البيانات في مجموعة البيانات على أنها متجه
الشّكل التالى يوضّح الزّاوية بين متجهَين في فضاءٍ ثنائيّ الأبعاد.و تكون الزّاوية مقياساً للتشابه بين متجهَين، إذا كانت قيمةُ جيب التّمام تساوي 1 ذلك يعني أنّ المتجهَين متطابقان وأنّ الزّاوية بينهما تساوي صفراً، وأمّا إذا كانت قيمةُ جيب التّمام أصغرَ من الواحد فهذا يحدّد مدى تقاطع هذَين المتجهَين، وبالتالي نسبياً مدى التشابه بين كلمة البحث والبيانات.
المعادلة الرّياضية لحساب تشابه-جيب التّمام هي:
حيث أنّ :
و بالنظر للمعادلة السابقة نحد أن مقايس جيب التمام تساوي البسط حاصلَ ضربِ عناصر المتجهَين مقسوما على المقام هو حاصلُ ضرب الجذر التربيعيّ لمجموع مربعات عناصر المتّجهَين
مثال 1 : أوجد التشابة بين المتجهين X , Y رياضيا على فرض أن المتجهة X
و المتجهة Y
الحل رياضيا :
وتكون النّتيجة كما في التالي: 0.49 تقريبا حيث أن قيمة تشابه جيب التمام محصورة بين [-1،1] ، وكلما كانت القيمة أكبر من سالب واحد ، كلما كانت أكثر تشابهًا وان كانت واحد صحيح كانت التشابه مطابقا تماما
الحل باستخدام شفرة جافا
الاخراج :
و الاختلاف فى النتيجة بسبب التقريب على الالة الحاسبة
لتطبيق حساب تشابه-جيب التّمام على البيانات النصية يجب تحويل المستندات إلى متّجهات رقميّة وذلك باتعباع الخطوات التالية :
الخطوة الاولي هي سرد جميع الكلمات الموجودة فى المستند أو النص
الخطوة الثانية هي حساب تردد كل كلمة فى المستند أو النص
الخطوة الرابعة هي كتابة قيم التردد فى مصفوفة
مثال لنفترض لدى النصين التاليين :
والآن عزيزي القارئ في هذا المثال سوف نستخدم النص الاول txt1 كالاستعلام(query) الذي نبحث عن وجود متشابهٍ له في مجتوي النص الثاني txt2 باتباع الخطوات السابقة :
سرد جميع الكلمات الموجودة فى المستند أو النص
حساب تردد كل كلمة فى المستند أو النص
في هذا المقال سوف نتعرّف على أفضل الطرق المستخدمة في البحث عن المستندات ذاتِ العلاقة و هي خوارزميّة تشابه-جيب التّمام
المحتويات :
المقدّمةتعريف خوارزمية تشابه-جيب التّمام(cosine Similarity)
المفهوم الرّياضي لتشابه-جيب التّمام Math Behind Cosine Similarity
تطبيق عمليّ على بيانات رقميّة
تطبيق عمليّ على بيانات نصيّة
المقدمة :
يُستخدم خوارزمية تشابه-جيب التّمام في علم البيانات على سبيل المثال لا الحصر مع البيانات النصيّة لمعرفة مدى تطابق النّصوص مع بعضها البعض في عمليات البحث، وهناك العديد من محرّكات البحث مثل غوغل (google) و بينغ (Bing) التي تستخدم هذا المقياس في إيجاد الكلمات المطابقة في النصوص، بالإضافة إلى استخدامه في عملياتِ استرجاعِ البيانات واكتشاف عمليات السّرقات الأدبيّة والعديد من الاستخدامات الأخرى.وفي هذا المقال عزيزي القارئ سوف نتطرق بالشرح المفصل ل خوارزميّة تشابه-جيب التّمام لحساب التشابهة بين البيانات النصية و الرقمية
تعريف ماهية تشابه-جيب التّمام cosine Similarity
تشابه-جيب التّمام هو عبارةٌ عن مقياسٍ من خلاله نستطيع أن نحدّد مدى تطابق المستندات بغضّ النظر عن حجمها، ورياضيّاً هو عبارة عن مقياس جيب تمام الزّاوية cosine بين متجهَين في فضاءٍ ثنائيّ الأبعاد، ويمكن أن يكون هذان المتجهَان عبارةً عن بياناتٍ رقميّة أو نصيّة حيث يتم التعامل مع كائنات البيانات في مجموعة البيانات على أنها متجه
المفهوم الرّياضي لتشابه-جيب التّمام Math Behind Cosine Similarity
الشّكل التالى يوضّح الزّاوية بين متجهَين في فضاءٍ ثنائيّ الأبعاد.و تكون الزّاوية مقياساً للتشابه بين متجهَين، إذا كانت قيمةُ جيب التّمام تساوي 1 ذلك يعني أنّ المتجهَين متطابقان وأنّ الزّاوية بينهما تساوي صفراً، وأمّا إذا كانت قيمةُ جيب التّمام أصغرَ من الواحد فهذا يحدّد مدى تقاطع هذَين المتجهَين، وبالتالي نسبياً مدى التشابه بين كلمة البحث والبيانات.
المعادلة الرّياضية لحساب تشابه-جيب التّمام هي:
- الكود:
Cos(A, B) = A . B / ||A|| * ||B||
حيث أنّ :
- A ,B هما عبارةٌ عن المتجهَين الذَين نبحث عن تشابهٍ بينهما
- || A || و || B || = طول المتجهين "A" و "B".
- || V || * || A || = حاصل الضرب الاتجاهي للمتجهين "A" و "B".
و بالنظر للمعادلة السابقة نحد أن مقايس جيب التمام تساوي البسط حاصلَ ضربِ عناصر المتجهَين مقسوما على المقام هو حاصلُ ضرب الجذر التربيعيّ لمجموع مربعات عناصر المتّجهَين
تطبيق عمليّ على بيانات رقميّة
مثال 1 : أوجد التشابة بين المتجهين X , Y رياضيا على فرض أن المتجهة X
- الكود:
x = { 3, 2, 0, 5 }
و المتجهة Y
- الكود:
y = { 1, 0, 0, 0 }
الحل رياضيا :
- الكود:
// حاصل ضرب عناصر المتجهين
x . y = 3*1 + 2*0 + 0*0 + 5*0 = 3
// مجموع الجذر التربيعى للمتجهة X
||x|| = √ (3)^2 + (2)^2 + (0)^2 + (5)^2 = 6.16
// مجموع الجذر التربيعى للمتجهة Y
||y|| = √ (1)^2 + (0)^2 + (0)^2 + (0)^2 = 1
// قسمة حاصل ضرب عناصر المتجهين على حاصل ضرب الجذر التربيعى لعناصر الاتجاهين
∴ Cos(x, y) = 3 / (6.16 * 1) = 0.49
وتكون النّتيجة كما في التالي: 0.49 تقريبا حيث أن قيمة تشابه جيب التمام محصورة بين [-1،1] ، وكلما كانت القيمة أكبر من سالب واحد ، كلما كانت أكثر تشابهًا وان كانت واحد صحيح كانت التشابه مطابقا تماما
الحل باستخدام شفرة جافا
- الكود:
import java.util.Arrays;
import java.util.List;
public class ComputerDecision {
public ComputerDecision() {
}
// طريقة لحساب تشابة جيب التمام
public double cosineSimilarity(List<Integer> vector1, List<Integer> vector2) {
double result = 0;
result = pointMulti(vector1, vector2) / sqrtMulti(vector1, vector2);
return result;
}
// طريقة لحساب ضرب الجذر التربعيى
private double sqrtMulti(List<Integer> vector1, List<Integer> vector2) {
double result = 0;
result = squares(vector1) * squares(vector2);
result = Math.sqrt(result);
return result;
}
//طريقة لحساب مجموع مربعات العناصر للمتجهة
private double squares(List<Integer> vector) {
double result = 0;
for (Integer integer : vector) {
result += integer * integer;
}
return result;
}
// طريقة لحساب حاصل ضرب كلا الاتجاهين
private double pointMulti(List<Integer> vector1, List<Integer> vector2) {
double result = 0;
for (int i = 0; i < vector1.size(); i++) {
result += vector1.get(i) * vector2.get(i);
}
return result;
}
public static void main(String[] args) {
// انشاء المتجه الاول
List<Integer> vectorX = Arrays.asList(3,2,0,5);
// انشاء المتجهة الثاني
List<Integer> vectorY = Arrays.asList(1,0,0,0);
// انشاء كائن جديد من الفئة
ComputerDecision obj = new ComputerDecision();
// طباعة الناتج وذلك بتنفيذ طريقة حساب جيب التمام
System.out.println("Cosine Similarity between X and Y:"+obj.cosineSimilarity(vectorX,vectorY));
}
}
الاخراج :
Cosine Similarity between X and Y:0.48666426339228763
و الاختلاف فى النتيجة بسبب التقريب على الالة الحاسبة
تطبيقٌ عمليّ على بيانات نصيّة
لتطبيق حساب تشابه-جيب التّمام على البيانات النصية يجب تحويل المستندات إلى متّجهات رقميّة وذلك باتعباع الخطوات التالية :
الخطوة الاولي هي سرد جميع الكلمات الموجودة فى المستند أو النص
الخطوة الثانية هي حساب تردد كل كلمة فى المستند أو النص
الخطوة الرابعة هي كتابة قيم التردد فى مصفوفة
مثال لنفترض لدى النصين التاليين :
- الكود:
String txt1="i love egypit"
String txt2="i love egy"
والآن عزيزي القارئ في هذا المثال سوف نستخدم النص الاول txt1 كالاستعلام(query) الذي نبحث عن وجود متشابهٍ له في مجتوي النص الثاني txt2 باتباع الخطوات السابقة :
سرد جميع الكلمات الموجودة فى المستند أو النص
- الكود:
{i ,love ,egypit,egy}
حساب تردد كل كلمة فى المستند أو النص
الكلمة | i | love | egypit | egy |
النص الاول | 1 | 1 | 1 | 0 |
النص الثاني | 1 | 1 | 0 | 1 |
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: حساب التشابه بين ملفين نصيين بخوارزميّة تشابة جيب التّمام calculating similarity between text file by cosine
السلام عليكم ورحمه الله وبركاته
| |
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
أمس في 8:32 pm من طرف moslema_r
» تصميم تطبيق خاص بالكورسات
أمس في 7:23 am من طرف mona mohamed
» حداد هناجر
السبت مايو 18, 2024 8:57 pm من طرف moslema_r
» ارخص شركة تنظيف ثريات بالرياض
الخميس مايو 16, 2024 7:32 pm من طرف moslema_r
» تصميم تطبيق للأسر المنتجة
الأربعاء مايو 15, 2024 10:41 am من طرف mona mohamed
» شركة تنظيف منازل ام القيوين
الثلاثاء مايو 14, 2024 7:50 pm من طرف moslema_r
» شركة تنظيف محلات بالرياض
الثلاثاء مايو 14, 2024 7:34 pm من طرف moslema_r
» تصميم تطبيق مثل حراج
الثلاثاء مايو 14, 2024 9:59 am من طرف mona mohamed
» تصميم تطبيق نقل أثاث
الإثنين مايو 13, 2024 10:30 am من طرف mona mohamed
» افضل شركة تنظيف ستائر بالرياض
الأحد مايو 12, 2024 7:57 pm من طرف moslema_r