PFEemp2024's picture
solving GPU error for previous version
4a1df2e
raw
history blame contribute delete
No virus
1.79 kB
"""
LanguageTool Grammar Checker
------------------------------
"""
import language_tool_python
from textattack.constraints import Constraint
class LanguageTool(Constraint):
"""Uses languagetool to determine if two sentences have the same number of
grammatical erors. (https://languagetool.org/)
Args:
grammar_error_threshold (int): the number of additional errors permitted in `x_adv`
relative to `x`
compare_against_original (bool): If `True`, compare against the original text.
Otherwise, compare against the most recent text.
language: language to use for languagetool (available choices: https://dev.languagetool.org/languages)
"""
def __init__(
self, grammar_error_threshold=0, compare_against_original=True, language="en-US"
):
super().__init__(compare_against_original)
self.lang_tool = language_tool_python.LanguageTool(language)
self.grammar_error_threshold = grammar_error_threshold
self.grammar_error_cache = {}
def get_errors(self, attacked_text, use_cache=False):
text = attacked_text.text
if use_cache:
if text not in self.grammar_error_cache:
self.grammar_error_cache[text] = len(self.lang_tool.check(text))
return self.grammar_error_cache[text]
else:
return len(self.lang_tool.check(text))
def _check_constraint(self, transformed_text, reference_text):
original_num_errors = self.get_errors(reference_text, use_cache=True)
errors_added = self.get_errors(transformed_text) - original_num_errors
return errors_added <= self.grammar_error_threshold
def extra_repr_keys(self):
return ["grammar_error_threshold"] + super().extra_repr_keys()