किसी दिए गए डोमेन के लिए शब्दार्थ खोज कैसे करें


19

एक समस्या है जिसे हम हल करने की कोशिश कर रहे हैं जहां हम अपने डेटा के सेट पर सिमेंटिक खोज करना चाहते हैं, यानी हमारे पास एक डोमेन-विशिष्ट डेटा है (उदाहरण: ऑटोमोबाइल के बारे में बात कर रहे वाक्य)

हमारा डेटा वाक्यों का एक गुच्छा है और हम जो चाहते हैं वह एक वाक्यांश देना है और जो वाक्य हैं उन्हें वापस लेना है:

  1. उस वाक्यांश के समान
  2. एक वाक्य का एक हिस्सा है जो वाक्यांश के समान है
  3. एक वाक्य जिसका संदर्भ समान रूप से हो रहा है


मैं आपको एक उदाहरण देने की कोशिश करता हूं मान लीजिए कि मैं "खरीदना अनुभव" वाक्यांश के लिए खोज करता हूं, मुझे इस तरह के वाक्य प्राप्त करने चाहिए:

  • मैंने कभी नहीं सोचा था कि कार खरीदने में हस्ताक्षर करने और खरीदने में 30 मिनट से कम समय लग सकता है।
  • मुझे एक कार मिली जो मुझे पसंद थी और खरीद प्रक्रिया
    सीधी और आसान थी

  • मुझे कार की खरीदारी से बिल्कुल नफरत थी, लेकिन आज मुझे खुशी है कि मैंने ऐसा किया


मैं इस तथ्य पर जोर देना चाहता हूं कि हम प्रासंगिक समानता की तलाश कर रहे हैं न कि केवल एक क्रूर बल शब्द खोज।

यदि वाक्य अलग-अलग शब्दों का उपयोग करता है तो उसे खोजने में भी सक्षम होना चाहिए।

चीजें जो हमने पहले ही आज़मा ली हैं:

  1. ओपन सिमेंटिक हमारे द्वारा यहां की गई समस्या को खोजा गया है जो हमारे पास मौजूद डेटा से या फिर हमारे हित के विभिन्न डोमेन से उपलब्ध ऑन्कोलॉजी की खोज के लिए ऑन्कोलॉजी उत्पन्न कर रहा है।

  2. इलास्टिक सर्च (BM25 + Vectors (tf-idf)), हमने यह कोशिश की जहां इसने कुछ वाक्य दिए लेकिन सटीकता इतनी महान नहीं थी। सटीकता भी खराब थी। हमने एक मानव-घुमावदार डेटासेट के खिलाफ प्रयास किया, यह केवल 10% वाक्यों को प्राप्त करने में सक्षम था।

  3. हमने अलग-अलग एम्बेडिंग की कोशिश की जैसे कि एक बार वाक्य-ट्रांसफॉर्मर में उल्लेख किया गया था और उदाहरण के माध्यम से भी गया और हमारे मानव-क्यूरेट सेट के खिलाफ मूल्यांकन करने की कोशिश की और जिसमें बहुत कम सटीकता भी थी।

  4. हमने ELMO की कोशिश की । यह बेहतर था लेकिन फिर भी हमारी अपेक्षा से कम सटीकता थी और कॉशन मूल्य तय करने के लिए एक संज्ञानात्मक भार है जिसके नीचे हमें वाक्यों पर विचार नहीं करना चाहिए। यह बात 3 पर भी लागू होती है।

किसी भी तरह की सहायता को आभार समझेंगे। अग्रिम में मदद के लिए बहुत बहुत धन्यवाद


लिखित प्रश्न - क्या आप खोज शब्दों के 5 और उदाहरण जोड़ सकते हैं? क्या वे हमेशा एक से तीन शब्द के वाक्यांश होते हैं या खोज शब्द अधिक लंबा हो सकता है? आप सही रास्ते पर हैं
अदनान एस

हाय अदनान, खोज शब्द हमेशा एक से तीन-शब्द वाक्यांशों का होगा। पूर्व: अनुभव, ड्राइविंग आराम, इंफोटेनमेंट सिस्टम, अंदरूनी, लाभ, प्रदर्शन, बैठने का आराम, स्टाफ व्यवहार।
जिकसन

यह लेख आपके मामले के लिए दिलचस्प हो सकता है: elastic.co/blog/... (संकेत: लाभ उठाने word2vec)
वैल

@Val यह वास्तव में दिलचस्प है कि मैं उसी लेख का उल्लेख करने जा रहा हूं जिसका आपने उल्लेख किया है और फिर आपकी टिप्पणी देखी। मुझे लगता है कि इस विधि से आप जो चाहते हैं, उसके करीब पहुंच जाएंगे।
नीमा

आप ब्रह्मांड समानता में देखना चाहते हो सकता है। जैसा कि नीचे बताया गया है, इसमें स्ट्रिंग्स को उन वैक्टर में परिवर्तित करना शामिल है जिन्हें 2 डी अंतरिक्ष में दर्शाया जा सकता है। उन 2 वैक्टरों के कोसाइन कोण की गणना की जाती है। यह कोण 2 तारों के बीच "समानता" का प्रतिनिधित्व करता है। यहाँ इस पर एक अच्छा लेख है medium.com/swlh/playing-with-word-vectors-308ab2faa519
sagar1025

