Dışarıdan bir kitaplık kullanmakla ilgili bir sorununuz yoksa, scikit-learn'ü tavsiye ederim çünkü bunu muhtemelen kendi başınıza kodlayabileceğiniz her şeyden daha iyi ve daha hızlı yapabilir. Bunun gibi bir şey yapardım:
Külliyatınızı oluşturun. Açıklık için liste anlamalarını yaptım, ancak verilerinizin nasıl saklandığına bağlı olarak farklı şeyler yapmanız gerekebilir:
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)
Önemli olan, şuna benzeyen iki listeyle karşılaşmanızdır:
([['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] pozitif ve negatif etiketleri temsil eder.
Ardından bir Pipeline oluşturursunuz! Pipeline, metin işleme adımlarını birbirine zincirlemeyi kolaylaştıran bir scikit-learn sınıfıdır, böylece eğitim / tahmin sırasında yalnızca bir nesneyi çağırmanız gerekir:
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
Ardışık Düzen içinde üç işlem adımı vardır. CountVectorizer, kelimeleri belirteçlere ayırır, böler, sayar ve verileri seyrek bir matrise dönüştürür. TfidfTransformer isteğe bağlıdır ve doğruluk derecesine bağlı olarak onu kaldırmak isteyebilirsiniz (çapraz doğrulama testleri yapmak ve en iyi parametreler için bir ızgara araması yapmak biraz işin içindedir, bu yüzden buraya girmeyeceğim). LinearSVC, standart bir metin sınıflandırma algoritmasıdır.
Son olarak, tweet kategorisini tahmin edersiniz:
def predict(pipe, tweet):
prediction = pipe.predict([tweet])
return prediction
Yine, tweet'in bir listede olması gerekiyor, bu yüzden işleve bir dize olarak girdiğini varsaydım.
Hepsini bir sınıfa falan koyun ve bitirdiniz. En azından bu çok basit örnekle.
Bu kodu test etmedim, bu yüzden sadece kopyalayıp yapıştırırsanız çalışmayabilir, ancak scikit-learn'ü kullanmak istiyorsanız size nereden başlayacağınız konusunda bir fikir vermelidir.
DÜZENLEME: Adımları daha detaylı açıklamaya çalıştım.