你好,马腾。根据你提供的代码和错误信息,问题可能出在模型的保存和加载上。请尝试以下步骤来解决这个问题:
- 确保你已经正确安装了
sentence-transformers
库。如果没有,请使用以下命令安装:
pip install sentence-transformers
- 在保存模型时,确保使用了正确的参数。你可以尝试将
save_ctfidf=True
和save_embedding_model=embedding_model
替换为save_pretrained=True
,如下所示:
model.save(stored_models_path, serialization="pytorch", save_pretrained=True)
- 在加载模型时,请确保你使用了正确的类名。根据你的描述,你使用的是
BERTopic
,所以在加载模型时,你应该使用BERTopic
类而不是loaded_model
。请尝试以下代码:
from bertopic import BERTopic
loaded_model = BERTopic.load(stored_models_path)
topics, probability = loaded_model.fit(doc2)
希望这些建议能帮助你解决问题。如果问题仍然存在,请随时告诉我,我会尽力提供更多帮助。
7条答案
按热度按时间0ve6wy6x1#
通常情况下,你不需要再次拟合一个已保存的模型,因为当你使用已保存的模型时,它既不会更好也不会更差。相反,我建议使用一个完全新的模型,因为拟合一个新模型或已保存的模型只会从头开始创建一个全新的模型。
uqcuzwp82#
你好,Maarten,也许我有点天真,但我们如何使用相同的模型在不同的数据集上进行预测?比如说,我们想要用80%的数据来训练,以查看未使用的20%数据的准确性,我们能否用BertTopic做到这一点?我提出这个问题的唯一原因是,我花了很长时间合并主题,想知道合并后的主题是否保留。
我还假设传统的训练-测试分割对这种类型的建模不起作用。
再次感谢
翻译结果:
嗨,马腾,也许我有点天真,但是我们如何使用相同的模型在不同的数据集上进行预测呢?例如,我们想要用80%的数据来训练,以查看未使用的20%数据的准确性,我们能否用BertTopic做到这一点呢?我提出这个问题的唯一原因是,我花了很长时间合并主题,想知道合并后的主题是否保留。此外,我也假设传统的训练-测试分割对于这种类型的建模并不适用。再次感谢。
2izufjch3#
你可以使用
fit
或fit_transform
来拟合模型。在创建了模型之后,你可以使用它来预测另一组数据,使用.transform
。vzgqcmou4#
谢谢Maarten,我刚才在想,如果重新训练时合并的主题能够被保存,但从我的理解来看,我认为这是不可能的,因为主题建模的本质就是这样?
8xiog9wr5#
实际上,对于大多数模型来说,这是不可能的。大多数
fit
模型会从头开始完全重新训练模型,而不会保存其先前的状态。您所描述的是在线主题建模,类似于partial_fit
。相反,可能值得训练一个全新的模型并将其与先前的模型合并。这个模型合并是新的,并在该项目的主要分支中实现。您可以找到一些关于它的文档here。
ego6inou6#
你好,Maarten,感谢你的见解。我指的是像这样手动合并的主题:
你是说没有办法以这种方式保存这些合并,而不需要每次我们想要减少主题数量时都手动重新执行吗?
bwntbbo37#
这取决于你想要什么,但一般来说,如果你在创建主题模型后合并了主题,那么你可以绝对地保存结果。然而,如果你想要重新训练结果,那么理所当然的是所有之前的结果都会被丢弃。重新训练几乎总是从头开始。
话虽如此,如果你合并了想要保留的主题并找到了新的、以前未发现的主题,那么你必须在新数据上创建一个新模型,并将该模型与之前的模型合并。