Metapath2vec 的python简单实现

本文在github上:https://github.com/Mrxiahelong/Unsupervised-Author-Disambiguation/实现

这里我们使用三张图结构  分别是paper-coauhor-paper,paper-cotitle-paper,paper-covenue-paper,也就是结点类型一种,边类型三种,我们的metapath类型为coauthor-cotitle-coauthor-cotitle.

def positive_sampler(path):
    '''
        对每一条path建立一个window大小的滑动窗口,
        例如 0 1 2 3 4,window大小为2,则返回 pos_u=[0,0,1,1,1.....],pos_v=[1,2,0,2,3....]
    '''
    pos_u,pos_v=[],[]
    for i in range(len(path)):
        if len(path)==1:
            continue
        u=path[i]
        v=np.concatenate([path[max(i-window,0):i],path[i+1:i+window+1]],axis=0)
        pos_u.extend([u]*len(v))
        pos_v.extend(v)
    return pos_u,pos_v    
def get_negative_ratio(metapath):
    '''
    对所有结点根据出现频率建立negative_ratio,出现频率越大的越有可能出现在负采样中
    返回的ratio 是对每一个结点被负采样的概率
    '''
    node_frequency=dict()
    sentence_count,node_count=0,0
    for path in metapath:
        for node in path:
        
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值