2016-07-22 2 views
0

Я пытаюсь найти ближайших соседей в наборе описаний. Описания обычно содержат 1-15 слов, которые я токенизирую, используя TfIdfVectorizer scikit. Затем, с тем же векторизатором, я подгоняю базовое описание. Тем не менее, кажется, что векторизатор делит эту на отдельные символы, а не слова, потому что в результате разреженная матрица имеет форму [число букв в описании базы х количества уникальных слов в корпусе]TfIdfVectorizer делит слова на отдельные символы?

descriptions = 'total assets' 

products = LoadData('C:/dict.csv', dtype = {'Code': np.str, 'LocalLanguageLabel': np.str}) 
products = products.fillna({'LocalLanguageLabel':''}) 

from sklearn.feature_extraction.text import TfidfVectorizer 
vectorizer = TfidfVectorizer(token_pattern=r'\b\w+\b') 
#tried the below two as well 
#vectorizer = TfidfVectorizer() 
#vectorizer = TfidfVectorizer(token_pattern=r'\b\w+\b', analyzer = 'word') 
dict_matrix = vectorizer.fit_transform(products['LocalLanguageLabel']) 
input_matrix = vectorizer.transform(description) 

from sklearn.neighbors import NearestNeighbors 
model = NearestNeighbors(metric='euclidean', algorithm='brute') 
model.fit(dict_matrix) 

distance, indices = model.kneighbors(input_matrix,n_neighbors = 10) 

когда я напечатать input_matrix, это то, что я получаю (вы можете догадаться, что индексы относятся к символам в «totalassets»):

print(input_matrix) 
(0, 33478) 1.0 #t 
(1, 24021) 1.0 #o 
(2, 33478) 1.0 #t 
(3, 2298) 1.0 #a 
(4, 20272) 1.0 #l 
(6, 2298) 1.0 #a 
(7, 30874) 1.0 #s 
(8, 30874) 1.0 #s 
(9, 11386) 1.0 #e 
(10, 33478) 1.0 #t 
(11, 30874) 1.0 #s 

<12x39859 sparse matrix of type '<class 'numpy.float64'>' 
with 11 stored elements in Compressed Sparse Row format> 

ли, что ожидается? Я ожидал бы 10 дистанций и 10 индексов, вместо этого я получаю 12 списков по 10 элементов каждый.

ответ

0

Правильно, ответ был довольно прост для количества времени, которое я потратил на него. Я завернул description в список и получил ожидаемые 10 результатов:

input_matrix = vectorizer.transform([description]) 
Смежные вопросы