2016-10-16 4 views
0

Во-первых, я уместить его на своде смс:CountVectorizer: метод преобразования возвращает многомерный массив на одной текстовой строке

from sklearn.feature_extraction.text import CountVectorizer 
clf = CountVectorizer() 
X_desc = clf.fit_transform(X).toarray() 

, кажется, работает отлично:

X.shape = (5574,) 
X_desc.shape = (5574, 8713) 

Но затем я применил преобразование метод к TextLine, как мы знаем, она должна иметь (, 8713) форму, как результат, но то, что мы видим:

str2 = 'Have you visited the last lecture on physics?' 
print len(str2), clf.transform(str2).toarray().shape 

52 (52, 8713)

Что здесь происходит? Еще одна вещь - все цифры - нули

+0

Что такое 'str1' в' clf.transform (str1) '? – MaxU

ответ

3

Вам всегда нужно передать массив или вектор в transform; если вы просто хотите, чтобы превратить один элемент, вам нужно передать одноэлементный массив, а затем извлечь его содержимое:

clf.transform([str1])[0] 

Кстати причина того, что вы получаете 2-мерный массив в качестве вывода является то, что строка фактически хранится в виде списка символов, и поэтому вектор-идентификатор обрабатывает вашу строку как массив, где каждый символ рассматривается как один документ.

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

  • Нет связанных вопросов^_^