DOI QR코드

DOI QR Code

A Method of Recognizing and Validating Road Name Address from Speech-oriented Text

음성 기반 도로명 주소 인식 및 주소 검증 기법

  • Lee, Keonsoo (Research Lab, CNAI Ltd.) ;
  • Kim, Jung-Yeon (ICT Convergence Research Center, Soonchunhyang University) ;
  • Kang, Byeong-Gwon (Department of Information and Communication Engineering, Soonchunhyang University)
  • Received : 2020.09.03
  • Accepted : 2021.01.25
  • Published : 2021.02.28

Abstract

Obtaining delivery addresses from calls is one of the most important processes in TV home shopping business. By automating this process, the operational efficiency of TV home shopping can be increased. In this paper, a method of recognizing and validating road name address, which is the address system of South Korea, from speech oriented text is proposed. The speech oriented text has three challenges. The first is that the numbers are represented in the form of pronunciation. The second is that the recorded address has noises that are made from repeated pronunciation of the same address, or unordered address. The third is that the readability of the resulted address. For resolving these problems, the proposed method enhances the existing address databases provided by the Korea Post and Ministry of the Interior and Safety. Various types of pronouncing address are added, and heuristic rules for dividing ambiguous pronunciations are employed. And the processed address is validated by checking the existence in the official address database. Even though, this proposed method is for the STT result of the address pronunciation, this also can be used for any 3rd party services that need to validate road name address. The proposed method works robustly on noises such as positions change or omission of elements.

TV홈쇼핑을 통한 상품 구매 과정에서, 전화망을 통한 배송지 정보의 확보는 필수적인 과정이며 동시에, 서비스 운영 효율을 높이기 위한 주요한 자동화 적용 대상 과정이다. 본 연구는 음성으로 기록된 배송지 정보를 자동으로 인식 및 검증하려는 방법을 제안한다. 본 제안 방법은 음성 기반의 주소 정보를 처리하는 데 필요한 다음의 세 가지 기능을 포함한다. 첫 번째 기능은 한글 발화문으로 부터 원래 주소의 표기 형태로 올바르게 변환하는 것이고, 두 번째 기능은 음성 녹취 과정에서 주소의 구성 요소별 순서 변화 혹은 동일 구성 요소의 중복 발화 같은 주소 잡음을 처리하는 것이며, 마지막 기능은 띄어쓰기 처리를 통한 최종 주소의 가독성을 보장할 수 있는 기능이다. 제안된 방법을 구현하기 위해 우정사업본부 주소 DB와 행정안전부의 주소 DB를 사용하였으며, 통화에서 획득한 주소 발화로부터 도로명 주소를 도출하고, 도출된 주소의 유효성을 검증하였다. 또한 제안 방법의 구현 결과물은 STT를 통한 발화 인식 결과뿐만 아니라, 키보드를 이용한 표준 입출력으로도 입력 채널을 확장하여, 주소 검증이 필요한 비음성 기반의 서비스에서도 활용될 수 있도록 하였다. 제안 방법은 주소 구성 요소의 위치 변화 잡음에 강건하게 동작했지만, 요소 생략의 경우 오작동 경향이 존재했다. 이는 생략된 요소에 의해 하위 요소의 지역을 명시하지 못하는 경우 처리하지 못한 모호함 때문이었다.

Keywords

1. 서론

1995년 국내에서 처음 시작된 TV홈쇼핑은 오늘날, GS 홈쇼핑, CJ홈쇼핑, 현대홈쇼핑, 롯데홈쇼핑, 농수산홈쇼핑, 그리고 아임쇼핑의 7개 업체를 필두로, 2019년 기준 총 매출 5조7268억의 규모를 보인다[1]. TV홈쇼핑을 통해 제품을 구매하려는 소비자는 우선 TV 방송을 보고, 구매하고자 하는 물건을 결정한 뒤, 전화로, 주문 의사를 밝히고, 결제정보와 배송지 정보를 등록하는 것으로 구매과정을 종료하게 된다. 구매 과정에서, 상담원이 소비자와 직접 통화하는 부분은 구매 의사를 확인하는 과정까지이며, 결제정보와 주소지 정보는 소비자가 음성을 통해 녹음하고, 추후 녹취된 정보의 전사를 통해 주소지를 확인하고, 출고를 진행하게 된다.

