def jsd_opinions(co):
"""Calculate Jensen-Shannon divergence between (contrastive) opinions.
Implements Jensen-Shannon divergence between (contrastive) opinions as
described in [Fang et al., 2012] section 3.2.
Parameter:
co : numpy ndarray
A numpy ndarray containing (contrastive) opinions (see
contrastive_opinions(query, topics, opinions, nks))
Returns:
float
The Jensen-Shannon divergence between the contrastive opinions.
"""
logger.debug('calculate Jensen-Shannon divergence between (contrastive) '
'opinions')
nPerspectives = co.shape[1]
result = np.zeros(nPerspectives, dtype=np.float)
p_avg = np.mean(co, axis=1)
for persp in range(nPerspectives):
result[persp] = entropy(co[:, persp], qk=p_avg, base=2)
return np.mean(result)
评论列表
文章目录