Я пытаюсь сделать текстовый классификатор, используя «Sci kit», изучать слова. Векторизация в классификатор. Тем не менее, мне было интересно, как добавить другую переменную на вход, кроме самого текста. Скажем, я хочу добавить несколько слов в текст в дополнение к тексту (потому что я думаю, что это может повлиять на результат). Как мне это сделать?
Должен ли я добавить еще один классификатор поверх этого? Или есть способ добавить этот ввод в векторный текст?
Спасибо.Sklearn другие входы в дополнение к тексту для классификации текста
2
A
ответ
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
О, я вижу. Большое спасибо, сэр. –
Я работаю над подобной проблемой и ищет в использовании [Feature Union] (http://scikit-learn.org/stable/modules/generated/ sklearn.pipeline.FeatureUnion.html) http://scikit-learn.org/stable/modules/pipeline.html#feature-union. –