녹취된 주소 정보 전사와 그 주소 정보의 검증 과정을 자동화할 수 있다면, TV홈쇼핑의 업무 효율을 획기적으로 높일 수 있다. 이를 위해 본 연구에서는 음성으로 저장된 고객의 배송지 정보를 분석하여, 주소 구조에 따른 태깅 작업을 수행하기 위한 알고리즘의 개발 및 그 구현을 목표로 한다.

2. 한국의 주소 체계

한국의 주소 체계는 도로명 주소와 지번 주소로 구분된다. 지번 주소의 경우, 1945년 이전 일제강점기 시기에 도입되어 사용됐다. 하지만, 도시화에 따른 주소의 변동을 제대로 반영하지 못한다는 단점이 존재했다. 가령, 토지의 분할 및 합병 등에 따라 지번의 신규 생성, 삭제 및 변경이 반복되면서, 지번 자체의 배열이 무질서하게 변화되었고 그 결과로 인접 지역 간 주소의 연계성이 떨어지며, 한 지번 내에 여러 가옥이 밀집한 경우, 다수의 가옥이 동일 주소를 공유하거나, 기존의 분할된 필지가 합쳐져 대형 건물이 신축된 경우, 동일 건물에 여러 지번에 배정되는 경우 또한 존재했다. 더욱이 법정동과 행정동이 달라지면서, 지번 주소의 불편함이 적체되었다[2].

(표 1) 도로명주소법 시행령 제3조 요약

OTJBCD_2021_v22n1_31_t0001.png 이미지

(Table 1) Summary of article 3 of enforcement decree of the road name address act

행정동의 경우, 지방자치단체의 조례로 정해지는 만큼, 법정동과 다른 경우가 존재한다. 가령, 서울시 중구 명동의 경우, 16개의 법정동으로 구성되나, 행정동으로는 하나만 존재한다. 행정동 기준으로 행정업무가 진행되지만, 지번 주소는 법정동을 기준으로 정해지기 때문에, 일상생활에서의 지번 주소의 사용이 점점 일상과의 괴리를 보이게 되었다. 이런 문제를 해결하기 위해 도로명 주소 가 제안되었다. 2001년 1차 도로명주소 사업을 시작으로, 지번을 대신할 도로명주소가 만들어졌고, 수많은 도로에 그 이름이 신설되기 시작했다. 그리고 2014년 1월 1일부터 새로운 도로명 주소의 사용이 전면 시행되었다[3]. 원칙상으로는 토지대장을 제외한 모든 곳에서 도로명주소만을 써야 한다. 도로명 주소의 형식은 도로명주소법 시행령 제 3조*에 정의되어 있으며, 그 내용은 (표 1)과 같다.

시행령에 따라 도로명주소를 사용하기 위한 제반 규칙들이 정해져 있지만, 실제로는 시행령 규칙에 적합하게 사용되고 있지는 않다. 가령, 도로명주소법 시행규칙 제2조 제1항에는 도로명 주소를 읽는 방법으로, 건물 번호는 "번"으로 읽고, 하이픈은 "의"라고 읽게 되어있지만, 현실은 건물 번호까지 읽고, 하이픈은 "다시"라고 읽는 경우가 일반적이다. 또한, 제3조 제5항에서 명시된 것처럼, 건물 번호와 상세주소 사이를 쉼표로 구분하기보다는 괄호를 이용해 상세주소를 기술하는 경우가 일반적이다.

이처럼, 도로명주소를 사용하는 과정에 있어서, 시행령과 실제 사용법 사이의 차이, 도로명주소와 기존 지번 기반 주소 혼용의 문제가 존재하기에, 고객의 배송지 발화정보를 처리하기 위해서는 기존의 텍스트 기반 주소 처리 방법으로는 충분하지 못하다. STT(Speech-To-Text)를 이용하여 고객의 주소 발화를 인식 및 검증하기 위해, 본 연구에서 제안하는 방법은 다음과 같다.

3. 제안 방법

3.1 요구사항

TV홈쇼핑은 TV 방송을 통해 제품소개를 받은 고객이 전화망을 통해 구매 의사를 전달하고, 결제정보와 배송지 정보를 등록하면, 이후 상담사가 해당 정보를 확인 후, 해피콜을 통해 구매를 확정하는 과정으로 이루어진다. 본 제안 방법은 기존의 전화망을 통해 등록한 고객의 음성 정보를 판매 관리 시스템에 수작업으로 등록하는 과정의 효율을 높이려는 요구에 맞춰 배송지 정보를 자동으로 검증하기 위한 기능 개발을 목표로 한다.

