한국어 문장에서 숫자가 들어간 문장을 한글로 변환 해주는 모델입니다. 그 반대도 가능합니다.
숫자를 경우에 따라 읽는 방법이 달라지게 되므로 이를 딥러닝 모델을 활용해 해결하려는 토이 프로젝트입니다.
ex)
- 경제 1번지 <-> 경제 일번지
- 오늘 1시에 보는게 어때? <-> 오늘 한 시에 보는게 어때?
- 본 repo에서는 음성 데이터의 정답 스크립트를 KoSpeech 라이브러리를 사용하여 trn 파일로 전처리하여 사용했습니다. KSponSpeech는 이곳에서 다운 받을 수 있습니다.
- 공개할 모델은 이외에도 KoreanSpeech, KconfSpeech, KrespSpeech의 스크립트를 학습한 모델입니다.
만약 AIHub에서 STT용 데이터를 다운받으셨다면, 총 3번의 데이터 처리가 필요합니다.
- (raw_transcripts_preproc) 각 Raw Transcripts를 trn파일로 변경합니다.
- (preprocess) trn파일에서 num sentence와 ko sentence을 추출합니다. (여기서 1차 csv 저장이 발생합니다. out.csv)
- (postprocess) 추출한 데이터를 특수문자 전처리, 이상치 데이터 제거들을 처리 후 csv로 저장합니다. (여기서 2차 csv 저장이 발생합니다. post_out.csv)
AIHub에서 데이터를 다운로드 받음
프로젝트의 /data/raw 폴더에 압축 풀어서 넣기
/data/raw/{압축해제한데이터명}/config.yaml 생성
해당 yaml을 생성하는 방법 및 소스는 없으며, 아래 설명을 따라 직접 구성하여야 함
config.yml 예시
common:
구축기관: 솔루게이트
dir:
train_flag_dir_dict: {True: "1.Training", False: "2.Validation"}
parent_pattern: "[0-9].*"
child_pattern: "**/[0-9]*"
dataset:
domain_devset_cnt: {
"1.방송": 1,
"2.취미": 1,
"3.일상안부": 1,
"4.생활": 1,
"5.날씨": 1,
"6.경제": 1,
"7.놀이": 1,
"8.쇼핑": 1,
}
해당 파일은 같은 구축기관은 같은 폴더구조를 활용한다는 점에서 착안하여, .trn파일을 일관되게 만들게 하기 위함
common : 일반적인 data의 특징들을 다룸
dir : 서로 다른 폴더 규칙을 정의하기 위해, 각 데이터별로 특징을 작성해줘야함.
- train_flag_dir_dict : train/valid set 구성의 폴더명
- parent,child_pattern : 실제 메인, 서브도메인의 폴더명 정규식
dataset : dev set 등 데이터 추가 처리시 사용할 config
bash shell_scripts/make_trn_for_make_script.sh
python3 preprocess.py
python3 postprocess.py --csv_path={your_csv_dir}/{your_csv_filename}
혹여나 추가적인 전처리 잘못 (예를들면 feature, label이외의 length 3 list혹은 2보다 작은 list) 되거나
num과 ko 데이터가 길이가 다른경우 (뭔가 매칭이 잘못되거나 짤린 데이터)
아마 seq2seq을 이용해 학습한다면, 불필요한 문장이 예측되어 정확도가 더 떨어질 수도 있다고 판단했습니다.
결론적으로, 이런 데이터들을 처리하여 post_out.csv로 만들어줍니다.
원리는 sequencematcher 유사도를 사용했고, 인간 판단의 임계치를 활용했으므로, 100% 보장은 안되지만 전체 데이터의 15%를 전수검사 했을 시 오차범위는 없었습니다.
모델과 성능 등을 확인하려면 하기 URL을 참고하세요.
ko-barTNumText: https://huggingface.co/lIlBrother/ko-barTNumText
ko-TextNumbarT: https://huggingface.co/lIlBrother/ko-TextNumbarT