Source code for OpenAttack.metric.algorithms.jaccard_char
from .base import AttackMetric
from ...tags import *
[docs]class JaccardChar(AttackMetric):
NAME = "Jaccard Char Similarity"
TAGS = { * TAG_ALL_LANGUAGE }
[docs] def calc_score(self, senA : str, senB : str) -> float:
"""
Args:
senA: First sentence.
senB: Second sentence.
Returns:
Jaccard char similarity of two sentences.
"""
AS=set()
BS=set()
for i in range(len(senA)):
AS.add(senA[i])
for i in range(len(senB)):
BS.add(senB[i])
return len(AS&BS)/len(AS|BS)
def after_attack(self, input, adversarial_sample):
if adversarial_sample is not None:
return self.calc_score( input["x"], adversarial_sample )
return None