Source code for OpenAttack.attack_assist.substitute.char.chinese_sim_char
from typing import Optional
from .base import CharSubstitute
from ....data_manager import DataManager
from ....tags import *
[docs]class ChineseSimCharSubstitute(CharSubstitute):
TAGS = { TAG_Chinese }
[docs] def __init__(self, k : Optional[int] = None):
"""
Returns the chars that is visually similar to the input.
Args:
k: Top-k results to return. If k is `None`, all results will be returned.
:Data Requirements: :py:data:`.AttackAssist.SIM`
:Language: chinese
"""
super().__init__()
self.sim_dict = DataManager.load("AttackAssist.SIM")
self.k = k
def substitute(self, char: str):
ret = []
if char in self.sim_dict:
for chr in self.sim_dict[char]:
ret.append((chr, 1))
if self.k is not None:
ret = ret[:self.k]
return ret