问题描述: 当使用BERTopic Embeddings对新文本进行转换时,会出现以下ValueError错误:
ValueError: could not broadcast input array from shape (768) into shape (0)
这个错误的原因在于,我们训练BERTopic模型时,它只能处理与训练数据相同数量的数据。如果我们想对一个新文本进行转换,但是我们没有在训练数据中包括这个新文本,那么它将无法处理。
解决方案: 解决这个问题的方法是,使用BERTopic执行transform()方法之前,首先要确保我们的新文本已经包含在训练数据中。
举个例子,我们可以这样进行操作:
import pandas as pd from bertopic import BERTopic
train_data = pd.read_csv("train_data.csv")
model = BERTopic(verbose=True, calculate_probabilities=True) model.fit(train_data["text"])
new_data = pd.DataFrame({"text": ["This is a new text to predict"]}) train_data = train_data.append(new_data)
model.fit(train_data["text"])
new_text = ["This is a new text to predict"] new_text_embedding = model.transform(new_text)
可以看到,在这个例子中,我们首先将新文本添加到训练数据中,然后重新训练BERTopic模型。之后,我们可以对新文本进行transform()方法的操作,而不会出现ValueError错误。