in augly/text/augmenters/fun_fonts.py [0:0]
def substitute(self, data: str) -> str:
tokens = tokenize(data)
font = random.sample(self.fonts, 1)[0]
results = []
if self.granularity == "word":
aug_word_cnt = self._generate_aug_cnt(
len(tokens), self.aug_min, self.aug_max, self.aug_p
)
aug_word_idxes = set(
get_aug_idxes(
self, tokens, list(range(len(tokens))), aug_word_cnt, Method.WORD
)
)
for i, token in enumerate(tokens):
if i not in aug_word_idxes:
results.append(token)
continue
if self.vary_fonts:
font = random.sample(self.fonts, 1)[0]
results.append(self.apply_font(token, font, Method.WORD))
elif self.granularity == "char":
all_chars = [char for token in tokens for char in list(token)]
aug_char_idxes = set(self.generate_aug_idxes(all_chars))
char_idx = 0
for token in tokens:
result = ""
chars = list(token)
for char in chars:
if self.vary_fonts:
font = random.sample(self.fonts, 1)[0]
if char_idx not in aug_char_idxes:
result += char
else:
result += self.apply_font(char, font, Method.CHAR)
char_idx += 1
results.append(result)
else:
if random.random() < self.aug_p:
for token in tokens:
results.append(self.apply_font(token, font, Method.WORD))
else:
results = tokens
return detokenize(results)