Назначение векторов несколько раз для кластероидов - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть код, который выполняет кластеризацию векторов предложений по Kmeans:

from sentence_transformers import SentenceTransformer
model = SentenceTransformer('distilbert-base-nli-mean-tokens')

# Import Sentences that shall be analyzed
df = pd.read_excel(file_name, sheet_name = my_sheet)
X_test = []
X_test.extend(df['BR'])
X_predict = []
X_predict.extend(df['FS'])

#run vectorization of the text
vec = model.encode(X_test)
vecpred= model.encode(X_predict)

#Calc number of clusters / unique sentences
vecarray = np.asarray(vec)
clusters = [x for n, x in enumerate(vecarray) if x not in vecarray[:n]]
n_cluster = len(clusters)

#Initialize Centroids
centroids = np.asarray(clusters)

#KMeans
modelkmeans = KMeans(n_clusters=n_cluster, init=centroids, max_iter=1, n_init=1)
modelkmeans.fit(vecpred)

Я определяю центроиды вручную для всех векторов 'BR'. мой код назначает одно 'FS' предложение ближайшему предложению 'BR' . Есть ли способ показать, скажем, 3 ближайших предложений 'FS' для 'BR' -кластероида. И да, некоторые предложения 'FS' будут отображаться несколько раз, если они близки к нескольким ' БР

Как бы мне этого добиться? Это просто что-то, что я могу добавить к своему коду или мне придется вычислять совершенно другой алгоритм?

...