728x90
오타 생성기 아이디어:
오타는 누르고자 하는 것을 잘못 눌렀을때 발생한다.
누르고자 하는 글자 주변(키보드)단어들을 랜덤으로 섞어주면 오타 생성기가 만들어지지 않을까?
오타 발생 유형
(1). 주변 키보드 문자를 잘못 입력함.
(2). 쌍자음으로 잘못 입력함.
(3). 한영키를 잘못누름
오타 사전 작성
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))
짠~
반응형
'Machine learning > NLP' 카테고리의 다른 글
[NLP]. SentenceTransformer 모델 TensorFlow로 불러오기 (0) | 2022.12.12 |
---|---|
[NLP]. Sentence-Transformer 모델 onnx 형식으로 변환하기 (0) | 2022.12.12 |
[NLP]. 챗봇 답변 Top-k sampling 구현 (0) | 2022.09.27 |
[NLP]. 임베딩 벡터(embedding vector)를 문자열로 저장하는 방법(feat. byte type , base85 ) (0) | 2022.06.21 |
[NLP]. 구어체(채팅)데이터에서 필요한 품사만 가져오기 (feat.꼬꼬마 형태소 분석기) (0) | 2022.03.04 |