वृद्धिशील आईडीएफ (उलटा दस्तावेज़ आवृत्ति)


11

एक टेक्स्ट माइनिंग एप्लिकेशन में, एक सरल तरीका यह है कि दस्तावेजों के कॉम्पैक्ट स्पार्स अभ्यावेदन के रूप में वैक्टर बनाने के लिए का उपयोग करें । यह बैच सेटिंग के लिए ठीक है, जहां पूरे कॉर्पस को प्राथमिकता से जाना जाता है, क्योंकि को पूरे कॉर्पस की आवश्यकता होती हैtfidfidf

idf(t)=log|D||{d:td}|

जहाँ एक शब्द है, एक दस्तावेज़ है, एक दस्तावेज़ कॉर्पस है, और (दिखाया नहीं गया) शब्दकोश है।tdDT

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

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

संपादित करें: शब्दकोश बारे में एक अलग लेकिन संबंधित मुद्दा है । जैसे-जैसे समय बीतता जाएगा, वैसे-वैसे नए शब्द सामने आएंगे जो पहले सामने नहीं आए थे, इसलिएबढ़ने की आवश्यकता होगी, और इसलिए वेक्टर की लंबाई । ऐसा लगता है कि यह एक समस्या नहीं होगी, क्योंकि शून्य को पुराने वैक्टर में जोड़ा जा सकता है ।T|T|idfidf


बेवकूफ सवाल: प्रत्येक टी के लिए हर को स्टोर करना एक समस्या है? कैसे होता है अनुपात | t | से | d | जैसा दिखता है (सामान्य रूप में)?
स्टेफेन

क्षमा करें, शायद समीकरण स्पष्ट नहीं है - समय बजाय टर्म टी का उलटा दस्तावेज़ आवृत्ति है । तो समय आपको लंबाई का एक वेक्टर होगा, यानी शब्दकोश का आकार (जो भी बदल सकता है)। मैं उस प्रभाव का संपादन करूँगा। idf(t)tt|T|
tdc

1
मैंने समीकरण को समझा। मेरा प्रश्न था: यदि शब्दकोश का भंडारण करना कोई समस्या नहीं है तो: भंडारण के बजाय | T | idfs एक भंडार | टी | भाजक (समीकरण के) + दस्तावेजों की संख्या। वृद्धिशील अद्यतन कोई समस्या नहीं है और फिर आईडी की गणना मक्खी पर की जाती है। मुझे लगता है कि मैंने कुछ अनदेखी की है।
स्टीफेन

तो आप का मतलब कुछ ऐसा है, एक नया दस्तावेज दिया गया है , अगर हमारे पास मान , तो हम बस लिए हर में एक जोड़ते हैंdd:tdt:td
tdc

यकीनन। यदि यह संभव है?
स्टेफेन

जवाबों:


6

ठीक है, उपयोगी टिप्पणियों के लिए स्टीफ़न को धन्यवाद। मुझे लगता है कि जवाब अंत में काफी सरल है। जैसा कि वह कहते हैं, हमें केवल वर्तमान भाजक को स्टोर करना होगा (इसे कॉल करें ):z

z(t)=|{d:td}|

अब एक नया दस्तावेज़ दिया गया है , हम बस द्वारा हर को अद्यतन करते हैं:d

z(t)=z(t)+{1iftd0otherwise

फिर हमें नए वेक्टर के आधार पर को पुनर्गणना करना होगा ।tfidfidf

इसी तरह एक पुराने दस्तावेज़ को निकालने के लिए, हम अंश को एक समान तरीके से घटाते हैं।

इसका मतलब यह है कि हमें या तो पूरे मैट्रिक्स को स्टोर करना है और साथ ही मैट्रिक्स (मेमोरी रिक्वायरमेंट्स को दोगुना करना) है, या हमें ज़रूरत पड़ने पर (कम्प्यूटेशनल कॉस्ट बढ़ाना) स्कोर की गणना करनी है । मैं किसी भी तरह से देख नहीं सकता।tftfidftfidf

प्रश्न के दूसरे भाग के लिए, समय के साथ वैक्टर के विकास के बारे में , ऐसा लगता है कि हम उपरोक्त विधि का उपयोग कर सकते हैं, और अलग-अलग तिथि सीमाओं (या शायद सामग्री सबसेट) के लिए "लैंडमार्क" vectors (भाजक) के एक सेट को स्टोर कर सकते हैं। । बेशक शब्दकोष की लंबाई का एक सघन सदिश है, इसलिए इनमें से बहुत से संग्रह करना स्मृति गहन होगा; हालाँकि, जब जरूरत हो (जो फिर से मैट्रिक्स को स्टोर करने की आवश्यकता होगी या इसके बजाय) को फिर से सम्मिलित करना बेहतर होगा ।idfzzidftf

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