정확한 배송지 정보를 획득하는 것은 배송 서비스의 효율을 높이기 위한 기반 요소로, 배송지를 적은 손글씨로부터 주소를 인식하는 방법[4], 문자 인식과 함께, 주소 발화정보를 동시에 사용하여, 획득한 배송지 정보를 결합하여 획득 주소의 정확도를 높이는 방법[5], 개체명 인식을 적용한 주소 정보 추출 방법[6] 등이 연구되었다. 하지만, 주소 시스템은 국가별로 상이하며, 음성 정보를 기반으로 하는 경우, STT 결과물로부터 정확한 배송 정보를 정제 및 추출하기 위해서는 각기 다른 방법을 필요로 한다. 본 연구의 경우, TV홈쇼핑에서 고객 구매 과정을 통해 획득한 배송지 정보의 정제 및 추출은 일반적인 개체명 인식 기술, 및 캐릭터 인식 기술의 단순 적용으로 해결되지 않는 분야로 다음의 특성을 갖는다.

녹취된 고객의 배송지 정보를 검증하기 위해, STT를 통한 텍스트 변환이 우선 수행되는 것을 가정하며, 이는 동시에, 제안 방법의 입력이 STT의 결과가 아닌, 키보드 등을 통한 표준 입력장치를 통해 획득된 텍스트 입력도 가능하다. 하지만, 본 제안 방법은 음성 기반의 주소 정보를 STT를 통해 변환하여 검증하는 것을 기본 목표로 하고 있기에, STT 결과의 제약 요소를 처리하는 것을 주요 기능으로 한다.

STT의 제약 요소는 다음의 세 가지로 정리할 수 있다. 첫째, STT를 통한 음성 변환 정보의 경우, 문자와 숫자의 변환이 처리되지 않은 상태의 텍스트가 출력되기 때문에, 주소 검증을 위해, 적절한 숫자 변환 과정이 필요하다. 가령, “청도군 운문면 마일 사길” 같은 STT 결과를 “마14 길”, “마일4길”, “마일 사길” 중 어느 것으로 변경할 것인지에 관한 판단을 내릴 수 있어야 한다. 둘째, 고객은 배송지 녹음 과정에서, 특정 주소의 일부분을 중복하거나, 주소 표기 순서를 바꾸어 말할 수 있다. 가령, “서울시, 아니, 서울특별시”처럼 말하거나, “광주시, 경기도”처럼 도명을 시명 앞에서 발화할 수 있다. 기본적으로 고객은 정확한 배송을 위해 성실히 주소를 발화한다고 가정하며, 고의적인 오배송 정보는 고려대상에서 제외한다. 셋째, STT 결과에서 띄어쓰기 정보는 사용하지 않는다. STT는 음성 검출(VAD : Voice Activity Detection)을 통해 발화 종료를 확정하고, 발화 결과에 대한 후처리 작업을 통해, 문장 종료 혹은 문장 내 띄어쓰기 구간을 결정하게 되는데, 이를 통해 도출된 띄어쓰기 정보의 신뢰성이 주소 내 구역 구분을 수행하기에 충분하지 않기 때문에, STT 내부의 띄어쓰기 정보는 사용하지 않는다[7,8].

3.2 필요기능

3.2.1 한글 발화의 원문자 변환 기능

주소 발화를 STT를 통해 텍스트로 변환했을 때, 텍스트 안에서 존재하는 숫자 발음을 숫자로 변화시킬 것인지, 발음 그대로 유지할 것인지를 판단할 수 있어야 한다. 가령, “산막이옛길”이라는 텍스트를 “산막이옛길”인지, “산막2옛길”인지를 결정하는 기능이 필요하다. 더욱이 “원호암사길”처럼, “강동구 암사길”의 경우에는 “암사”가 맞고, “충주시 원호암4길”은 “암4”가 맞는 경우가 존재하는 경우, 단순한 정규표현으로는 구분할 수 없다. 이런 숫자-문자 변환의 모호성은 건물번호와 건물 이름이 동시에 발화되었을 때, 특히 중요한데, “서울시 중구 청계천로 400 이마트”의 경우, “서울시 중구 청계천로 사백 이마트” 이라는 입력값에서, “사백 이마트”, “4 백이마트”, “402 마트”, 또는 “400 2마트”처럼, 다양한 변화 후보들 중에서 정답을 발견하기가 쉽지 않기 때문이다.

