IndexError: List index out of range error - при реализации алгоритма Affinity Propagation для вычисления расстояния Левенштейна - как cluster_id=-1
Проблема Это немаркированный набор данных с заголовком (строкой) items.categories, вам необходимо сгруппировать базовые строки на основе синтаксического сходства. например: одежда и одежда должны входить в одну группу. После некоторых исследований я пришел к выводу, что расстояние Левенштейна - идеальный и эффективный метод решения этой проблемы. (Поправьте меня, если я ошибаюсь). Однако, когда я пытался реализовать этот алгоритм, у меня возникла ошибка с реализацией распространения сродства. После предварительной обработки содержимого в CSV-файле данные выглядят следующим образом: Данные в CSV-файле после предварительной обработки.
words=np.asarray(train_data_clean)
print(words)
len(words)
import en_core_web_sm
nlp = en_core_web_sm.load()
lev_similarity = -1*np.array([[distance.levenshtein(w1,w2) for w1 in words] for w2 in words])
affprop = AffinityPropagation(affinity="precomputed", damping=0.5)
affprop.fit(lev_similarity)
for cluster_id in np.unique(affprop.labels_):
exemplar = words[affprop.cluster_centers_indices_[cluster_id]]
cluster = np.unique(words[np.nonzero(affprop.labels_==cluster_id)])
cluster_str = ", ".join(cluster)
print(" - *%s:* %s" % (exemplar, cluster_str))
при выполнении последнего цикла for - это приводит к ошибке - list index out of range error. Эта ошибка вызывается первой строкой внутри цикла for (пример ...). И когда я проверил индекс - это происходит как - cluster_id = -1 содержимое lev_similarity:
Пожалуйста, помогите мне разобраться в проблеме, мне нужно построить систему кластеризации на основе синтаксического сходства, также скажите мне, есть ли лучший алгоритм / подход для решения этой проблемы. Любая помощь будет невероятно полезной.