خوارزمية لقياس الإرتباط بين عناوين الأخبار

أنا مهتم بمعرفة إذا مرت عليكم مثل هذه الخورازمية التي تسعى إلى التمييز بين عناوين الأخبار بحيث تعثر على العناوين المتشابهة والتي تتحدث عن نفس الخبر، مثل هذه الخورازمية قد تساعد كثير في تحسين قراءة الخلاصات.

أحد الأمور التي فكرت فيها هو قياس عدد الكلمات المتكررة في كل خبر لقياس الإرتباط لكن كلمة واحدة قد تغير كل المعنى، مثال:

  • مايكروسوفت قامت بإطلاق ويندوز 8

  • مايكروسوفت قامت بإطلاق أوفيس 2013

هل من مصادر وأفكار؟

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

26

هناك عدة خطوات يجب اتخاذها وشخصيا عندي تجربة في هذا الموضوع والنتائج مرضية إلى حد كبير:

1- ازالة الكلمات المتكررة و التي تتكون من اقل من حرفين مثل (في من عن على ووو) .

2- ارجاع كل الكلمات إلى الجذر باستخدام خوارزمية اخرى لان هناك اختلاف في التصريف النحوي مثل يمنيون ويمنيين.

3- القيام بعملية التفقيط (اي ازالة تركيبة الشيفت مع حرف التاء مثل كلمة يــمــن تحول إلى يمن).

4- التخلص من كل علامات الترقيم والتنصيص والحصر.

5- تسوية بعض الحروف وارجاعها إلى صيغة واحدة مثل الالف مع الهمزة بحيث تصبح كلها شكل واحد مثل كلمة ابناء و أبناء يتم ارجاع كل الف بدون همز للخصول على افضل نتائج. وايضا مثل التاء المربوطة والهاء وهكذا.

6- من العناصر المهمة هو معرفة الفئة التي يتنمي لها الخبر مثل رياضة او سياسية بحيث يتم تمييز بين عناوين بسهولة اكثير والحصول على نتائج افضل.

7- ايضا يفضل الحد بالفارق الزمني بين خبرين لمدة اسبوع مثلا اكثر من ذلك صعب ان يكون هناك تاشبه.

8- يتم توحيد صيغة الارقام سواء كتابيا او رقيما مثلا تحول ثلاثون الف إلى 30000.

9- التخلص من آل التعريف من كل الاسماء.

10- اعتماد على بعض دوال لغات البرمجة لايجاد التشابة النسبي بين العناوين بعد القيام بكل الاجراءات السابقة وهذه تختلف من لغة إلى اخرى.

بصراحة هذي فكرة رائعه ولم احاول في هذا الامر ولكن رد الاخ muadshibani جميل جدا ويعطي رؤوس اقلام حول المطلوب تنفيذه. قد تكون مشكلة اللغة العربية اصعب في التنفيذ من اللغة الانجليزية.

الفكرة في التمييز بين عناوين وتحديد مدى تشابهها استهوتني وان كان هناك من يساعد فانا جاهز للبدء بمشروع مفتوح المصدر يقدم هذا الامر باللغة التي اعرفها (PHP!).

في رد الاخ معاذ

10- اعتماد على بعض دوال لغات البرمجة لايجاد التشابة النسبي بين العناوين بعد القيام بكل الاجراءات السابقة وهذه تختلف من لغة إلى اخرى.

هل هناك لغات معينة (افضل من اللغات الاخرى) او دوال معينة يمكنها اجراء هذا الامر؟

يمكنك العثور على الكثير من التوابع والوظائف الأولية التي سبق وأن أشرت إليها في إقتراحك جاهزة ومتاحة في مكتبة PHP واللغة العربية:

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

تعليقات سريعة

*على النقطة 2 هي أن ليس بالضرورة أن يكون لكل كلمة جذر، خصوصاً لو تحدثنا عن الأخبار التقنية أو العالمية والتي تمتلئ بالكلمات المعربة (مع ذلك فكرة رائعة).

*6 هي أحد الأفكار التي طرأت على بالي لكنها تحتاج إلى وقت من أجل بناء قاعدة بيانات جيدة.