이 문제를 해결하기 위해서, 본 연구에서는 다음과 같은 방법을 사용한다. 숫자 표현의 변화가 필요한 부분은 “읍면”, “도로명” 두 부분으로, 우정사업본부의 주소 DB*를 기반으로 17개의 특별시, 직할시, 도에 대해서 각각의 주소 테이블을 생성하였다. 우정사업본부의 주소 DB는 다음의 26개의 컬럼으로 이루어져 있고, 이들 중 <시도, 시군구, 읍면, 도로명>과 <도로명>에 대한 발음을 추가하여, 각 시도별로 DB를 생성한다.

(표 2) 우정사업본부 주소 데이터베이스의 스키마 구조

OTJBCD_2021_v22n1_31_t0002.png 이미지

(Table 2) National Address database schema

이렇게 생성한 주소 DB의 테이블 스키마는 <시도, 시군구, 읍면, 도로명, 도로명발화>로 구성되며, <경기도, 광주시, 초월읍, 현산로385번길>의 레코드의 경우, 컬럼의 값은 “현산로삼백팔십오번길, 현산로삼팔오번길”로 발화 가능 표현을 쉼표로 구분된 문자열로 표현한다. 이후, STT를 통해 획득한 고객의 주소 발화에서 “도로명” 부분을 추출한 뒤, <도로명발화>의 발화 가능 표현들과 비교하여, 일치하는 발화 표현의 경우, 해당 레코드의 <도로명> 컬럼의 값으로 변경한다.

건물 이름의 경우, 도로명에 대한 발화와 표기를 비교한 방법과 동일한 방식으로 처리하며, 한 가지 예외 사항을 추가하여 진행한다. 이 예외 사항은, 건물 이름이 숫자로 시작하는 경우, 건물 번호와 구분이 올바르게 구분되지 않는 문제점을 해결하기 위함이다. 가령, “성동구 뚝섬로 379 이마트”라는 주소의 경우, “삼백 칠십 구이 마트”의 경우, “3792 마트”로 분리되는 문제가 존재한다. 이 문제를 해결하기 위해, 상세주소의 경우, 우측부터 시작해, “동/층/호” 정보를 정규표현을 이용해 분리해내고, 남은 상세주소를 대상으로, “시도”, “시군구”, “읍면”, “도로명”을 대상으로 해당 구역에 존재하는 건물 이름 목록을 검색한 뒤, 건물 이름과 일치하는 부분을 제외하고, 남은 부분을 “건물 번호”로 분리한다. 즉 “성동구 뚝섬로”에 존재하는 건물의 목록에서, 건물 이름이 “마트”로 끝나는 건물 중에, “마트” 앞의 명칭이 “이”, “구이”, “칠구이”, “칠십구이”가 존재하는지를 확인해가며, 일치하는 부분, 즉 “이마트”가 존재한다는 것을 확인하면, “이”를 제외한, “삼백칠십구”까지를 건물 번호로, “이마트”를 건물 이름으로 구분한다.

“건물 번호”와 “건물 이름”을 결정하기 위해, 행정안전부의 주소 데이터베이스*와 이 주소 DB를 사용하기 위해, 행정안전부에서 제공하는 도로명주소 API**를 사용하였다.

3.2.2 주소 구성 요소 추출 기능

도로명 주소는 “시도”, “시군구”, “읍면”, “도로명”, “건물 번호”, “상세주소”로 구성되고, “상세주소”는 다시 “건물 이름”과 “동/층/호”로 구분된다. 주소를 구성하는 각각의 세부 구성 요소를 분리하기 위한, 두 번째 단계는 주소를 “일반주소”와 “상세주소”로 분리하는 것이다. 주소 유효성에 대한 검증은 “일반주소”의 경우 그 주소가 주소 DB에 존재하는지 확인하여 결정한다. “상세주소”의 경우, 상세주소 중 “건물 이름”이 주소 DB에 존재하는지 확인하는 것을 통해 결정한다. “동/층/호” 정보에 대한 유효성을 검증하지 않는 까닭은 해당 정보의 실체는 직접 확인하는 것 이외의 방법이 없기 때문이다.

(표 3) 도로명 주소의 구성 요소별 수

OTJBCD_2021_v22n1_31_t0003.png 이미지

(Table 3) Numbers of elements that consist of road name address for each district

“일반주소”와 “상세주소”를 구분하기 위해서는, 우선 “일반주소”의 마지막인 “건물번호”를 찾아야 하고, “건물 번호”를 찾기 위해서는 “도로명”을 찾아야 하며, “도로명”을 찾기 위해서는 “시도”, “시군구”, “읍면” 정보를 찾아야 한다. 그래서, 첫 번째 단계가 “시도”, “시군구”, “읍면”, “도로명”을 찾는 것이 된다. 17개의 시도의 “시군구”, “읍면”, “도로명”의 수는 (표 3)과 같다.

