2008-10-26 10 views
14

मैं एक प्रश्नोत्तरी प्रणाली बना रहा हूं, और जब क्विज़मेकर प्रश्न बैंक में प्रश्न डालते हैं, तो मैं डुप्लिकेट/बहुत ही समान प्रश्नों के लिए डीबी की जांच कर रहा हूं।पूर्ण-पाठ खोज प्रासंगिकता में मापा जाता है?

MySQL के MATCH() ... AGAINST() का परीक्षण, मुझे प्राप्त होने वाली उच्चतम प्रासंगिकता 30+ है, जब मैं 100% समान स्ट्रिंग के खिलाफ परीक्षण करता हूं।

तो प्रासंगिकता वास्तव में क्या है? manual उद्धरण:

प्रासंगिकता मान गैर-नकारात्मक फ़्लोटिंग-पॉइंट संख्याएं हैं। शून्य प्रासंगिकता का कोई समानता नहीं है। पंक्ति में शब्दों की संख्या, उस पंक्ति में अद्वितीय शब्दों की संख्या, संग्रह में शब्दों की कुल संख्या, और दस्तावेजों की संख्या (पंक्तियों) की संख्या के आधार पर प्रासंगिकता की गणना की जाती है जिसमें एक विशेष शब्द होता है।

मेरी समस्या यह है कि स्ट्रिंग एक डुप्लिकेट होने पर प्रासंगिकता मूल्य का परीक्षण कैसे करें। यदि यह 100% डुप्लिकेट है, तो इसे प्रश्न बैंक में घुसपैठ करने से रोकें। लेकिन अगर यह केवल इतना ही समान है, तो क्विज़मेकर को सत्यापित करने, डालने या नहीं करने के लिए संकेत दें। तो मैं यह कैसे करूँ? 30% समान स्ट्रिंग के लिए 30+ प्रतिशत नहीं है, इसलिए मैं स्टंप हूं।

अग्रिम धन्यवाद।

उत्तर

4

एंडीजर्स सही रास्ते पर हैं: उन संख्याओं के पास एक-दूसरे के साथ अपने संबंधों के अलावा कोई अनुभवजन्य अर्थ नहीं है और यह निर्धारित करने के लिए स्वयं का उपयोग नहीं किया जा सकता कि "सटीक मिलान" क्या है या नहीं। आपको खुद को निर्धारित करने की आवश्यकता है।यहां तक ​​कि एक तरफ की प्रतिलिपि प्राप्त खोज रैंकिंग की सीमाओं से, वहाँ भी तुम सिर्फ क्या एक "सटीक मिलान" consitiute पर विचार के खुले सवाल है। (केवल वास्तविक पाठ या साउंडएक्स मैचों की गिनती करते हैं? समानार्थी शब्द (उदाहरण के लिए, "सोफे" बनाम "सोफा") मिलान या अलग के रूप में गिनती है? क्या गलत वर्तनी की क्षतिपूर्ति करने के लिए प्रयास किया जाना चाहिए? आदि)

यदि मैं , मैं सिर्फ उच्चतम रैंक की प्रतिलिपि प्राप्त खोज द्वारा दिया प्रवेश हड़पने होता है, किसी भी नामित stopwords को हटाने, खाली स्थान के सामान्य, लोअरकेस में बदलने का, तुलना करते हैं, और इसे वैसे ही जब तक मैं एक मामले का सामना करना पड़ा इस तरह के एक जाँच करने के लिए की जरूरत थी जिसने इसे आगे परिष्कृत करने के लिए बुलाया। यह वास्तव में सभी कि ज्यादा अतिरिक्त काम नहीं है - अगर आप भाषा आप अपने आवेदन के लिए उपयोग कर रहे हैं निर्दिष्ट करते हैं, तो आप शायद किसी को यहाँ के आसपास है जो कोड के लगभग एक दर्जन लाइनों के भीतर सामान्य समारोह लिख सकता है मिल सकता है।

1

मैं MySQL समारोह का उपयोग कर रहे की बारीकियों पता नहीं है, लेकिन मुझे लगता है यह हो सकता है उन संख्याओं के लिए कोई निरपेक्ष अर्थ है कि वहाँ - वे बस द्वारा उत्पादित अन्य मूल्यों के साथ तुलना करने के लिए डिज़ाइन कर रहे हैं एक ही समारोह एक पूर्ण मिलान की जांच करने के लिए आप टेक्स्ट को स्वयं चुन सकते हैं और मैन्युअल रूप से तुलना कर सकते हैं।

+0

मैं जब भी संभव हो MySQL खोज इंजन का उपयोग करने के लिए पसंद करते हैं। अगर मैं खुद की तुलना करना चाहता था, तो मुझे बहुत सारी तैयारी और जांच करने की ज़रूरत है। सभी सफेद जगहों और विशेष पात्रों को हटाएं, सभी को अपरकेस में परिवर्तित करें, और क्या नहीं। यह मेरा आखिरी उपाय है। – syaz

7

एक पाठ पुनर्प्राप्ति प्रणाली के लिए बुनियादी डेटा संरचना एक Inverted Index है। यह अनिवार्य रूप से दस्तावेज़ संग्रह में पाए गए शब्दों की एक सूची है जिसमें वे मौजूद दस्तावेज़ों की एक सूची के साथ हैं। इसमें प्रत्येक दस्तावेज़ के लिए घटना के बारे में मेटाडेटा भी हो सकता है, जैसे शब्द प्रकट होने की संख्या।

शब्दों से युक्त दस्तावेज खोज शब्दों के मेल द्वारा पूछे जा सकता है। प्रासंगिकता निर्धारित करने के लिए, Cosine Ranking के रूप में जाना जाने वाला एक ह्युरिस्टिक हिट पर गणना की जाती है। यह प्रत्येक एन खोज शब्द के लिए एक घटक के साथ एन-आयामी वेक्टर बनाने के द्वारा काम करता है। वांछित अगर आप खोज शब्द भी भार कर सकते हैं। यह वेक्टर एन-आयामी अंतरिक्ष में एक बिंदु देता है जो आपके खोज शब्दों से मेल खाता है।

ऐसा ही एक वेक्टर प्रत्येक दस्तावेज़ में भारित घटनाओं के आधार पर वेक्टर प्रत्येक खोज पद के लिए अक्ष के साथ इसी में प्रत्येक अक्ष के साथ उल्टे सूचकांक से निर्माण किया जा सकता। यदि आप इन वैक्टरों के डॉट उत्पाद की गणना करते हैं तो आपको उनके बीच कोण का कोसाइन मिलता है। 1.0 कोस (0) के बराबर है, जो मान लेगा कि वेक्टर मूल से एक आम रेखा पर कब्जा करते हैं। एक साथ वैक्टर के करीब, कोण छोटा और कोसाइन के करीब 1.0 है।

यदि आप कोसाइन द्वारा खोज परिणामों को सॉर्ट करते हैं (या उन्हें mg के रूप में प्राथमिकता कतार में घुमाते हैं) तो आपको सबसे प्रासंगिक मिलता है। क्लीवरर प्रासंगिकता एल्गोरिदम उच्च प्रासंगिकता वाले शब्दों के पक्ष में डॉट उत्पाद को छोड़कर खोज शब्दों के वजन के साथ झुकाव करते हैं।

यदि आप थोड़ा, Managing GigabytesBell और Moffet द्वारा खोदना चाहते हैं तो टेक्स्ट पुनर्प्राप्ति प्रणालियों के आंतरिक आर्किटेक्चर पर चर्चा करें।

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