2013-04-13 5 views
5

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

1) क्रॉलर डोमेन नाम पर उतरता है और साइट पर 20 लिंक से टेक्स्ट को स्क्रैप करता है (गहराई से एक से बड़ा नहीं)। (यहां क्रोकलर के नमूने चलाने के लिए टोकनयुक्त शब्दों की संख्या कुछ हज़ार से 150 के बीच भिन्न होती है) 2) लगभग 50,000 फीचर्स के साथ स्केलेर्न मुल्शनमियल एनबी क्लासिफायरफायर चलाएं और परिणाम

के आधार पर डोमेन नाम रिकॉर्ड करें

मेरा सवाल यह है कि क्या एक पाइथन आधारित क्लासिफायर इतने बड़े पैमाने पर आवेदन के लिए काम करेगा या क्या मुझे एक तेज वातावरण में क्लासिफायर (और शायद स्क्रैपर और शब्द टोकनेज़र भी) को फिर से लिखने का प्रयास करना चाहिए? यदि हां वह पर्यावरण क्या हो सकता है? या शायद कोड के कुछ समांतरता के साथ पाइथन पर्याप्त है? धन्यवाद

उत्तर

5

उपयोग HashingVectorizer और रैखिक वर्गीकरण मॉड्यूल उदाहरण SGDClassifier, Perceptron या PassiveAggresiveClassifier के लिए partial_fit एपीआई का समर्थन करता है कि संवर्द्धित vectorize और स्मृति अग्रिम में सभी डेटा लोड करने के लिए बिना मॉडल जानने के लिए में से एक है और आप नहीं करना चाहिए सैकड़ों हजारों (हैंश) सुविधाओं के साथ लाखों दस्तावेजों पर वर्गीकरण सीखने में कोई समस्या है।

हालांकि आपको एक छोटी सी उपसमूह लोड करना चाहिए जो स्मृति में फिट बैठता है (उदाहरण के लिए 100k दस्तावेज़) और ग्रिड खोज पाइपलाइन ऑब्जेक्ट का उपयोग करके वेक्टरिज़र के लिए अच्छे पैरामीटर और मास्टर शाखा के RandomizedSearchCV वर्ग का उपयोग करना चाहिए। आप उसी RandomizedSearchCV या स्मृति में फ़िट होने वाले बड़े, पूर्व-वेक्टरकृत डेटासेट (उदाहरण के लिए लाखों दस्तावेज़) का उपयोग करके नियमितकरण पैरामीटर (उदाहरण के लिए सीएडीडी क्लासिफायर के लिए सीए) के लिए नियमितकरण पैरामीटर (उदा। सीजीडी क्लासिफायर के लिए सी) को भी ठीक कर सकते हैं।

इसके अलावा रैखिक मॉडल औसतन जा सकता है (औसत coef_ और 2 रेखीय मॉडल की intercept_) ताकि आप, डाटासेट विभाजन कर सकते हैं रैखिक मॉडल स्वतंत्र रूप से जानने के लिए और उसके बाद मॉडल औसत अंतिम मॉडल पाने के लिए।

3

मूल रूप से, यदि आप numpy, scipy, और sklearn पर भरोसा करते हैं, तो पायथन एक बाधा नहीं होगी क्योंकि उन पुस्तकालयों के सबसे महत्वपूर्ण भाग सी-एक्सटेंशन के रूप में लागू किए जाते हैं।

लेकिन, चूंकि आप लाखों साइटों को स्क्रैप कर रहे हैं, तो आप अपनी एकल मशीन की क्षमताओं से बाध्य होने जा रहे हैं। मैं कई सर्वरों पर अपना वर्कलोड वितरित करने के लिए PiCloud [1] या अमेज़ॅन वेब सर्विसेज (ईसी 2) जैसी सेवा का उपयोग करने पर विचार करता हूं।

क्लाउड क्विज़ [2] के माध्यम से आपके स्क्रैपिंग को फ़नल करना एक उदाहरण होगा।

[1] http://www.picloud.com

[2] http://blog.picloud.com/2013/04/03/introducing-queues-creating-a-pipeline-in-the-cloud/

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