“시도”는 총 17개의 고정 명칭으로 구성되며, “시군구”, “읍면”, “도로명”은 정해져 있기에, 정규표현 식을 이용해, 검출한다. 정규표현 식을 이용한 만큼, 정규표현과 다른 표기에 대해서는 대응하지 않는다. 다만, “시군구”의 경우는 생략 가능하여서, 생략된 구역 기준은 포함한다. 즉, “서울특별시”의 경우, “서울시” 또는 “서울”이라고 발화되어도 대응할 수 있도록 “서울(특별)?[시]?”처럼 정규표현 식을 사용한다. “도로명”의 경우, 숫자가 포함되어 있으므로, 숫자에 대한 발음표기를 변환하여, 입력된 고객의 발화와 비교한다. 발음표기는 두 가지 경우를 고려한다. 가령, “119”의 경우, “백십구”라고 발화될 수도 있고, “일일구”라고 발화될 수 있으므로, 두 가지 종류의 발화 경우를 같이 고려하여, “건물 번호”의 경우, “도로명”이 추출된 이후, 숫자 발화의 연속 값을 “건물 번호”로 가정한다. 이를 위해서, “도로명”과 “건물 번호”는 연속해서 존재한다고 가정한다. 이 규칙을 적용했을 때, “건물 번호” 뒤에 존재하는 “건물 이름”이 숫자로 시작하는 경우, “건물 번호”와 “건물 이름”이 올바르게 구분되지 않는 예외가 발생할 수 있다. 이 문제를 해결하려는 방법은 3.2.1에서 기술한 방식을 적용하여 처리한다. 이상의 주소 구성 요소 추출 과정에 대한 단계별 처리 과정은 다음 그림과 같다.

OTJBCD_2021_v22n1_31_f0001.png 이미지

(그림 1) 주소 구성 요소 분리 프로세스

(Figure 1) Address component separation process

3.2.3 주소 띄어쓰기 맞춤 기능

주소 띄어쓰기는 3.2.2의 주소 구성 요소의 추출이 완료되면, 두 가지 출력 방식을 적용하여 최종 사용자에게 제공한다. 첫 번째 출력 방식은 구성 요소에 따른 개별 출력 방식으로, 방식을 사용한다. 이는 이후 JSON 표현으로 쉽게 변환 가능하기 때문에, 외부 서비스와 RESTful 연동을 위해 사용될 수 있다. 두 번째 방식은, 단일 문자열로 출력하는 것으로, 구성 요소의 순서는 도로명주소 시행령 제3조 제1항에서 명기된 순서에 따라, 나열하며, 구분자로는 공백과 쉼표를 선택하여 사용한다. 이 방식은 전체 주소를 배송장에 직접 출력하기 위해 사용될 수 있다.

(표 4) 주소 표기 결정 과정 및 요구 파라미터

OTJBCD_2021_v22n1_31_t0004.png 이미지

(Table 4) Parameters for each process of determining the final address

3.3 프로세스 순서

본 연구에서 제안한 방법은 다섯 단계로 구성된다. 첫 번째 단계에서는 STT를 이용해, 사용자의 발화 내용을 입력받는다. 두 번째 단계에서는 주소 분리를 수행하며, “시도”, “시군구”, “읍면”, “도로명”, “건물 번호”, “상세주소”로 분리한다. “시도”와 “시군구” 정보는 정규표현 식을 이용해, 해당 정보를 추출하고, “읍면”과 “도로명” 정보는 이미 추출한 “시도”와 “시군구” 정보를 바탕으로, 내부 DB를 이용해, 해당 지역의 “읍면”과 “도로명”의 정보를 추출한 뒤, 분리한 “읍면”, “도로명” 정보와 비교하여, 주소 DB의 내용으로 변경한다. 예를 들어, “청도군 운 문면 마일 사길”로 “청도군 운문면 마일4길”이 검색되었다면, “마일 사길”은 “마일4길”로 변경된다. “읍면”과 “도로명” 정보가 확정되면, 세 번째 단계로, 행정안전부의 주소 DB를 이용해, 후보 주소 군을 수집한다. 이미 “시도”, “시군구”, “읍면”, “도로명”, “건물 번호”를 도출했음에도 불구하고, 후보 주소 군이 나오는 까닭은 “건물 번호”의 오인식 가능성이 있기 때문이다. 가령, “5”라는 건물 번호를 획득했을 때, “51”, “52” 등의 건물 번호를 갖는 주소들 이 후보 주소 군이 된다. 네 번째 단계는 상세주소를 검증한다. 상세주소는 “건물 이름”과 “동/층/호”로 구성된다. 건물 이름을 확정할 수 없기 때문에, 상세주소의 우측부터, “동/층/호” 정보를 정규표현 식을 이용해 추출하고, 남은 부분을 “건물 이름”으로 가정한다. 이렇게 가정한 “건물 이름”이 실제 유효한 이름인지를 확인하기 위해, 해당 지역에 등록된 건물 목록을 “시도”, “시군구”, “읍면”, “도로명” 정보를 사용해 검색하고, 검색된 건물 목록에 상세 주소로부터 추출한 “건물 이름”이 존재하는지를 확인한다. “건물 이름”이 건물 목록 안에 존재한다면, 그 상세주소의 검증을 마친다. “건물 이름”이 확인되면, 두 번째 단계에서 분리한 “건물 번호”를 확정할 수 있고, 이를 통해 세 번째 단계에서 획득한 후보 주소 중에서 최종 주소를 확정할 수 있다. 확정된 주소의 도로명주소, 지번, 그리고 우편번호를 반환하는 것으로 프로세스는 종료된다.

