Source code for OpenAttack.metric.algorithms.sentence_sim

from .base import AttackMetric
from ...tags import *

[docs]class SentenceSim(AttackMetric): NAME = "Sentence Similarity" TAGS = { TAG_English }
[docs] def __init__(self): """ :Pakcage Requirements: * sentence_transformers :Language: english """ from sentence_transformers import SentenceTransformer from ...data_manager import DataManager self.model = SentenceTransformer(DataManager.load("AttackAssist.SentenceTransformer"), device='cuda')
[docs] def calc_score(self, sen1 : str, sen2 : str) -> float: """ Args: sen1: The first sentence. sen2: The second sentence. Returns: Sentence similarity. """ from sentence_transformers import util emb1,emb2 = self.model.encode([sen1,sen2],show_progress_bar=False) cos_sim = util.pytorch_cos_sim(emb1, emb2) return cos_sim.cpu().numpy()[0][0]
def after_attack(self, input, adversarial_sample): if adversarial_sample is not None: return self.calc_score(input["x"], adversarial_sample)