TELUS Digital AI Community uses vector representations when evaluating semantic similarity. Implement a custom weighted cosine similarity metric that gives each vector dimension a configurable importance.
Write weighted_similarity(a, b, weights) to accept three lists of equal length containing real numbers. For each dimension i, weights[i] must be nonnegative. Compute:
similarity = Σ(weights[i] * a[i] * b[i]) / (sqrt(Σ(weights[i] * a[i]^2)) * sqrt(Σ(weights[i] * b[i]^2)))
Return a Python float. Dimensions with weight 0 must not affect the result. If either weighted vector has zero magnitude, return 0.0 instead of raising an error. The result should be in [-1.0, 1.0] for valid inputs.
def weighted_similarity(a, b, weights):