การกรองความร่วมมือเพียงแค่ใช้การตั้งค่าของกลุ่มที่มีความสนใจและประสบการณ์ร่วมกันที่คล้ายกันเพื่อแนะนำข้อมูลที่ผู้ใช้สนใจบุคคลตอบสนองต่อข้อมูลในระดับที่สำคัญ (เช่นการจัดอันดับ) ผ่านกลไกความร่วมมือและบันทึกเพื่อให้บรรลุวัตถุประสงค์ของการกรองเพื่อช่วยกรองข้อมูลผู้อื่น การตอบสนองไม่จำเป็นต้อง จำกัด เฉพาะบันทึกของข้อมูลที่สนใจเป็นพิเศษและบันทึกข้อมูลที่ไม่สนใจเป็นพิเศษก็มีความสำคัญเช่นกัน
การกรองความร่วมมือสามารถแบ่งออกเป็นการให้คะแนนหรือการกรองทางสังคม การกรองความร่วมมือเป็นที่นิยมอย่างมากในสนามอินเทอร์เน็ตทั่วโลกด้วยความเร็วและความแข็งแกร่งที่ยอดเยี่ยม
แนวคิดหลักของ USERCF คือการจำลองความคล้ายคลึงกันของเวกเตอร์ตามข้อมูลผู้ใช้ จากความคล้ายคลึงกันนี้เราพบผู้ใช้ที่คล้ายกันของผู้ใช้ที่ระบุจากนั้นแนะนำสิ่งที่ผู้ใช้ที่คล้ายกันซื้อ แต่ไม่ได้ซื้อโดยผู้ใช้ที่ระบุให้กับผู้ใช้ที่ระบุ การคำนวณระดับการแนะนำยังรวมความคล้ายคลึงกันระหว่างผู้ใช้ที่คล้ายกันและผู้ใช้ที่ระบุกับผู้ใช้ที่ระบุ โปรดทราบว่าเราเริ่มต้นกับพฤติกรรมการตอบรับที่ซ่อนอยู่ของผู้ใช้ดังนั้นปัจจัยที่มีอิทธิพลของแต่ละรายการคือ 1 โดยค่าเริ่มต้น
แพ็คเกจ cn.csu.cfutils; นำเข้า java.util.hashmap; นำเข้า java.util.hashset; นำเข้า java.util.iterator; นำเข้า java.util.map; นำเข้า java.util.map.entry; @Author Administrator * */คลาสสาธารณะ USERCF {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {/** * ป้อนผู้ใช้-> รายการรายการผู้ใช้หนึ่งคนสอดคล้องกับหลายรายการ * รายการ ID ผู้ใช้ ID ID ID * A ABD * B AC * C เป็น * D CDE */SCANNER NUPTERN NUPTION scanner.nextint (); int [] [] sparsematrix = new int [n] [n]; // สร้างเมทริกซ์ผู้ใช้เบาบางสำหรับการคำนวณความคล้ายคลึงกันของผู้ใช้ [matrix ความคล้ายคลึงกัน] แผนที่ <สตริง, จำนวนเต็ม> useritemlength = new hashmap <> () HashMap <> (); // สร้างตารางกลับหัวจากรายการไปยังผู้ใช้เช่น: ชุด AB <String> รายการ = new HashSet <> (); // การจัดเก็บรายการที่จัดเก็บข้อมูลเสริม <>/ //) การจัดเก็บแผนที่ผู้ใช้ที่เก็บของผู้ใช้ System.out.println ("ผู้ใช้อินพุต-ข้อมูลการแมปรายการ: <เช่น a ab d>"); scanner.nextline (); สำหรับ (int i = 0; i <n; i ++) {// กระบวนการ n ข้อมูลผู้ใช้ตามลำดับกับสตริงช่วงเวลา user_item.length; useritemlength.put (user_item [0], ความยาว -1); // เช่น: 3 userid.put (user_item [0], i); // สร้างการติดต่อระหว่าง ID ผู้ใช้ ++) {ถ้า (items.contains (user_item [j])) {// ถ้ารายการที่เกี่ยวข้องได้รับการรวมแผนที่ผู้ใช้ให้เพิ่มรายการผู้ใช้ที่เกี่ยวข้องโดยตรง get (user_item [j]) เพิ่ม (user_item [0]); items.add (user_item [j]); itemusercollection.put (user_item [j], hashset ใหม่ <string> ()); // สร้างรายการ-ผู้ใช้ความสัมพันธ์ย้อนกลับ itemusercollection.get (user_item [j]) เพิ่ม (user_item [0]);}}}}}}}}}}}}}}}} [sparse] set <entry <string, set <string>> entryset = itemuserCollection.entrySet (); iterator <entry <string, set <string>> iterator = entryset.iterator (); ในขณะที่ (iterator.hasnext ()) {set <String> Commonusers = iterator.next (). getValue (); สำหรับ (String user_u: Commonusers) {สำหรับ (String user_v: Commonusers) {ถ้า (user_u.equals (user_v)) {ดำเนินการต่อ;} sparsematrix [userid.get (user_u)] [userId.get (user_v)] += 1; // คำนวณจำนวนทั้งหมด v}}}} system.out.println (userItemLength.toString ()); system.out.println ("ป้อนผู้ใช้สำหรับคำแนะนำ: <เช่น: a>"); สตริงแนะนำ = scanner.nextline (); userId.get (แนะนำ); สำหรับ (int j = 0; j <sparsematrix.length; j ++) {ถ้า (j! = แนะนำให้ใช้) {system.out.println (iduser.get (แนะนำ)+"-"+iduser.get (j)+"ความคล้ายคลึงกัน:"+sparsematrix [แนะนำ duserid] [j] /math.sqrt (useriteMlength.get (iduser.get (แนะนำ))*useriteMlength.get (iduser.get (j))));}} // คำนวณ ระดับการแนะนำรายการของผู้ใช้ที่แนะนำของผู้ใช้ที่ระบุสำหรับ (รายการสตริง: รายการ) {// transtraight แต่ละรายการชุด <string> ผู้ใช้ = itemusercollection.get (รายการ); // รับคอลเลกชันผู้ใช้ทั้งหมดสำหรับการซื้อรายการปัจจุบัน (! ผู้ใช้ สำหรับ (ผู้ใช้สตริง: ผู้ใช้) {itemRecommEndDegree+= sparsematrix [userId.get (แนะนำ)] [userId.get (ผู้ใช้)]/math.sqrt (userItemLength.get (แนะนำ)*userItemLength.get.get.get องศา: "+itemRecommendDegree);}} scanner.close ();}}ผลลัพธ์:
ป้อนข้อมูลผู้ใช้ทั้งหมด: 6Input User-ข้อมูลการแมป: <EG: A AB D> AASSDDDJSHGJH2415231424DSJKJ DKLSJF LADKJSFDF8G78DFG78 8787 48787 SDFASD 8787 = [df8g78dfg78], ladkjsf = [dsjkj]} {aassdd = 0, df8g78dfg78 = 1, 48787 = 1, 2415231424 = 0 คำแนะนำ: <เช่น: A> AASSDD0AASSDD-DJSHGJH ความคล้ายคลึงกัน: NANAASSDD-2415231424 ความคล้ายคลึงกัน: Nanaassdd-DSJKJ ความคล้ายคลึงกัน: Nanaassdd-DF8G78DFG78 ความคล้ายคลึงกัน: Nanaassdd-48787 รายการ SDFASD สำหรับปริญญาที่แนะนำของ AASSDD: NantTHE ITEM 8787 สำหรับปริญญาที่แนะนำของ AASSDD: NantTHE LADKJSF สำหรับปริญญาที่แนะนำของ AASSDD: NANสรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับการเขียนโปรแกรม Java เพื่อใช้ตัวอย่างรหัสอัลกอริทึมที่แนะนำโดยใช้การทำงานร่วมกันของผู้ใช้ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!