वाक्यांश-से-फ़िल्टर मैपिंग: उत्पाद फ़िल्टर के लिए सिमेंटिक खोज

यह लेख बताता है कि हम वाक्यांश-से-फ़िल्टर मैपिंग कैसे जनरेट और विस्तारित करते हैं जो हमारे फ़िल्टर निष्कर्षण सिस्टम को संचालित करती हैं। ये मैपिंग खोज क्वेरी से प्राकृतिक भाषा वाक्यांशों को संरचित उत्पाद फ़िल्टर से जोड़ती हैं।

समस्या: प्राकृतिक भाषा से फ़िल्टर निकालना

जब उपयोगकर्ता "mini pc with 16gb ram" खोजते हैं, तो हमें निम्न निकालने की आवश्यकता होती है:

  • फ़ॉर्म फ़ैक्टर: Mini PC

  • मुख्य मेमोरी: 16

लेकिन उपयोगकर्ता एक ही इरादे को कई तरीकों से व्यक्त करते हैं:

  • "16gb ram mini pc"

  • "mini computer 16 gb memory"

  • "small pc 16gb"

  • "compact desktop with 16 gigs"

हमें एक ऐसी प्रणाली की आवश्यकता है जो इन सभी वाक्यांश विविधताओं को सही फ़िल्टर मानों से मैप करे।

दो-चरणीय प्रक्रिया

हम दो चरणों में वाक्यांश मैपिंग उत्पन्न करते हैं:

  1. चरण 3a: permutations और फ़ीचर-विशिष्ट नियमों का उपयोग करके उत्पाद सुविधाओं से आधार वाक्यांश उत्पन्न करना
  2. चरण 4: embeddings का उपयोग करके सिमेंटिक समानता से विस्तार करना

यह हाइब्रिड दृष्टिकोण नियम-आधारित सटीकता को सिमेंटिक लचीलेपन के साथ जोड़ता है।

चरण 3a: आधार वाक्यांश निर्माण

फ़ीचर मेटाडेटा

प्रत्येक उत्पाद फ़ीचर में फ़ीचर अनुक्रम में मेटाडेटा होता है:

  • शीर्षक: श्रेणी का नाम (उदाहरण के लिए, प्रोसेसर फ़ीचर के लिए "Processing")

  • इकाई: माप की इकाई (उदाहरण के लिए, मेमोरी के लिए "GB", आवृत्ति के लिए "GHz")

यह मेटाडेटा वाक्यांश निर्माण का मार्गदर्शन करता है।

परम्यूटेशन-आधारित निर्माण

प्रत्येक फ़ीचर मान के लिए, हम निम्न के सभी क्रमपरिवर्तन उत्पन्न करते हैं:

  • शीर्षक: "processor"

  • फ़ीचर कुंजी: "series"

  • मान: "i5"

  • इकाई: (series के लिए कोई नहीं)

यह उत्पादन करता है:

  • "processor series i5"

  • "series processor i5"

  • "i5 processor series"

  • "i5 series processor"

  • "processor i5"

  • "series i5"

  • "i5"

सभी क्रमपरिवर्तन सुनिश्चित करते हैं कि हम शब्द क्रम की परवाह किए बिना क्वेरी से मेल खाते हैं।

मान + इकाई संयोजन

इकाई वाले फ़ीचर (मेमोरी, स्टोरेज, फ़्रीक्वेंसी) के लिए, हम रिक्त स्थान वाले और बिना रिक्त स्थान वाले दोनों प्रकार उत्पन्न करते हैं:

  • "16 gb" (रिक्त स्थान सहित)

  • "16gb" (बिना रिक्त स्थान)

ये अन्य घटकों के साथ संयोजित होते हैं:

  • "16gb ram"

  • "ram 16gb"

  • "processor 16gb"

पोर्ट प्रत्यय नियम

कनेक्टिविटी फ़ीचर (USB, HDMI, DisplayPort) के लिए, हम पोर्ट प्रत्यय जोड़ते हैं:

  • "usb port"

  • "usb ports"

  • "2 usb ports"

  • "hdmi port"

