오타는 누르고자 하는 것을 잘못 눌렀을때 발생한다.
누르고자 하는 글자 주변(키보드)단어들을 랜덤으로 섞어주면 오타 생성기가 만들어지지 않을까?
주변 키보드 문자를 잘못 입력함.
쌍자음으로 잘못 입력함.
한영키를 잘못누름
typos_dict = {'ㅂ' : [ 'ㅈ','ㅁ','1','2','q','ㅃ'],
'ㅃ' : ['ㅂ'],
'ㅉ' : ['ㅈ'],
'ㄸ' : ['ㄷ'],
'ㄲ' : ['ㄱ'],
'ㅈ' : ['2','3','ㅂ','ㄷ','ㅁ','ㄴ','ㅇ','w','ㅉ'],
'ㄷ' : ['ㅈ','3','4','ㄱ','ㄴ','ㅇ','e','ㄸ'],
'ㄱ' : ['ㄷ','4','5','ㅅ','ㅇ','ㄹ','r','ㄲ'],
'ㅅ' : ['ㄱ','5','6','ㅛ','ㄹ','ㅎ','t','ㅆ'],
'ㅁ' : ['ㅂ','ㅈ','ㄴ','ㅋ','a'],
'ㄴ' : ['ㅁ','ㅈ','ㄷ','ㅇ','ㅋ','ㅌ','s'],
'ㅇ' : ['ㄴ','ㄷ','ㄱ','ㄹ','ㅌ','ㅊ','d'],
'ㄹ' : ['ㅇ','ㄱ','ㅅ','ㅎ','ㅊ','ㅍ','f'],
'ㅎ' : ['ㄹ','ㅅ','ㅛ','ㅗ','ㅍ','ㅠ','g'],
'ㅋ' : ['ㅁ','ㄴ','ㅊ','z'],
'ㅌ' : ['ㅋ','ㄴ','ㅇ','ㅊ','x'],
'ㅊ' : ['ㅌ','ㅇ','ㄹ','ㅍ','c'],
'ㅍ' : ['ㅊ','ㄹ','ㅎ','ㅠ','v'],
'ㅛ' : ['ㅅ','6','7','ㅕ','ㅎ','ㅗ','y'],
'ㅕ' : ['ㅛ','7','8','ㅑ','ㅗ','ㅓ','u'],
'ㅑ' : ['ㅕ','8','9','ㅐ','ㅏ','ㅓ','i'],
'ㅐ' : ['ㅒ','ㅑ','9','0','ㅔ','ㅣ','ㅏ','o'],
'ㅒ' : ['ㅐ'],
'ㅔ' : ['ㅐ','0','ㅣ','ㅖ','p'],
'ㅖ' : ['ㅔ'],
'ㅗ' : ['ㅎ','ㅛ','ㅕ','ㅓ','ㅠ','ㅜ','h'],
'ㅓ' : ['ㅗ','ㅕ','ㅑ','ㅏ','ㅜ','ㅡ','j'],
'ㅏ' : ['ㅓ','ㅑ','ㅐ','ㅣ','ㅡ','k'],
'ㅣ' : ['ㅏ','ㅐ','ㅔ','l'],
'ㅠ' : ['ㅍ','ㅎ','ㅗ','ㅜ','b'],
'ㅜ' : ['ㅠ','ㅗ','ㅓ','ㅡ','n'],
'ㅡ' : ['ㅜ','ㅓ','ㅏ','m'],
'?' : ['/'],
'!' : ['1'],
' ' : [' '],
'ㅢ' : ['ㅢ']}
랜덤으로 교체해주는 함수 구현
def generate_noise(sentence,mod_num):
jamo = list(split_syllables(sentence))
choice_idx = random.sample(range(1,len(jamo)),mod_num)
choice_char = [jamo[choice_idx[0]],jamo[choice_idx[1]],jamo[choice_idx[2]]]
jamo[choice_idx[0]] = random.choice(typos_dict[choice_char[0]])
jamo[choice_idx[1]] = random.choice(typos_dict[choice_char[1]])
jamo[choice_idx[2]] = random.choice(typos_dict[choice_char[2]])
return join_jamos(''.join(jamo))
** mod_num : 바꿀 자모 수
for i in range(10):
print(generate_noise("저희 초면인가요? 반갑습니다" , 3))