जवाबों:


5

मैं अत्यधिक सुझाव दूंगा कि आप ट्रे ग्रिंगर का व्याख्यान देखें कि कैसे अर्थ संबंधी खोज प्रणाली का निर्माण किया जाए => https://www.youtube.com/watch?v=4fMZnunTRF8 । वह एक अर्थ-संबंधी खोज प्रणाली की शारीरिक रचना के बारे में बात करता है और अंतिम समाधान देने के लिए एक-एक टुकड़े का उपयोग करता है।

प्रासंगिक समानता का एक बड़ा उदाहरण बिंग का खोज इंजन है: यहाँ छवि विवरण दर्ज करें

मूल क्वेरी में शब्द {कैन्ड सोडा} थे और बिंग के खोज परिणाम {कैन्ड डाइट सोडा}, {सॉफ्ट ड्रिंक्स}, {अनोपेड रूम टेम्परेचर पॉप} या {कार्बोनेटेड ड्रिंक्स} का उल्लेख कर सकते हैं। यह कैसे किया?

ठीक है, ऐसे शब्द जिनके अर्थ समान हैं, समान वैक्टर मिलते हैं और फिर इन वैक्टरों को 2-आयामी ग्राफ पर आसानी से देखे जाने का अनुमान लगाया जा सकता है। इन वैक्टरों को प्रशिक्षित करके यह सुनिश्चित किया जाता है कि समान अर्थ वाले शब्द एक-दूसरे के पास हों। आप अपने खुद के वेक्टर आधारित मॉडल को ग्लोवी मॉडल का प्रशिक्षण देकर प्रशिक्षित कर सकते हैंयहाँ छवि विवरण दर्ज करें

वैक्टरों की दूरियां एक-दूसरे के लिए बेहतर होती हैं। अब आप अपने वैक्टर की दूरी के आधार पर निकटतम पड़ोसी प्रश्नों की खोज कर सकते हैं। उदाहरण के लिए, क्वेरी के लिए {मेरे बगीचे को नष्ट करने से जानवरों को कैसे रोकें}, निकटतम पड़ोसी ये परिणाम देता है:

यहाँ छवि विवरण दर्ज करें

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

प्रासंगिक समानता संभवतः LSI (अव्यक्त अर्थ इंडेक्सिंग) जैसे कुछ का उपयोग करके शब्दावली आयाम को कम करके भी किया जा सकता है। पाइथन में ऐसा करने के लिए मैं आपको अत्यधिक सुझाव दूंगा कि आप पायथन के लिए जेनिज़्म लाइब्रेरी देखें : https://radimrehurek.com/gensim/about.html


1

आप इस समस्या को हल करने में मदद करने के लिए वीवेट में देखने के इच्छुक हो सकते हैं। यह डेटा वस्तुओं के वैश्वीकरण पर आधारित एक स्मार्ट ग्राफ है ।

यदि आपके पास डोमेन-विशिष्ट भाषा (जैसे, संक्षिप्तीकरण) है तो आप कस्टम अवधारणाओं के साथ बुन को बढ़ा सकते हैं ।

आप शब्दार्थ खोज सुविधाओं के साथ अपनी समस्या को हल करने में सक्षम हो सकते हैं (जैसे, Explore{} ) या स्वचालित वर्गीकरण सुविधाओं के ।

फ़ंक्शन का अन्वेषण करें

क्योंकि सभी डेटा ऑब्जेक्ट सदिश हो जाते हैं, आप निम्न की तरह शब्दार्थ खोज कर सकते हैं (यह उदाहरण डॉक्स से आता है , आप इसे ग्राफ़िकल का उपयोग करके यहां आज़मा सकते हैं):

{
  Get{
    Things{
      Publication(
        explore: {
          concepts: ["fashion"],
          certainty: 0.7,
          moveAwayFrom: {
            concepts: ["finance"],
            force: 0.45
          },
          moveTo: {
            concepts: ["haute couture"],
            force: 0.85
          }
        }
      ){
        name
      }
    }
  }
}

यदि आप अपने ग्राफ़ स्कीमा को -for example- वर्ग नाम "वाक्य" के आधार पर संरचना करते हैं , तो एक समान क्वेरी कुछ इस तरह दिख सकती है:

{
  Get{
    Things{
      Sentence(
        # Explore (i.e., semantically) for "Buying Experience"
        explore: {
          concepts: ["Buying Experience"]
        }
        # Result must include the word "car" 
        where: {
          operator: Like
          path: ["content"]
          valueString: "*car*"
        }
      ){
        content
      }
    }
  }
}

नोट:
आप ग्राफ को भी देख सकते हैं एक पूरे के रूप शब्दार्थ से ।

स्वचालित वर्गीकरण

एक विकल्प प्रासंगिक या KNN के साथ काम कर सकता है वर्गीकरण सुविधाओं के है।

आपके मामले में, आप कक्षा वाक्य का उपयोग कर सकते हैं और उन्हें अनुभव नामक एक कक्षा से संबंधित कर सकते हैं, जिसमें संपत्ति होगी: buying (बेशक कई अन्य कॉन्फ़िगरेशन और रणनीतियाँ हैं जिन्हें आप चुन सकते हैं)।

पुनश्च: यदि आप चाहें तो
यह वीडियो थोड़ा और संदर्भ देता है।


0

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.