본문 바로가기
IT 톺아보기/이런저런 공부

한글 오토마타 만들기 - 2

by 파초우 2023. 1. 18.
반응형

한글 변환 위한 준비 작업

이제 받아온 문자열에서 영어를 키보드의 한글과 mapping하여 "ㅎㅏㄴㄱㅡㄹ" 같이 만드는 작업을 진행할 것이다. 여기서, 변환 작업을 진행하기 위해서는 키보드 자판의 영어들이 한글의 어떠한 것과 매칭되어 있는지 잘 파악하고 작업을 진행해야 한다. 예시로 "a"는 "ㅁ"과 매칭되어 있으니 "a": 0x3141("ㅁ"의 아스키코드)로 하는 dictionary를 만들어 준다.

keyval = {
    "A": 0, "B": 0, "C": 0, "D": 0, "E": 0x3138,
    "F": 0, "G": 0, "H": 0, "I": 0, "J": 0, "K": 0,
    "L": 0, "M": 0, "N": 0, "O": 0x3152, "P": 0x3156,
    "Q": 0x3143, "R": 0x3132, "S": 0, "T": 0x3146,
    "U": 0, "V": 0, "W": 0x3149, "X": 0, "Y": 0, "Z": 0,
    "a": 0x3141, "b": 0x3160, "c": 0x314a, "d": 0x3147,
    "e": 0x3137, "f": 0x3139, "g": 0x314e, "h": 0x3157,
    "i": 0x3151, "j": 0x3153, "k": 0x314f, "l": 0x3163,
    "m": 0x3161, "n": 0x315c, "o": 0x3150, "p": 0x3154,
    "q": 0x3142, "r": 0x3131, "s": 0x3134, "t": 0x3145,
    "u": 0x3155, "v": 0x314d, "w": 0x3148, "x": 0x314c,
    "y": 0x315b, "z": 0x314b
}

그리고 종성에 사용되는 "ㄳ, ㄵ"같은 친구들이 조합될 수 있는 환경을 조성해주기 위해 "ㄱㅅ": "ㄳ" 같은 dictionary를 만들어 준다.

double_jong: dict = {
    (12593, 12613): chr(0x3133), (12596, 12616): chr(0x3135), # ㄳ ㄵ
    (12596, 12622): chr(0x3136), (12601, 12593): chr(0x313a), # ㄶ ㄺ
    (12601, 12609): chr(0x313b), (12601, 12610): chr(0x313c), # ㄻ ㄼ
    (12601, 12613): chr(0x313d), (12601, 12620): chr(0x313e), # ㄽ ㄾ
    (12601, 12621): chr(0x313f), (12601, 12622): chr(0x3140), # ㄿ ㅀ
    (12610, 12613): chr(0x3144) # ㅄ
}

이제는 반대로 뒤에 모음이 왔을 때 이중 모음을 분리해주기 위한 작업을 할 수 있도록 dictionary를 구성해준다.

double_jong_num = {
    "ㄳ": "ㄱㅅ", "ㄵ": "ㄴㅈ",
    "ㄶ": "ㄴㅎ", "ㄺ": "ㄹㄱ",
    "ㄻ": "ㄹㅁ", "ㄼ": "ㄹㅂ",
    "ㄽ": "ㄹㅅ", "ㄾ": "ㄹㅌ",
    "ㄿ": "ㄹㅍ", "ㅀ": "ㄹㅎ",
    "ㅄ": "ㅂㅅ"
}

마지막으로는 "ㅘ, ㅞ" 같은 이중 모음이 입력되었을 때, 합쳐줄 수 있는 dictionary를 구성해준다.

double_jung = {
    # ㅘ ㅙ ㅚ ㅝ ㅞ ㅟ ㅢ
    (12631, 12623): chr(12633), (12631, 12624): chr(12632),
    (12631, 12643): chr(12634), (12636, 12627): chr(12637),
    (12636, 12628): chr(12638), (12636, 12643): chr(12639),
    (12641, 12643): chr(12642)
}

이제 영어를 한글로 변환하기 위한 준비 작업은 마무리 되었고 이제 입력 받은 문자열을 탐색하며 변환하는 작업을 진행해준다.

 

 

https://ph-biginner.tistory.com/137

 

반응형