BERTopic ValueError:距离矩阵不能包含负值

toiithl6  于 2个月前  发布在  其他
关注(0)|答案(2)|浏览(29)

根据您提供的代码和错误信息,问题可能出在bertopic_model.hierarchical_topics(texts)这一行。这个错误可能是由于数据集的某些特殊情况导致的。为了解决这个问题,您可以尝试以下方法:

  1. 检查您的数据集是否包含空值或非字符串类型的文本。如果有,请确保在使用sentence_model.encode()之前将它们转换为字符串类型。

  2. 您可以尝试使用不同的距离度量方法,例如"euclidean"或"cosine",看看是否仍然出现错误。

  3. 您可以尝试使用不同的聚类算法,例如K-means或DBSCAN,看看是否仍然出现错误。

  4. 您可以尝试调整UMAP模型的参数,例如n_neighborsn_componentsmin_dist,以找到适合您数据集的参数组合。

  5. 您可以尝试使用其他主题建模库,例如Gensim或LDA,看看是否仍然出现错误。

如果以上方法都无法解决问题,建议您提供更多关于数据集的信息,以便我们能够更好地帮助您解决问题。

h22fl7wq

h22fl7wq1#

确实可能会发生,生成的距离矩阵包含负值。有一个thread here,其中有一些解可以尝试。

55ooxyrt

55ooxyrt2#

感谢您!我按照您提到的方法进行了操作:

distance_function = lambda x: 1 - cosine_similarity(x)

# Calculate distance
embs = bertopic_model.c_tf_idf_[bertopic_model._outliers:]
X = distance_function(embs)

# Make sure it is the 1-D condensed distance matrix with zeros on the diagonal
np.fill_diagonal(X, 0)
X = squareform(X)
X[X<0]

使用上述方法,我得到了2个负值(总共307k)。
如果我使用您推荐的距离函数,分层主题似乎运行良好。
distance_function_abs = lambda x: np.abs(1 - cosine_similarity(x))
非常感谢!

相关问题