OTJBCD_2021_v22n1_31_f0002.png 이미지

(그림 2) 제안 방법의 프로세스

(Figure 2) Flowchart of the proposed method

4. 구현 결과

제안 방법은 다음과 같은 구조를 기반으로 구현되었다. 고객이 전화로 전달한 주소 정보는 PBX(Private Branch Exchange)를 통해, RTP(Real-time Transport Protocol) 패킷으로 전송되고, RTP 패킷은 STT를 통해 텍스트로 변환된다. 이를 위한 전화망 연결 솔루션은 ㈜ CNAI의 컨택센터 솔루션 중 실시간 음성 통화 인식 모듈인 NACS와 C&ASR을 이용하였다.

해당 어플리케이션은 JavaSE 13를 기반으로 Sqlite 3.31과 JSON.simple 1.1.1을 사용하였다. 또한 i7-1065G7 CPU와 16G의 메모리를 탑재한 장비를 사용해 실험을 수행하였고, GPU는 사용하지 않았다.

OTJBCD_2021_v22n1_31_f0003.png 이미지

(그림 3) 구현 시스템 구성도

(Figure 3) The overview of system implementation

STT 모듈을 통해 획득된 주소 정보는 AddressManager에 의해서, <시도, 시군구, 구, 읍면, 도로명, 상세주소>로 분리되고 검증된다. AddressManager는 주소 검증을 위해서, 실제 유효 주소 목록을 검색하기 위한 Address Searcher와 해당 지역 내 건물 이름을 검색하기 위한 Building Na me Searcher를 참조하고, 주소 데이터베이스는 우정사업본부의 주소 DB와 행정안전부의 주소 데이터베이스를 사용하였다.

주소 분리 과정은 다음의 흐름을 따라 진행된다. 예제 주소는 STT 결과를 통해, 모든 숫자가 한글로 변환되고, 정규표현을 이용해, <시도, 시군구, 구> 정보를 분리한다. 분리 결과 옆의 숫자는 해당 정규표현의 인덱스 값으로 <읍면, 도로명>의 한글 표현을 올바른 숫자로 변환하기 위해 참조할 주소 테이블을 선택하기 위해 사용된다. <읍면, 도로명>에 대한 정보를 얻기 위한 질의어는 다음과 같다. 본 예제에서는 “읍면” 정보를 찾을 필요가 없으므로, “도로명” 정보만을 검색하였다.

(표 5) “도로명” 정보 확인을 위한 DB 참조용 질의어 샘플

(Table 5) A sample query to check information of a road name

검색 결과와 일치하는 “도로명” 정보를 획득한 뒤, 건물 주소를 정규표현을 이용해 추출하고 나면, 나머지 주소가 상세주소가 된다. 도로명 주소를 기반으로 우편번호를 검색하기 위해서 상세주소가 반드시 필요한 것은 아니며, 상세주소의 경우 해당 건물명이 주소 데이터베이스에 등록된 내용과 일치하지 않는 경우가 있을 수 있어서, 건물 번호까지 추출한 내용을 토대로, 우편번호 검색을 수행한다. 행정안전부에서 제공하는 주소 검색 솔루션*의 경우, 유사 주소까지 모두 검색 결과로 반환해주기 때문에, 회신 주소 목록에서 가장 적합한 주소를 선정하는 과정을 수행한다. 주소 선정 기준은 건물 이름과 번호의 일치를 기준으로 확인한다.