यह "mini pc with 2 hdmi ports." जैसी क्वेरी से मेल खाता है।

फ़ीचर-विशिष्ट नियम

प्रत्येक फ़ीचर प्रकार में कस्टम वाक्यांश निर्माण होता है:

प्रोसेसर सीरीज़ (i3, i5, N-series):

  • कोर प्रोसेसर पदनाम विविधताएँ उत्पन्न करते हैं: निर्माता का नाम, कोर ब्रांड, संयुक्त रूप

  • N-series प्रोसेसर (N100, आदि) समान पैटर्न संयोजन बनाते हैं

  • प्रत्येक "processor" के साथ कई क्रमपरिवर्तन उत्पन्न करता है

मुख्य मेमोरी:

  • संख्यात्मक मान रिक्त स्थान सहित और बिना रिक्त स्थान वाले दोनों GB प्रकार उत्पन्न करते हैं ("16gb", "16 gb")

  • स्वतः "ram" और "memory" क्वालिफायर के साथ जोड़े जाते हैं ("16gb memory", "16 gb ram")

SSD स्टोरेज:

  • संख्यात्मक मान GB प्रकार उत्पन्न करते हैं ("512gb", "512 gb")

  • ≥ 1024 मानों के लिए स्वतः TB प्रकार उत्पन्न करता है (उदा., 1024GB → 1TB)

  • स्वतः "ssd" और "storage" क्वालिफायर के साथ जोड़े जाते हैं ("512gb ssd", "512 gb storage")

फ़ॉर्म फ़ैक्टर:

  • Mini PC → बिना रिक्त स्थान वाले रूप सहित कई विविधताएँ

  • All-in-One → "all in one", "aio", संक्षिप्त रूप

  • Thin Client → रिक्त स्थान के साथ/बिना विविधताएँ

  • Industrial PC → संक्षिप्त और पूर्ण रूप

जनरेशन:

  • संख्यात्मक जनरेशन मान बनते हैं: "12th gen", "12th generation", "gen 12"

कोर:

  • 2 → "dual core"

  • 4 → "quad core"

  • 6 → "hexa core"

  • 8 → "octa core"

  • सभी "[n] core processor" प्रकार उत्पन्न करते हैं

ईथरनेट:

  • "1000" → ["gigabit ethernet", "gbe", "1gbps"]

  • "2500" → ["2.5gbe", "2.5 gigabit", "2.5gbps"]

ऑपरेटिंग सिस्टम:

  • "Windows 11" → ["windows", "windows 11", "win 11"]

  • "Ubuntu" → ["linux", "ubuntu"]

  • "FreeDOS" → ["freedos", "no os", "without os"]

स्टैंडअलोन मानों के लिए व्हाइटलिस्ट

केवल विशिष्ट फ़ीचर ही स्टैंडअलोन मान मिलान की अनुमति देते हैं ताकि गलत मिलान रोके जा सकें:

  • सीरीज़: "i3", "i5", "N100" (लेकिन एकल अक्षर नहीं)

  • प्रोसेसर मॉडल: "N100", "1335U"

  • ऑपरेटिंग सिस्टम: "Windows", "Linux", "Ubuntu"

  • जनरेशन: "12th", "13th", "14th"

  • प्रोसेसर ब्रांड: "Intel", "ARM"

उदाहरण के लिए, जब क्वेरी "2 hdmi ports" हो तो "2" को "2 cores" से मेल नहीं खाना चाहिए। लंबाई जांच एकल अक्षरों या बहुत छोटे अस्पष्ट मानों को स्टैंडअलोन मिलान होने से रोकती है। स्पष्ट इकाई घटकों वाले फ़ीचर, जैसे Ethernet या पोर्ट, केवल तभी स्टैंडअलोन संयोजन उत्पन्न करते हैं जब वे अपनी इकाई के साथ योग्य हों।

टकराव रोकथाम

मेमोरी और स्टोरेज मान ओवरलैप होते हैं (दोनों के पास 64, 128, 256, आदि हैं)। चरण 4 स्पष्ट करने के लिए मान-सीमा नियम लागू करता है:

  • ≤ 64 GB: मुख्य मेमोरी (RAM)

  • ≥ 128 GB: SSD स्टोरेज

  • 65-127 GB सीमा: छोड़ दी गई (अस्पष्ट)

