我试图在一组描述中找到最近的邻居。描述通常包含1-15个单词,我正在使用scikit的TfIdfVectorizer对其进行标记化。然后,使用相同的矢量器,拟合基本描述。然而,矢量器似乎将这个矩阵划分为字符而不是单词,因为生成的稀疏矩阵是形状[基本描述中的字母数x语料库中唯一单词的数量]
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)
当我打印输入矩阵时,这就是我得到的结果(您可以猜测索引与“totalassets”中的字符相关):
^{pr2}$这是意料之中的事吗?我希望有10个距离和10个索引,而我得到了12个列表,每个列表包含10个元素。在
对,我花在这上面的时间很简单。我将
description
打包到一个列表中,得到了预期的10个结果:相关问题 更多 >
编程相关推荐