상세주소를 확인하기 위해서는 동/층/호 정보를 먼저 추출하고, 추출된 정보를 제외한 나머지 정보를 건물명으로 가정한 뒤, 건물 번호를 제외한 도로명 주소를 바탕으로, 해당 지역의 건물 목록을 얻어온 뒤, 얻어온 건물 목록과 상세주소에서 추출한 건물 이름을 비교하여, 동일 이름의 존재 여부를 확인한다. 건물 이름이 일치한다면, 건물 번호를 확인하고, 해당 주소의 지번과 우편번호를 확정한다.

본 구현은 Java 13을 기준으로 개발되었고, 행정안전부의 주소 검색 솔루션의 PC용 주소 검색기를 사용해 주소 목록 및 우편번호 검색을 위해 사용하고, 건물 목록을 검색하기 위해, 동일 주소 DB를 이용한 Django 기반의 RESTful 서비스를 구현하였다. 주소 발화 결과의 한글 표현을 숫자로 변화시키기 위해서는 우정사업본부의 주소 DB를 토대로, Sqlite를 이용해, 내부 데이터베이스로 변경 및 확장하여 사용하였다.

(표 6) 구현된 프로그램의 주소 변환 질의 수행 결과

OTJBCD_2021_v22n1_31_t0006.png 이미지

(Table 6) The result of executing the query on the implemented system

본 제안 방법의 성능 검증을 위해 다음과 같은 테스트를 수행하였다. 우선, 우정사업부 주소 데이터베이스에서 무작위로 200개의 도로명 주소를 선정하였다. 각 주소는 <시도, 시군구, 구, 읍면, [도로명, 건물번호], 상세주소>의 개별 요소로 분리된 뒤, 상세주소의 위치를 제외한 다른 요소의 순서를 무작위로 섞었다. 이는 실제 주소 발화시, 주소 구성 요소의 순서가 섞이거나, 주소 일부분이 생략되는 경우를 재현하기 위함이다. 하지만, 실제 환경에서 도로명과 건물번호가 분리되어 섞이는 경우는 확인되지 않았으며, 상세주소는 항상 주소의 끝부분에 위치하는 것으로 확인되었기에, 테스트 노이즈를 추가하는 과정에서 이런 노이즈는 재현하지 않았다. 최종적으로, 100개의 정형 주소, 50개의 구성 요소의 위치가 변경된 주소, 그리고 50개의 요소가 무작위로 생략된 주소를 대상으로 STT 결과를 생성하였다. STT 변환 과정에서의 인식 오류는 수작업으로 수정을 하였으며, STT 변환 결과의 오류는 가정하지 않았다. 즉, “서울 성동구”를 “서울 선동구”라고 인지한 경우는 STT의 오류이기 때문에 본 테스트에서는 이런 오류의 존재는 제외하였다. 하지만, “성동구”를 “성동구”로 인식하는 경우, 즉 STT가 인지한 띄어쓰기 정보 는 그대로 유지하였다.

이상의 과정을 통해 생성된 테스트 데이터에 대해서, 본 제안 방법과 CNAI의 기존 주소 변환 어플리케이션의 결과를 비교하였다. 테스트 결과는 다음과 같다. 제안 방법은 정형 주소에 대해서는 올바르게 동작하였고, 구성 요소의 위치가 바뀐 경우에도 올바르게 동작하였지만, 어느 요소가 변경되었는지에 따라 동작 시간이 2~4배가 추가로 소요되었다. 이는 해당 노이즈 패턴을 해결하기 위해 사용된 요소 검증 방식이, 정형 순서를 따라갈 때에 비해, 하위 요소를 먼저 검색한 뒤, 상위 요소를 판단하는 과정의 검색 복잡도가 높기 때문이었다. 한편 주소 요소가 생략된 경우, 정확도는 확연히 낮아졌는데, 주소 변환에 실패한 경우는 생략된 요소로 인해 하위 요소에 모호성이 생기는 경우 실패했다. 가령, 발음상으로는 동일하나 표기상으로는 상이한 도로명이 서로 다른 읍면에 존재하는데, 읍면 정보가 생략된 경우, 변경에 실패하였다. 하지만, 읍면 정보가 생략되었다고 해도, 시 정보가 제공되고, 시 정보를 통해 도로명 구분이 가능한 경우에는 올바르게 동작하였다.

