본문으로 바로가기

NLP 과정에서 숫자 -> 수사로 변형할 때

num2words 패키지의 한국어 모듈을 사용하면

1 -> '일' , 2 -> '이' . 이렇게 고유어로만 변형된다.

 

이런 식으로 변형하면 문장에 들어갔을 때 ' 저거 일개 , 이거 이개' 라는 느낌으로 자연스럽지 않은 문장이 되기때문에

나는 숫자를 고유어가 아닌 관형사로 변형하길 원했다. ( 예: 1 -> '하나 , 한' )

 

다행히도 어느 훌륭하신 분이 노가다를 통해 이런 숫자 -> 한국어 수사 변형 패키지를 구현해 놓으셨다.

깃허브링크

패키지로 배포는 안해놓으셨고 그냥 py 파일을 가져다 쓰면 된다.

 

위 패키지를 사용하다가 문제가 발생했는데,

일의자리 숫자는 변형이 되지 않는 문제다.

다음의 코드로 해결하였다.

 

def _구현(gnum, 고유어여부 = False, 서수사여부 = False, 관형사및명사여부 = False):
    negative = False

    if int(gnum) == 0:
        return '영'
    elif int(gnum) < 0:
        gnum = str(-int(gnum))
        negative = True
    #추가구현
    elif int(gnum)<10:
        num = n2w(gnum,lang='ko')
        return 일의자리_고유어[num][1]