You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用种子主题列表训练BERTopic时触发ValueError形状不一致问题

BERTopic种子主题训练触发ValueError的解决思路

针对你遇到的ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.错误,结合Python 3.10.5和Numpy 1.24.3环境,提供以下解决思路:

  • 降低Numpy版本至1.23.x系列
    Numpy 1.24.x对非均匀形状数组的校验逻辑更严格,而BERTopic部分旧版本的代码逻辑未适配该变化。执行以下命令降级Numpy:

    pip install numpy==1.23.5
    

    降级后重新运行代码,大概率能解决该错误。

  • 升级BERTopic到最新稳定版
    BERTopic官方后续版本可能已修复与高版本Numpy的兼容问题,执行升级命令:

    pip install --upgrade bertopic
    

    升级后再尝试运行官方示例代码。

  • 手动生成种子主题嵌入(备选方案)
    如果上述两种方法无效,可以绕过模型自动生成种子主题嵌入的逻辑,手动计算每个种子主题的平均嵌入向量后传入模型:

    from bertopic import BERTopic
    from sklearn.datasets import fetch_20newsgroups
    from sentence_transformers import SentenceTransformer
    
    docs = fetch_20newsgroups(subset='all',  remove=('headers', 'footers', 'quotes'))["data"]
    
    seed_topic_list = [["drug", "cancer", "drugs", "doctor"],
                       ["windows", "drive", "dos", "file"],
                       ["space", "launch", "orbit", "lunar"]]
    
    # 初始化嵌入模型并手动生成种子主题的平均嵌入
    embedding_model = SentenceTransformer("all-MiniLM-L6-v2")
    seed_topic_embeddings = []
    for topic_terms in seed_topic_list:
        term_embeddings = embedding_model.encode(topic_terms)
        avg_topic_embedding = term_embeddings.mean(axis=0)
        seed_topic_embeddings.append(avg_topic_embedding)
    
    # 使用预生成的种子嵌入初始化模型
    topic_model = BERTopic(seed_topic_embeddings=seed_topic_embeddings, verbose=True, calculate_probabilities=False)
    topics = topic_model.fit_transform(docs)
    

内容的提问来源于stack exchange,提问作者Helena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:05:05