У меня есть код, который выполняет кластеризацию векторов предложений по 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' будут отображаться несколько раз, если они близки к нескольким ' БР
Как бы мне этого добиться? Это просто что-то, что я могу добавить к своему коду или мне придется вычислять совершенно другой алгоритм?