2012-09-07 21 views
14

मैं ऐसी वेबसाइट पर काम कर रहा हूं जो याहू के समान है! उत्तर: कोई उपयोगकर्ता प्रश्न पोस्ट कर सकता है, अन्य लोगों के उत्तरों की प्रतीक्षा कर सकता है और बेहतर विकल्प चुन सकता है। सर्वोत्तम उपयोगकर्ताओं की पहचान करने के लिए, एक प्रतिष्ठा प्रणाली है, जिसमें इन विशेषताएं हैं:अच्छी रेटिंग/प्रतिष्ठा प्रणाली?

  • कोई उपयोगकर्ता को ऊपर या नीचे ले जा सकता है;
  • कोई उत्तर को ऊपर या नीचे दे सकता है;
  • प्रत्येक विषय के लिए एक "अनुभव" स्कोर है, जो प्रत्येक प्रश्न के उत्तर में बढ़ता है।

अब, यदि संभव हो, तो मैं इन सभी कारकों को गठबंधन करने के लिए एक एल्गोरिदम खोजना चाहता हूं और प्रत्येक उत्तर के लिए "विश्वसनीयता" स्कोर देना चाहता हूं।

अब तक, मैंने Coefficient * (UpVotes/TotalVotes) के उत्पादों जैसे चीजों का उपयोग करके इसे स्वयं करने की कोशिश की, लेकिन यह बहुत रैखिक था। मैंने अन्य तरीकों की भी कोशिश की, लेकिन उन्होंने काम नहीं किया (बेयसियन एल्गोरिदम)। फिलहाल, अल्फा संस्करण में, मैं Trustability = sqrt(GoodAnswers) का उपयोग कर रहा हूं।

नोट्स: एल्गोरिदम व्यक्तिगत होना चाहिए (औसत, रकम इत्यादि जैसे डेटा प्राप्त करने के लिए पूरे डेटाबेस को स्कैन करने की आवश्यकता नहीं है) और यदि संभव हो तो तेज़। मैं इसे PHP-MySQL में लागू करने जा रहा हूं।

+8

दिलचस्प, आपने याहू से समानता कहा, SO :) – mishadoff

+2

पर पूछा गया है कि आप उपयोगकर्ताओं को ऊपर उठाने/डाउनवॉटिंग की भरोसेमंदता के बारे में भी सोचना चाहेंगे। अविश्वसनीय उपयोगकर्ताओं को भरोसेमंद उपयोगकर्ताओं –

+1

की तुलना में दूसरों की भरोसेमंदता के लिए कम गिनना चाहिए, आप एसओ जैसे ही प्रत्येक उपयोगकर्ता अंक प्रति अपवॉट दे सकते हैं। इसे काम करें ताकि प्रतिष्ठा एक संख्यात्मक मूल्य हो। –

उत्तर

6

रैंकिंग प्रणाली के लिए बड़ी संख्या में दृष्टिकोण हैं। समय आयाम का उपयोग करने के साथ, वोट संख्या ऊपर/नीचे, अपवॉटर्स और डाउनवॉटर की रेटिंग, हिट और लगभग कुछ भी जो आप कल्पना कर सकते हैं।

Reddit में रैंकिंग सिस्टम के बारे में एक अच्छा लेख है।

मेरे दिमाग में आया सबसे सरल समाधान व्यक्तिगत उपयोगकर्ता के लिए अपवर्त के कुछ वजन की गणना करना है। इसका मतलब है कि अधिक भरोसेमंद उपयोगकर्ता दूसरे की तुलना में अधिक प्रभावशाली है। जैसे रेटिंग 100 अपवॉट के साथ उपयोगकर्ता रेटिंग -100 के साथ दो उपयोगकर्ताओं से डाउनवोट से निश्चित रूप से बेहतर है। लेकिन हम यह नहीं कह सकते कि यह -100 उपयोगकर्ताओं से 100 डाउनवॉट्स से बेहतर है। बुद्धि का प्रयोग करने की कोशिश करो।

+0

यह एक अच्छा जवाब है, निश्चित रूप से। मैं मुख्य रूप से दक्षता समस्या के लिए समय आयाम पर विचार नहीं करता: बहुत अधिक स्मृति का उपयोग किया जाता है। मैं दूसरा विचार चुनूंगा: इसे स्मृति या गणना की आवश्यकता नहीं है, तो मुझे लगता है कि मैं इसका उपयोग करूंगा। (बीटीडब्ल्यू यह अन्य उपयोगकर्ताओं की सोच कम या ज्यादा है, बस बेहतर समझाया गया है।) –

1

आप Google पेज रैंक के समान विचार का उपयोग कर सकते हैं: जब कोई उपयोगकर्ता आपको ऊपर उठाता है या अपना प्रश्न \ उत्तर पसंदीदा के रूप में जोड़ता है, तो आपकी विश्वसनीयता की वृद्धि इस उपयोगकर्ता की भरोसेमंदता पर निर्भर करती है।

http://en.wikipedia.org/wiki/PageRank

+0

सावधान रहें [पेजरैंक पेटेंट किया गया है] (http: // www.google.com/patents/US6285999) स्टैनफोर्ड द्वारा। – amit

+0

सावधान रहें कि लगभग कोई भी पेजरैंक के सटीक काम को नहीं जानता है। –

0

प्रणाली की तरह एक ELO/Glicko का प्रयोग करें। प्रत्येक उपयोगकर्ता मानक मान के साथ शुरू होता है, फिर एक से एक मैच के परिणाम की तरह डाउनवॉटिंग या अपवॉटिंग पर विचार करें।

+0

यह एक अच्छी शुरुआत है, लेकिन फिर भी इसे एक एल्गोरिदम की आवश्यकता है: हमें "मैच" में कितने अंक जोड़ने/घटाए जाने की आवश्यकता है। –

संबंधित मुद्दे