Relevance scoring in Manticore : part II

प्रासंगिकता स्कोरिंग के दूसरे भाग में हम बात करते हैं कि कैसे पदों का उपयोग मिलान और स्कोरिंग के लिए किया जा सकता है।

क्षेत्र में शब्दों के पदों का ज्ञान महत्वपूर्ण है और यह बेहतर प्रासंगिकता प्रदान कर सकता है। पदों के कारण एक विस्तृत श्रृंखला के पाठ ऑपरेटर उपलब्ध होते हैं जो किसी शब्द की स्थिति के सापेक्ष मिलान कर सकते हैं या क्षेत्र में पाई गई कीवर्ड्स के बीच की दूरी की गणना कर सकते हैं या इनपुट क्वेरी की तुलना में कर सकते हैं। पदों के आधार पर सबसे अधिक उपयोग किए जाने वाले ऑपरेटरों में से एक है फ्रेज़ ऑपरेटर - "A B"फ्रेज़ मैच प्रतिबंधात्मक होते हैं क्योंकि वे कीवर्ड को क्वेरी में निर्दिष्ट के अनुसार मिलाना बाध्य करते हैं। इसका मतलब है कि कीवर्ड्स को निकट होना चाहिए और क्वेरी में दिए गए क्रम में होना चाहिए।

शब्द की स्थिति को जानकर हम यह पता कर सकते हैं कि क्या कुछ विशेष शब्दों से शुरू या समाप्त होने वाले क्षेत्रों में मिलान किया जा सकता है, जिसमें प्रारंभ (^) और अंत($) ऑपरेटर का उपयोग किया जाता है। किसी क्षेत्र के भीतर खोज को सीमित भी किया जा सकता है ताकि एक मिलान केवल तभी दिया जाए जब शब्द क्षेत्र के पहले N शब्दों में पाया जाता है। इसे क्षेत्र नाम ऑपरेटर के बाद सीमा निर्दिष्ट करके प्राप्त किया जा सकता है - @myfield [10] word। हम यह भी सुनिश्चित कर सकते हैं कि हमारे इनपुट शब्द एक विशिष्ट क्रम में पाए जाएं, आदेश ऑपरेटर का उपयोग करके - word1 << word2 << word3 या यदि इनपुट शब्द क्षेत्र में दी गई निकटता में पाए जाते हैं तो प्रॉक्सिमिटी ऑपरेटर का उपयोग करें: "word1 word2"~10

प्रॉक्सिमिटी मैच की अनुमति देता है कि मेल खा रहे कीवर्ड्स के बीच में N से अधिक शब्द न हों। उदाहरण के लिए "A B C"~4 मेल खाता है "A D E B F C" के साथ, लेकिन "A D E B F G C" के साथ नहीं।

कम प्रतिबंधात्मक प्रॉक्सिमिटी के लिए NEAR ऑपरेटर का उपयोग किया जा सकता है। प्रॉक्सिमिटी ऑपरेटर के विपरीत, जो कीवर्ड्स के सेट के साथ काम करता है, NEAR दो ऑपरेन्ड्स के साथ काम करता है, जो शब्द या अन्य उपव्यक्तियाँ हो सकते हैं। उदाहरण के लिए, हम कर सकते हैं "A B" NEAR/2 C - एक मैच मान्य है यदि वाक्यांश "A B" और C शब्द के बीच अधिकतम 2 शब्द हैं। इसी प्रकार एक NOTNEAR ऑपरेटर अस्तित्व में है जो केवल तभी मेल खाता है जब ऑपरेन्ड्स (शब्द या उपव्यक्तियाँ) के बीच न्यूनतम संख्या में शब्द होते हैं।

कई प्रासंगिकता मैट्रिक्स शब्द पदों का उपयोग करते हैं ताकि क्वेरी और दस्तावेज़ के बीच की दूरी की गणना की जा सके। LCS (Longest Common Subsequence) दस्तावेज़ और क्वेरी के बीच अधिकतम शब्दों के सही मेल की लंबाई को देती है। इसका मतलब है कि हम यह पता लगाने की कोशिश करते हैं कि क्या हमारे दस्तावेज़ों में इनपुट क्वेरी के उपक्रम हैं। LCS का अधिकतम मान क्वेरी में शब्दों की संख्या है यदि हमारे पास इसका सही मेल है। उपक्रम अपनी लंबाई के अनुसार निम्न LCS मान प्रदान करेगा और न्यूनतम मान - 1 - तब है जब शब्द पाए जाते हैं लेकिन कोई उपक्रम 1 शब्द से बड़ा नहीं बनाते हैं। एक बात पर विचार करना है कि एक उपक्रम को निकटतम मेल खा रहे शब्दों से बनाना जरूरी नहीं है। उदाहरण के लिए, यदि हमारे पास इनपुट में A B C है और दस्तावेज़ में हम A D C पाते हैं, तो इस उपक्रम को स्कोर 2 मिलेगा क्योंकि A और C क्रम में और क्वेरी में समान स्थिति में पाए जाते हैं:

