Source code for pysummarization.computabledistance.kl_divergence

# -*- coding: utf-8 -*-
import numpy as np
from pysummarization.computable_distance import ComputableDistance


[docs]class KLDivergence(ComputableDistance): ''' Compute Kullback-Leibler divergence(KLD) between two vectors. This class considers KLD as a kind of distance. '''
[docs] def compute(self, x_arr, y_arr): ''' Compute distance. Args: x_arr: `np.ndarray` of vectors. y_arr: `np.ndarray` of vectors. Retruns: `np.ndarray` of distances. ''' y_arr += 1e-08 return np.sum(x_arr * np.log(x_arr / y_arr), axis=-1)