यदि आपके पास बाहर की लाइब्रेरी का उपयोग करने का कोई मुद्दा नहीं है, तो मैं स्कोरिट-लर्न की सिफारिश करूंगा क्योंकि यह संभव है कि यह आपके द्वारा कोडित की गई चीज़ों से बेहतर और तेज़ हो सकता है। मैं बस कुछ इस तरह से करूँगा:
अपने कॉर्पस का निर्माण करें। मैंने सूची को स्पष्टता के लिए समझ लिया था, लेकिन आपका डेटा कैसे संग्रहीत किया जाता है, इसके आधार पर आपको अलग-अलग काम करने की आवश्यकता हो सकती है:
def corpus_builder(apple_inc_tweets, apple_fruit_tweets):
corpus = [tweet for tweet in apple_inc_tweets] + [tweet for tweet in apple_fruit_tweets]
labels = [1 for x in xrange(len(apple_inc_tweets))] + [0 for x in xrange(len(apple_fruit_tweets))]
return (corpus, labels)
महत्वपूर्ण बात यह है कि आप दो सूचियों के साथ समाप्त होते हैं जो इस तरह दिखती हैं:
([['apple inc tweet i love ios and iphones'], ['apple iphones are great'], ['apple fruit tweet i love pie'], ['apple pie is great']], [1, 1, 0, 0])
[1, 1, 0, 0] सकारात्मक और नकारात्मक लेबल का प्रतिनिधित्व करते हैं।
फिर, आप एक पाइपलाइन बनाएँ! पाइपलाइन एक स्किकिट-लर्न क्लास है जो टेक्स्ट प्रोसेसिंग के चरणों को एक साथ जोड़ना आसान बनाता है इसलिए आपको केवल एक वस्तु को कॉल करना होगा जब प्रशिक्षण / भविष्यवाणी करना होगा:
def train(corpus, labels)
pipe = Pipeline([('vect', CountVectorizer(ngram_range=(1, 3), stop_words='english')),
('tfidf', TfidfTransformer(norm='l2')),
('clf', LinearSVC()),])
pipe.fit_transform(corpus, labels)
return pipe
पाइपलाइन के अंदर तीन प्रसंस्करण चरण हैं। CountVectorizer शब्दों को टोकन देता है, उन्हें विभाजित करता है, उन्हें गिनता है, और डेटा को विरल मैट्रिक्स में बदलता है। TfidfTransformer वैकल्पिक है, और आप सटीकता रेटिंग के आधार पर इसे हटाना चाह सकते हैं (क्रॉस सत्यापन परीक्षण कर रहे हैं और सर्वोत्तम मापदंडों के लिए एक ग्रिड खोज इसमें शामिल है, इसलिए मैं यहां नहीं मिलेगा)। LinearSVC एक मानक पाठ वर्गीकरण एल्गोरिथ्म है।
अंत में, आप ट्वीट की श्रेणी की भविष्यवाणी करते हैं:
def predict(pipe, tweet):
prediction = pipe.predict([tweet])
return prediction
फिर से, ट्वीट को एक सूची में होना चाहिए, इसलिए मैंने माना कि यह एक स्ट्रिंग के रूप में फ़ंक्शन में प्रवेश कर रहा है।
उन सभी को एक कक्षा में रखें या जो भी हो, और आप कर रहे हैं। कम से कम, इस बहुत बुनियादी उदाहरण के साथ।
मैंने इस कोड का परीक्षण नहीं किया है, तो यह काम नहीं कर सकता है यदि आप सिर्फ कॉपी-पेस्ट करते हैं, लेकिन यदि आप scikit का उपयोग करना चाहते हैं, तो आपको यह पता लगाना चाहिए कि आपको कहां से शुरू करना चाहिए।
EDIT: चरणों को अधिक विस्तार से समझाने की कोशिश की।