mysql> SELECT *,WEIGHT() FROM testrt WHERE MATCH('hello world program') OPTION ranker=expr('top(lcs)');
+------+--------------------------+----------------------------+----------+
| id   | title                    | content                    | weight() |
+------+--------------------------+----------------------------+----------+
|    6 | hello world program      | just some content          |        3 |
|    4 | hello test program       | just some world content    |        2 |
|    5 | hello test world program | just some content          |        2 |
|    9 | hello world              | just program world content |        2 |
|    7 | hello test world         | just program some content  |        1 |
|    8 | test program hello       | just some world content    |        1 |
+------+--------------------------+----------------------------+----------+
6 rows in set (0.00 sec)

दस्तावेज़ 4 का शीर्षक पर LCS है जिसका मान 2 है क्योंकि हमारी क्वेरी hello world program है और उपक्रम hello test program है -हालाँकि हमारे पास एक ऐसा शब्द है जो मेल सूची में नहीं है, लेकिन hello और program अपने पदों (1 और 3) पर हैं और उनके बीच।

दस्तावेज़ 7 के साथ hello test world जबकि इसमें 2 शब्द (hello और world) क्रम में हैं, उनकी स्थिति 1 और 3 है जबकि क्वेरी में स्थितियाँ 1 और 2 हैं। चूँकि स्थितियाँ मेल नहीं खाती, हम उपक्रम बनाने के लिए 2 मेल खा रहे शब्दों की बात नहीं कर सकते।

LCS का एक अधिक प्रतिबंधात्मक संस्करण है LCCS (Longest Common Contiguous Subsequence)। LCCS केवलAdjacent Words द्वारा बने उपक्रमों को स्कोर करता है। अंतर को स्पष्ट करने के लिए, पिछले उदाहरण को लेते हैं, लेकिन अब lccs के साथ:

mysql> select *,weight() from testrt where match('hello world program') option ranker=expr('top(lccs)');
+------+--------------------------+----------------------------+----------+
| id   | title                    | content                    | weight() |
+------+--------------------------+----------------------------+----------+
|    6 | hello  world program     | just some content          |        3 |
|    5 | hello test world program | just some content          |        2 |
|    9 | hello world              | just program world content |        2 |
|    4 | hello test program       | just some world content    |        1 |
|    7 | hello test world         | just program some content  |        1 |
|    8 | test program hello       | just some world content    |        1 |
+------+--------------------------+----------------------------+----------+
6 rows in set (0.00 sec)

अब दस्तावेज़ 4 जिसका LCS=2 था, LCCS=1 है क्योंकि जबकि इसमें एक उपक्रम है और शब्द समान स्थिति में हैं, शब्द निकटतम नहीं हैं।
दोनों LCS और LCCS सूत्र में प्रत्येक कीवर्ड को 1 के रूप में गिनते हैं, बिना यह देखे कि शब्द की महत्ता (कितना दुर्लभ या सामान्य) क्या है। LCCS का एक भिन्न रूप जो WLCCS या वेटेड लॉन्गेस्ट कॉमन कंटिग्यूस सबसिक्वेंस कहा जाता है, कीवर्ड्स के IDFs को जोड़ सकता है बजाय केवल एक साधारण गिनती के। LCS और LCCS के विपरीत, WLCCS फ्लोट मान लेता है क्योंकि IDFs को फ्लोट के रूप में व्यक्त किया जाता है और आउटपुट डेटा पर निर्भर करता है (जैसे IDF वर्तमान अनुक्रम के सापेक्ष एक माप है)। WLCCS दुर्लभ शब्दों को शामिल करने वाले सबसिक्वेंस को बेहतर मान देगा और एक दस्तावेज़ को उच्च रैंकिंग दे सकता है जिससे अन्यथा LCS या LCCS का उपयोग करके कम स्कोर प्राप्त होता।
हमने पहले एक ऑपरेटर के बारे में बात की जो केवल तब मेल खा सकता है जब कीवर्ड फील्ड की शुरुआत में हो। पहले क्रम में होने की स्थिति को प्रासंगिकता की गणना में भी उपयोग किया जा सकता है क्योंकि इसका मतलब है कि कीवर्ड की उस फील्ड के लिए अधिक महत्त्व है यदि यह फील्ड में पहले या यहां तक कि बेहतर, इसकी शुरुआत में प्रकट होता है। min_hit_pos पहले मेल खाए गए कीवर्ड की स्थिति बताता है। रैंकिंग एक्सप्रेशंस में हम min_hit_pos==1 की जांच जोड़ सकते हैं ताकि यह जांचा जा सके कि पहले मेल खाए गए कीवर्ड फील्ड की शुरुआत में होते हैं या नहीं।
सबसिक्वेंस के लिए प्रारंभिक स्थिति को भी लागू किया जा सकता है। कल्पना करें कि हमारे पास कई दस्तावेज़ हैं जो हमें क्वेरी से मेल खाने वाले सबसिक्वेंस (आंशिक या पूर्ण) देते हैं और हम जानना चाहते हैं कि किन दस्तावेजों में सबसिक्वेंस फील्ड में पहले प्रकट होते हैं। हम इसके लिए min_best_span_pos का उपयोग कर सकते हैं, जो हमें एक फील्ड में सर्वश्रेष्ठ सबसिक्वेंस (LCS के रूप में गणना की गई) की पहली उपस्थिति देता है।

मैंटीकोर सर्च इंस्टॉल करें

मैंटीकोर सर्च इंस्टॉल करें