يستخدم التصفية التعاونية ببساطة تفضيلات مجموعة ذات اهتمامات مماثلة وخبرة مشتركة للتوصية بالمعلومات التي يهتم بها المستخدمون. يستجيب الأفراد للمعلومات بدرجة كبيرة (مثل التصنيف) من خلال الآليات التعاونية وتسجيلها لتحقيق الغرض من التصفية لمساعدة الآخرين على ترشيح المعلومات. لا تقتصر الاستجابة بالضرورة على سجلات المعلومات المهتمة بشكل خاص ، كما أن سجلات المعلومات غير المهتمة بشكل خاص مهمة للغاية.
يمكن تقسيم التصفية التعاونية إلى تصنيف أو تصفية اجتماعية. تحظى التصفية التعاونية بشعبية كبيرة في مجال الإنترنت العالمي بسرعته الممتازة والمتانة.
الفكرة الأساسية لـ USERCF هي محاكاة تشابه المتجه بناءً على بيانات المستخدم. استنادًا إلى هذا التشابه ، نجد مستخدمين مشابهين للمستخدم المحدد ، ثم نوصي بأشياء قام بها المستخدمون المشابهون اشترى ولكن لم يتم شراؤه من قبل المستخدم المحدد للمستخدم المحدد. يجمع حساب درجة التوصية أيضًا بين التشابه بين المستخدمين المشابهين والمستخدم المحدد للمستخدم المحدد. لاحظ أننا نقوم بالتخلف عن سلوك التعليقات المخفية للمستخدم ، وبالتالي فإن عامل التأثير لكل عنصر هو واحد افتراضيًا.
package cn.csu.cfutils ؛ import java.util.hashmap ؛ استيراد java.util.hashset ؛ استيراد java.util.iterator ؛ استيراد java.util.map ؛ استيراد java.util.map.entry ؛ استيراد java.util.scanner ؛ استيراد java. Author Administrator * */public class Usercf {public static void main (String [] args) {/** * أدخل المستخدم- SCANNER.NEXTINT () ؛ int [] [] sparsematrix = new int [n] [n] ؛ // قم بإنشاء مصفوفة متفرقة من المستخدمين لحساب تشابه المستخدم [MATRIX التشابه] MAP <string ، integer> userItItEmLength = new HASHMAP <> () ؛ HashMap <> () ؛ // قم بإنشاء جدول مقلوب من عناصر إلى المستخدمين على سبيل المثال: مجموعة AB <string> عناصر = hashset جديدة <> () ؛ // خريطة مجموعة عنصر التخزين الإضافية <string ، integer> userid = new hashmap <> () معرف System.out.println ("مستخدم الإدخال-معلومات تعيين العناصر: <على سبيل المثال: A ab d>") ؛ scanner.nextLine () ؛ for (int i = 0 ؛ i <n ؛ i ++) {// process n data dative user data in sequence with string string [] user_item = scanner.nextline (). user_item.length ؛ userItEmLength.put (user_item [0] ، length-1) ؛ // eg: a 3 userid.put (user_item [0] ، i) ؛ // إنشاء مراسلات بين معرف المستخدم ومصفوفة المصفوفة المتناثرة (i ، user_item [0] // إنشاء عنصر مدين عن عنصر (j = 1 ؛ ++) {if (items.contains (user_item [j])) {// إذا تم تضمين العنصر المقابل ، فأضف بشكل مباشر عنصر المستخدم المقابل itemUserCollection.get (user_item [j]). إضافة (user_item [0]) ؛ items.add (user_item [j]) ؛ itemUserCollection.put (user_item [j] ، hashset جديد <string> ()) ؛ // إنشاء عنصر-user عكسي العلاقة itemUserCollection.get (user_item [j]). إضافة (user_item [0]) ؛}}}}}}} [sparse] set <intern <string ، set <string >>> interset = itemUserCollection.entrySet () ؛ iterator <intern <string ، set <string >>> iterator = interptset.iterator () ؛ بينما (iterator.hasnext ()) {set <string> commonUsers = iterator.next (). getValue () ؛ لـ (string user_u: commonUsers) {for (string user_v: commonUsers) {if (user_u.equals (user_v)) {conter ؛} sparsematrix [userId.get (user_u)] V}}}} system.out.println (userItEmLength.ToString ()) ؛ system.out.println ("إدخال المستخدم للتوصية: <eg: a>") userId.get (التوصية) ؛ لـ (int j = 0 ؛ j <sparsematrix.length ؛ j ++) {if (j! = يوصي {system.out.println (iduser.get (توصية)+"-"+iduser.get (j)+"التشابه:"+sparsematrix [الموصية duserid] [j] /math.sqrt (userItEmLength.get (iduser.get (completuserId))*userItEmLength.get (iduser.get (j)))) ؛}} // حساب درجة توصية العنصر من المستخدم الموصى به من المستخدم المحدد لـ (عنصر السلسلة: العناصر) {// TransTraight كل مجموعة عنصر <string> المستخدمين = itemUserCollection.get (العنصر) ؛ // الحصول على جميع مجموعات المستخدمين لشراء العنصر الحالي إذا تم تنفيذها (! لـ (user user user: user) {itemRecmondDegree+= SparsEmatrix [userId.get (completuser)] [userId.get (user)] الدرجة: "+itemRecmondDegree) ؛}} scanner.close () ؛}}نتيجة:
أدخل إجمالي رقم المستخدمين: 6Input user-معلومات تعيين العناصر: <eg: a ab d> aassddjshgjh2415231424dsjkj dklsjf ladkjsfdf8g78dfg78 8787 48787 sdfasd {dklsjf = [dsjkj] 8787 = [DF8G78DFG78] ، LADKJSF = [DSJKJ]} {aASSDD = 0 ، DF8G78DFG78 = 1 ، 48787 = 1 ، 2415231424 = 0 ، DJSHGJH = 0 ، DSJKJ = 2} التوصية: <eg: a> aassdd0aassdd-djshgjh التشابه: nanaassdd-2415231424 التشابه: nanaassdd-dsjkjj SDFASD للحصول على درجة AASSDD الموصى بها: nantthe البند 8787 للحصول على درجة AASSDD الموصى بها: nantthe item ladkjsf للحصول على درجة AASSDD الموصى بها: NANلخص
ما سبق هو المحتوى الكامل لهذه المقالة حول برمجة Java لتنفيذ أمثلة رمز الخوارزمية التعاونية المستندة إلى المستخدم. آمل أن يكون ذلك مفيدًا للجميع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!