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

使用Word2Vec训练网络嵌入时生成节点向量数远少于总节点数是什么原因

问题根因

你训练时只得到28015个向量是因为Gensim的Word2Vec默认开启了低频词过滤:默认min_count=5,即所有在随机游走序列中总出现次数少于5的节点都会被直接排除,不会生成对应向量。图中度数较低的节点、孤立节点大概率在随机游走中出现次数不足阈值,因此被过滤。

解决步骤

  • 第一步:修改Word2Vec初始化参数,关闭低频过滤
    你只需要在初始化Word2Vec时添加min_count=1参数,即可保留所有至少出现过1次的节点:
    def run_skipgram(walk_path):
        walks = np.load(walk_path).tolist()
        # 新增min_count=1参数,不过滤任何出现过的节点
        skipgram = Word2Vec(sentences=walks, vector_size=128, negative=5, window=8, sg=1, workers=6, epochs=3, min_count=1)
        
        keys = list(map(int, skipgram.wv.index_to_key))
        keys.sort()
        
        vectors = [skipgram.wv[key] for key in keys]
        return np.array(vectors)
    
  • 第二步:验证随机游走序列的完整性
    如果修改参数后仍未得到全部169343个节点的向量,说明你生成的随机游走序列本身没有覆盖所有节点,建议提前统计游走序列中所有去重后的节点总数,排查随机游走生成逻辑是否遗漏了孤立节点、度数为0的节点。
  • 第三步:校验节点类型一致性
    确保游走序列中存储的节点标识和你后续查询的节点类型完全一致,避免出现字符串、整数类型不匹配导致的查询遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:06:03