स्पष्ट क्वालिफायर वाले वाक्यांश ("ram"/"memory" या "ssd"/"storage") इस नियम को ओवरराइड करते हैं और किसी भी मान से मेल खा सकते हैं।

इसके अलावा, अस्पष्ट सामान्य शब्द जो बहुत सारे असंबंधित फ़िल्टर से मेल खाते हैं, पोस्ट-प्रोसेसिंग के दौरान टकराव समाधान में बाहर रखे जाते हैं: "connectivity", "audio", "display", "processor", और "physical" जैसे शब्द कई पहलुओं में बहुत अधिक अस्पष्टता पैदा करते हैं।

चरण 4: सिमेंटिक विस्तार

N-ग्राम निष्कर्षण

हम वास्तविक खोज क्वेरी से लगातार आने वाले वाक्यांश निकालते हैं, जो एकल शब्दों (1-ग्राम जैसे "mini") से लेकर लंबे अनुक्रमों (6-ग्राम तक जैसे "mini pc with 16gb ram ssd") तक होते हैं। केवल वे वाक्यांश रखे जाते हैं जो कम से कम 3 बार आते हैं। यह फ़िल्टरिंग दृष्टिकोण वास्तविक उपयोगकर्ता भाषा पैटर्न को संरक्षित रखते हुए शोर को कम करता है।

फ़िल्टर खोज टेक्स्ट निर्माण

प्रत्येक फ़िल्टर मान के लिए, हम खोज टेक्स्ट उत्पन्न करते हैं:

मुख्य मेमोरी: 16:

  • "16gb ram memory"

  • "16 main memory"

  • "main memory 16"

SSD स्टोरेज: 512:

  • "512gb storage ssd"

  • "512 ssd storage"

  • "ssd storage 512"

ये खोज टेक्स्ट एम्बेडिंग स्पेस में फ़िल्टर का प्रतिनिधित्व करते हैं।

एम्बेडिंग और मिलान

हम क्वेरी वाक्यांशों और फ़िल्टर खोज टेक्स्ट दोनों को एम्बेडिंग में बदलते हैं, फिर उनके बीच cosine similarity की गणना करते हैं। कॉन्फ़िगर की गई सीमा से ऊपर समानता स्कोर वाले वाक्यांश उस फ़िल्टर की मैपिंग में जोड़े जाते हैं।

मैन्युअल सीड वाक्यांश

हम विस्तार से पहले उच्च-विश्वास वाले मैन्युअल सीड इंजेक्ट करते हैं:

"Series:i5": [
    "i5",
    "core i5",
    "intel i5",
    "intel core i5",
    "i5 processor",
    "cpu i5",
]

ये सीड उन मुख्य वाक्यांशों का प्रतिनिधित्व करते हैं जिन्हें हम जानते हैं कि प्रत्येक फ़िल्टर के लिए सही हैं। उन्हें अधिकतम समानता स्कोर के साथ शामिल करके, वे विस्तार एल्गोरिदम को समान अर्थ वाले संबंधित वाक्यांश खोजने के लिए मार्गदर्शन करते हैं। इन सीड्स को हमेशा समानता 1.0 मिलती है और वे विस्तार का मार्गदर्शन करते हैं।

वृद्धिशील एम्बेडिंग

हम वाक्यांशों और फ़िल्टर खोज टेक्स्ट दोनों के लिए एम्बेडिंग कैश करते हैं। जब नई क्वेरी आती हैं:

  1. मौजूदा एम्बेडिंग लोड करें
  2. केवल नए वाक्यांशों को एम्बेड करें
  3. कैश में जोड़ें

यह अपरिवर्तित डेटा को फिर से एम्बेड करने से बचाता है। विवरण के लिए एम्बेडिंग रणनीति देखें।

टकराव समाधान

समानता मिलान पूरा होने के बाद, हम मेमोरी और स्टोरेज फ़िल्टर के बीच टकराव का समाधान करते हैं:

संख्या-आधारित असंदिग्धीकरण:

  • संख्याओं वाले अस्पष्ट वाक्यांशों के लिए: यदि मान ≤ 64 है, तो केवल मेमोरी के लिए रखें; यदि > 64 है, तो केवल स्टोरेज के लिए रखें

  • यह "16gb" को SSD स्टोरेज फ़िल्टर से और "512gb" को मेमोरी फ़िल्टर से मेल खाने से रोकता है

स्पष्ट क्वालिफायर नियमों को ओवरराइड करते हैं:

  • "ram", "memory", "cpu", "processor" कीवर्ड वाले वाक्यांश → केवल मेमोरी

  • "ssd", "storage", "disk", "nvme", "drive" कीवर्ड वाले वाक्यांश → केवल स्टोरेज

  • उदाहरण: "processor 8gb" संख्यात्मक होते हुए भी मेमोरी में मैप होता है

अस्पष्ट शब्द:

  • "connectivity", "audio", "display" जैसे वाक्यांशों को हटा दें जो कई असंबंधित फ़िल्टर से मेल खाते हैं

आउटपुट प्रारूप

अंतिम मैपिंग को समानता (उच्चतम पहले), फिर लंबाई (सबसे छोटा पहले) के आधार पर क्रमबद्ध किया जाता है:

{
  "Main Memory:16": [
    {"phrase": "16gb ram", "similarity": 1.0},
# ... (implementation details omitted)

फ़िल्टर निष्कर्षण के साथ एकीकरण

ये मैपिंग फ़िल्टर निष्कर्षण एल्गोरिदम को शक्ति प्रदान करती हैं:

  1. क्वेरी आती है: "mini pc with 16gb ram"
  2. वाक्यांश निकालें: ["mini pc", "16gb ram", "mini", "pc", "16gb", "ram"]
  3. मैपिंग का उपयोग करके वाक्यांशों को फ़िल्टर से मिलाएं
  4. फ़िल्टर लौटाएं: {"Form Factor": ["Mini PC"], "Main Memory": ["16"]}

विवरण के लिए फ़िल्टर निष्कर्षण एल्गोरिदम देखें।

भंडारण और वितरण

वाक्यांश मैपिंग को JSON फ़ाइलों के रूप में स्थायी रूप से संग्रहीत किया जाता है और पूरे सिस्टम में उपयोग किया जाता है:

  • आधार मैपिंग फ़ाइल: चरण 3a में उत्पन्न, नियम-आधारित वाक्यांश शामिल होते हैं

  • विस्तारित मैपिंग फ़ाइल: चरण 4 में उत्पन्न, सिमेंटिक विस्तार परिणाम शामिल होते हैं

विस्तारित मैपिंग का उपयोग निम्न द्वारा किया जाता है:

  • क्वेरी पेज निर्माण: क्वेरी टेक्स्ट से फ़िल्टर निकालना

  • खोज सेवा: रीयल-टाइम फ़िल्टर निष्कर्षण API

  • उत्पाद मिलान: निकाले गए फ़िल्टर द्वारा उत्पादों को फ़िल्टर करना

प्रदर्शन विशेषताएँ

आधार निर्माण (चरण 3a):

  • प्रसंस्करण समय फ़िल्टर मानों की संख्या के साथ बढ़ता है

  • बड़ी संख्या में आधार वाक्यांश विविधताएँ उत्पन्न करता है

  • निर्माण के दौरान मेमोरी उपयोग मध्यम रहता है

सिमेंटिक विस्तार (चरण 4):

  • प्रसंस्करण समय क्वेरी मात्रा और एम्बेडिंग आकार के साथ बढ़ता है

  • आउटपुट में आधार निर्माण की तुलना में काफी अधिक वाक्यांश होते हैं

  • एम्बेडिंग भंडारण के कारण मेमोरी आवश्यकताएँ बढ़ जाती हैं

विस्तार समानता गणना के कारण CPU-बद्ध है। NumPy का उपयोग BLAS त्वरण के साथ करने से मैट्रिक्स संचालन काफी तेज हो जाता है।

SEO पाइपलाइन के साथ एकीकरण

वाक्यांश मैपिंग निर्माण SEO पाइपलाइन में चरण 3a और 4 है:

  1. चरण 0: स्रोत डेटा एम्बेड करें - उत्पाद, पार्ट्स, लेख
  2. चरण 1: क्वेरी प्राप्त करें - GSC, Google Ads, लाइव, Algolia
  3. चरण 2: क्वेरी संयोजित करें - सभी स्रोत मर्ज करें
  4. चरण 3a: आधार वाक्यांश मैपिंग उत्पन्न करें ← आप यहाँ हैं
  5. चरण 3b: क्वेरी एम्बेड करें - वेक्टर में बदलें
  6. चरण 4: वाक्यांश मैपिंग विस्तारित करें ← आप यहाँ हैं
  7. चरण 5: क्वेरी क्लस्टर करें - पेजों में समूहित करें
  8. चरण 6: उत्पाद मिलान करें - क्वेरी-उत्पाद मिलान
  9. चरण 7: क्वेरी पेज बनाएं - HTML जनरेट करें
  10. चरण 8: संबंधित खोज उत्पन्न करें - संबंधित क्वेरी खोजें
  11. चरण 11: Valkey में माइग्रेट करें - खोज सेवा में लोड करें

पूर्ण प्रवाह के लिए SEO पाइपलाइन अवलोकन देखें।

दो चरण क्यों?

आधार निर्माण (चरण 3a) प्रदान करता है:

  • सटीकता: नियम-आधारित वाक्यांश बिल्कुल वही मेल खाते हैं जो हम अपेक्षा करते हैं

  • कवरेज: क्रमपरिवर्तन सुनिश्चित करते हैं कि सभी शब्द क्रम शामिल हों

  • नियंत्रण: फ़ीचर-विशिष्ट नियम डोमेन ज्ञान संभालते हैं

सिमेंटिक विस्तार (चरण 4) प्रदान करता है:

  • लचीलापन: उन वाक्यांशों की खोज करता है जिनकी हमने कल्पना नहीं की थी

  • वास्तविक उपयोगकर्ता भाषा: वास्तविक खोज क्वेरी से सीखता है

  • पर्यायवाची: समकक्ष वाक्यांश ढूंढता है ("16gb" के लिए "16 gigs")

साथ में, वे सटीकता और रिकॉल को संतुलित करते हैं।

संदर्भ

तकनीकी अवधारणाएँ

  • Permutation - विकिपीडिया

  • Cosine Similarity - विकिपीडिया

  • N-gram - विकिपीडिया

  • NumPy - आधिकारिक दस्तावेज़

  • BLAS - विकिपीडिया

मॉडल दस्तावेज़

संबंधित लेख

सारांश

हम वाक्यांश-से-फ़िल्टर मैपिंग दो चरणों में उत्पन्न करते हैं:

चरण 3a (आधार निर्माण):

  • शीर्षक, कुंजी, मान, इकाई के सभी क्रमपरिवर्तन उत्पन्न करें

  • फ़ीचर-विशिष्ट नियम लागू करें (प्रोसेसर सीरीज़, मेमोरी, स्टोरेज, फ़ॉर्म फ़ैक्टर)

  • कनेक्टिविटी फ़ीचर के लिए पोर्ट प्रत्यय जोड़ें

  • विशिष्ट फ़ीचर के लिए स्टैंडअलोन मानों को व्हाइटलिस्ट करें

  • नियमों से आधार वाक्यांश सेट आउटपुट करें

चरण 4 (सिमेंटिक विस्तार):

  • वास्तविक खोज क्वेरी से n-gram वाक्यांश निकालें

  • वाक्यांशों और फ़िल्टर खोज टेक्स्ट को एम्बेड करें

  • सीमा से ऊपर समानता स्कोर वाले वाक्यांशों का मिलान करें

  • विस्तार का मार्गदर्शन करने के लिए मैन्युअल सीड वाक्यांश इंजेक्ट करें

  • मेमोरी/स्टोरेज टकराव का समाधान करें

  • विस्तारित और असंदिग्ध वाक्यांश सेट आउटपुट करें

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


← दस्तावेज़ अनुक्रमणिका पर लौटें