الحالة التي لدي هي كالتالي:

  • لدي قاعدة فيها حوالي 300 الف خبر

  • اعتمد على محرك بحث خارجي يحتوي على فهرس (index) لكافة سجلات القاعدة يمكن البحث فيه بوساطة API ويمكن البحث بدلالة كلمة او تاريخ او كلاهما. ولكن للاسف محرك البحث لدي لا يستطيع تحديد فئة الخبر كما هو مذكور في رد معاذ نقطة 6

لهذا فان الحل برايي في حالتي لمعرفة الاخبار المتشابهه هو تنفيذ ما ورد اعلاه من رد الاخ معاذ

1 و 2 (ان امكن) و 3 و 4 و 5

بعدها لو وردنا الخبر س وكنت ارغب بمعرفة هل هناك اخبار مشابهه لهذا الخبر في القاعدة فانني بعد تنفيذ ما ورد اعلاه على عنوان الخبر اقوم على تمرير طلب لمحرك البحث للبحث عن الاخبار بدلالة كلمات البحث التي تم استخلاصها من العنوان بشرط و and بين كل كلمة وبشرط تصفيه هو تاريخ النشر لا يزيد عن 3 ايام مضت لتاريخ نشر الخبر الحالي.

وبالتالي فان النتيجة التي يعديها محرك البحث لاي اخبار تكون على الاغلب وبنسبة كبيرة لاخبار مطابقة للخبر س.

ربما ان الامر سهل نظريا لكن عمليا قد يختلف بعض الشيء خصوصا اذا ما تبادر لذهننا السؤال : لماذا اصلا نريد ادارة المتشابهات هل فقط لمجرد العلم بالشيء ام لاجراء عمليات على الخبر نفسه مثلا ربطه باخبار اخرى او تقليل رتبته ليتم عرضه في الاسفل ام لمعرفة من هو الناشر الاصلي الاول لهذا الخبر.

عموما هي فكرة جميلة جدا ، وكما اسلفت اعلاه فقد استهوتني واحاول الخروج بالية معينة لهذا الامر ولكن ما ورد في هذة الصفحة كان ومضة كنت محتاج لها.

لست مبرمجا، لكن بالنسبة للنقطة 6: مثلا خبر نظام أندرويد هو نظام تشغيل السيارة الرياضية كذا

من الصعب جدا معرفة التصنيف من العنوان بشكل آلي

لكن عموما عندما تصلك أخبار فستصل من عدة مواقع مختصة وستتمكن من فصلها غالبا ولو بشكل أولي، أمر آخر وهو تصنيف الموضوع و/أو الوسوم TAGS ستسهل من عملية فلترة الأخبار ولو أنها بعيدة عن العمل على العنوان نفسه الذي تريدونه

كنت طورت خوارزمية لقياس التشابه بين العناوين باللغة الفرنسية، الخوارزمية تعطي نتائج ممتازة، الخوارزمية طورتها بالجافا و تعتمد على قياس التشابه باستعمال طريقة احصائية من خلال الإعتماد على الtf idf و قياس الcosinus. إذا أردت المساعدة يمكنني المساعدة مجال بحثي يهتم بهذه المشاكل، أنا في الخدمة.

هل يمكن اعطاء رؤوس اقلام عن هذه الخوارزمية؟

وهل هي مفتوحة المصدر؟

15

الخوارزمية سهلة تعتمد على اعطاء وزن لكل كلمة موجودة من خلال عدد تكرارها : الكلمة ذات الوزن الكبير هي الكلمة تعتمد على تكراره في مجموع النصوص، و هذا ما يسمى بالtfidf و التي تساوي ضرب تكرار الكلمة في النصوص tf في مقلوب عدد النصوص التي تحوي الكلمة idf/١ :

بعدها ستحصل على مصفوفة لكل نص أو فيما يخص مثالك كل عنوان يمكنك من خلاله حساب المسافة بينهما من خلال حساب الcosinus بين المتجهين الذان يمثلان كل عنوان :

هنــاك خوارزميه جاهزه اسمها porter stemmer يمكنك استخدامها

لكن هذه الخوارزمية مخصصة للغة الإنجليزية ولايمكن تطبيقها في حالة اللغة العربية