2


Я пытаюсь сделать текстовый классификатор, используя «Sci kit», изучать слова. Векторизация в классификатор. Тем не менее, мне было интересно, как добавить другую переменную на вход, кроме самого текста. Скажем, я хочу добавить несколько слов в текст в дополнение к тексту (потому что я думаю, что это может повлиять на результат). Как мне это сделать?
Должен ли я добавить еще один классификатор поверх этого? Или есть способ добавить этот ввод в векторный текст?
Спасибо.Sklearn другие входы в дополнение к тексту для классификации текста

+0

Я работаю над подобной проблемой и ищет в использовании [Feature Union] (http://scikit-learn.org/stable/modules/generated/ sklearn.pipeline.FeatureUnion.html) http://scikit-learn.org/stable/modules/pipeline.html#feature-union. –

ответ

1

Scikit learn классификаторы работают с массивами numpy. Это означает, что после векторизации текста вы можете легко добавить свои новые функции в этот массив (я беру это предложение назад, не очень легко, но выполнимо). Проблема заключается в категоризации текста, ваши функции будут скудными, поэтому нормальные добавления столбцов numpy не работают.

Код изменен с text mining example from scikit learn scipy 2013 tutorial.

from sklearn.datasets import load_files 
from sklearn.feature_extraction.text import TfidfVectorizer 
from sklearn.naive_bayes import MultinomialNB 
import numpy as np 
import scipy 

# Load the text data 

twenty_train_subset = load_files('datasets/20news-bydate-train/', 
    categories=categories, encoding='latin-1') 

# Turn the text documents into vectors of word frequencies 
vectorizer = TfidfVectorizer(min_df=2) 
X_train_only_text_features = vectorizer.fit_transform(twenty_train_subset.data) 


print type(X_train_only_text_features) 
print "X_train_only_text_features",X_train_only_text_features.shape 

size = X_train_only_text_features.shape[0] 
print "size",size 

ones_column = np.ones(size).reshape(size,1) 
print "ones_column",ones_column.shape 


new_column = scipy.sparse.csr.csr_matrix(ones_column) 
print type(new_column) 
print "new_column",new_column.shape 

X_train= scipy.sparse.hstack([new_column,X_train_only_text_features]) 

print "X_train",X_train.shape 

выход следующее:

<class 'scipy.sparse.csr.csr_matrix'> 
X_train_only_text_features (2034, 17566) 
size 2034 
ones_column (2034L, 1L) 
<class 'scipy.sparse.csr.csr_matrix'> 
new_column (2034, 1) 
X_train (2034, 17567) 
+0

О, я вижу. Большое спасибо, сэр. –

Смежные вопросы