(표 7) 제안 방법의 테스트 결과

OTJBCD_2021_v22n1_31_t0007.png 이미지

(Table 7) The result of the proposed method for the test set

5. 결론

TV홈쇼핑 분야에서, 전화망을 통해 구매를 원하는 고객의 요구에 빠르게 대응하는 것은 매출을 결정짓는 중요한 요소들 중에 하나다. 1995년 첫 서비스가 시작된 이후, 주문에 소요되는 시간을 줄이기 위한 다양한 노력들 이 진행되어 왔고, 현재는 해당 상품의 방송 중 빠르게 주문을 수집하고, 방송 후 주문 정보를 일괄 처리하는 흐름으로 안착되었으나, 주문과 해피콜(주문이 완료되었음을 확인하기 위한 후 처리 보고 전화) 사이의 대기 시간을 줄일 수 있다면, 고객 만족도 향상뿐만 아니라, 업무 효율의 증대를 기대할 수 있다. 특히, 배송 주소 검증은 인적 자원을 많이 요구하는 업무인 만큼, 자동화를 통한 업무 효율을 높일 수 있는 주요 분야이다. 본 제안 방법은 일괄 처리 및 실시간 처리 과정 모두에서, 고객의 배송지 발화를 자동으로 처리해 줄 수 있기 때문에, TV홈쇼핑 업무의 효율을 높이기 위한 주요 수단으로 활용될 수 있다. 이러한 발화 자동처리 기술은 특정 단어를 분석하여 그 단어의 빈도수를 파악하는 분야에도 활용 되어 질 수 있는데, 이는 문장 내에 사용된 지시대명사의 사용 빈도 파악과 같은 고령자의 인지 저하와 관련된 지표를 측정하는 응용으로도 적용이 가능하다. 또한, 입력 채널을 전화망에서 분리하여 키보드 등의 표준 입출력과 연결하여 동작할 수 있으며, 해당 기술은 고령자의 인지 중 기억력을 평가하기 위한 질문 중 하나인 거주지 주소에 대한 고령자의 발화를 분석하고 간접적으로 고령자의 인지를 검사하는 응용과 같이 주소 검증이 필요한 다양한 분야에 적용되어 활용 가능하다.

References

  1. S. Gwak, J. Lee, and E. Choi. "Forecast and Present Condition of Domestic TV Homeshopping Industry market" Journal of The Korean Data Analysis Society, vol. 20, no. 3, pp. 1369-1380, 2018. https://doi.org/10.37727/jkdas.2018.20.3.1369
  2. J. Oak, and M. Cho. "Challenges for Settlement of Road Name Address". issues & tests, (241), pp. 1-26, August 2016. https://www.gri.re.kr/%ec%9d%b4%ec%8a%88-%ec%a7%84%eb%8b%a8/?brno=5719&prno=5182
  3. D. KIM, D. S. Yoon, J. W. Kim and J. S. Park, "Postal automated sorting technology for Letter based on new Postcode scheme", Electronics and Telecommunications Trends., vol. 30, no. 5, pp. 89-98, October 2015. http://doi.org/10.22648/ETRI.2015.J.300510
  4. A. Brakensiek and R. Gerhard. "Handwritten address recognition using hidden Markov models." Reading and Learning. Springer, Berlin, Heidelberg, pp. 103-122. 2004. https://doi.org/10.1007/978-3-540-24642-8_7
  5. A. Singh, A. Sangwan and J. Hansen. "Improved parcel sorting by combining automatic speech and character recognition". In 2012 IEEE International Conference on Emerging Signal Processing Applications. pp. 52-55, 2012. https://doi.org/10.1109/ESPA.2012.6152444
  6. E. Yaman and K. Krdzalic-Koric. "Address Entities Extraction using Named Entity Recognition." In 2019 7th International Conference on Future Internet of Things and Cloud Workshops. IEEE, pp. 13-17, 2019. https://doi.org/10.1109/FiCloudW.2019.00016
  7. HG. Kim, and HS. Kim, "Effective Integration of Automatic Word Spacing and Morphological Analysis in Korean". In 2020 IEEE International Conference on Big Data and Smart Computing, pp. 275-278. February 2020. https://doi.org/10.1109/BigComp48618.2020.00-62
  8. H. Song, and S. Park, "Korean Part-of-speech Tagging Based on Morpheme Generation". ACM Transactions on Asian and Low-Resource Language Information Processing, vol. 19, no. 3, pp. 1-10. 2020. https://doi.org/10.1145/3373608