0
私は一連の説明の中で最も近い隣人を見つけようとしています。説明には、通常、scikitのTfIdfVectorizerを使用してトークン化している1-15語が含まれています。次に、同じベクタライザを使用して、ベースの説明に合っています。しかし、得られた疎な行列は[コーパスにおけるユニークワードのベース記述x個の文字の数が】形状であるので、ベクトル化は、むしろ言葉よりも、別の文字にこれを分割すると思わTfIdfVectorizerは単語を1文字に分割しますか?
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の指標が必要ですが、代わりにそれぞれ10の要素からなる12のリストが得られます。