我已经把每个作者在每篇文章中的贡献值算出来了,怎么算两两合作的权重呀?
import numpy as np
out_degree = np.sum(adjacency_matrix, axis=1)
in_degree = np.sum(adjacency_matrix, axis=0)
coauthorship_weight = out_degree + in_degree
author_weights = {i: coauthorship_weight[i] for i in range(len(coauthorship_weight))}
在一个作者合作网络中,每个作者与其他作者之间的合作关系可以表示为一个图形,其中每个作者都是一个节点,每个合作关系则是一条边。可以使用以下公式来计算每个节点(即每个作者)在合作网络中的权重:
w(i) = α * deg(i) + (1-α) * sum(w(j)/deg(j))
其中,w(i) 表示节点 i 的权重,deg(i) 表示节点 i 的度数(即与其相连的边的数量),w(j) 表示与节点 i 相连的节点 j 的权重,deg(j) 表示节点 j 的度数。α 是一个调整参数,用于平衡节点的度数和与其相连的节点的权重之间的影响。在这个公式中,度数越大的节点会得到更高的权重,与其相连的节点的权重也会对该节点的权重产生影响,同时调整参数 α 可以影响节点度数和相邻节点权重之间的平衡。
根据提供的信息,可以用以下公式计算两个作者之间的合作权重:
合作权重 = ∑(i=1 to n) min(贡献值A_i, 贡献值B_i)
其中,n是两个作者共同发表的文章数,贡献值A_i和贡献值B_i分别是两个作者在第i篇文章中的贡献值。
下面是一个Python代码示例,假设已经有了一个包含每个作者在每篇文章中贡献值的字典author_contributions,其中键是作者名字,值是一个列表,列表中每个元素是该作者在对应文章中的贡献值:
def calc_collaboration_weight(author1, author2, author_contributions):
common_articles = set(author_contributions[author1].keys()) & set(author_contributions[author2].keys())
weight = 0
for article in common_articles:
weight += sum(min(author_contributions[author1][article][i], author_contributions[author2][article][i]) for i in range(len(author_contributions[author1][article])))
return weight
这个函数接受三个参数:两个作者的名字author1和author2,以及包含贡献值的字典author_contributions。函数首先找到两个作者共同发表的文章,然后对于每篇文章,计算两个作者在该文章中的合作权重并累加到weight中。最后返回weight作为两个作者的合作权重。
构造向量序列
X(0),X(1)=AX(0),⋯ ,X(n)=AX(n−1) X^{(0)},X^{(1)}=AX^{(0)},\cdots,X^{(n)}=AX^{(n-1)} X(0),X(1)=AX(0),⋯,X(n)=AX(n−1)
AAA为代求矩阵,X(0)X^{(0)}X(0)为任意非零向量向量
主特征值λ1\lambda_1λ1满足规律
λ1≈X(k+1)x(k)⇒λ1≈xi(k+1)xi(k) \lambda_1\approx\frac{X^{(k+1)}}{x^{(k)}}\Rightarrow\lambda_1\approx\frac{x_i^{(k+1)}}{x_i^{(k)}} λ1≈x(k)X(k+1)⇒λ1≈xi(k)xi(k+1)
实际计算公式
{Y(k)=X(k)∣∣X(k)∣∣∞X(k+1)=A∗Y(k)k=0,1,2,⋯ \left\{ \begin{aligned} Y^{(k)}=\frac{X^{(k)}}{||X^{(k)}||_\infty}\\ X^{(k+1)}=A*Y^{(k)} \end{aligned} \right . \quad k=0,1,2,\cdots ⎩⎪⎨⎪⎧Y(k)=∣∣X(k)∣∣∞X(k)X(k+1)=A∗Y(k)k=0,1,2,⋯
当k充分大的时候有,特征值λ1\lambda_1λ1和特征向量VVV分别等于
{∣λ1∣=max1≤1≤n∣xi(k)∣V1=Y(k) \left\{ \begin{aligned} |\lambda_1|=\max_{1\leq{1}\leq{n}}|x_i^{(k)}|\\ V_1=Y^{(k)} \end{aligned} \right . ⎩⎨⎧∣λ1∣=1≤1≤nmax∣xi(k)∣V1=Y(k)
Y(k)Y^{(k)}Y(k) 是将X(k)X^{(k)}X(k)进行归一化处理后的结果
该回答引用ChatGPT GPT-4
运行结果
代码
def cooperation_weight(alpha, beta, gamma, w_ia, w_ib, w_ic):
"""
计算两个作者在三个方面的合作权重。
参数:
alpha -- 期刊论文方面的权重
beta -- 科研项目方面的权重
gamma -- 专利合作方面的权重
w_ia -- 作者 i 和作者 j 在期刊论文合作方面的合作强度
w_ib -- 作者 i 和作者 j 在科研项目合作方面的合作强度
w_ic -- 作者 i 和作者 j 在专利合作方面的合作强度
返回:
合作权重
"""
weight = alpha * w_ia + beta * w_ib + gamma * w_ic
return weight
# 示例
alpha = 0.5
beta = 0.3
gamma = 0.2
w_ia = 10
w_ib = 5
w_ic = 3
cooperation_weight_value = cooperation_weight(alpha, beta, gamma, w_ia, w_ib, w_ic)
print(f"两个作者在三个方面的合作权重: {cooperation_weight_value}")