지능형 데이터 검색 엔진 개발 - 연구과정(2)

dhlee.ie 21.09.02
349 3 0

지능형 데이터 검색 엔진 개발 연구과정

반갑습니다. 지능형 Data 검색 엔진 개발을 진행하고 있는 D905 팀입니다. 저희 팀의 연구 과정을 정리하기에 앞서 저희 프로젝트를 간략하게 소개하겠습니다.

  • 우리가 개발하는 지능형 데이터 검색 엔진은?

    • SK텔레콤은 매일 발생하는 많은 양의 데이터를 체계적으로 저장하고 있으며 이를 분석하여 가치 있는 경영정보를 도출할 필요성은 높습니다.

    • 저장된 대용량의 정형(메타)데이터를 원활하게 검색/분석하고자 할 때 SQL에 대한 지식이 필요하지만 이를 습득하는 데 어려움이 많습니다.

    • 우리가 연구하는 검색 엔진은 SQL을 모르는 일반 사용자도 '일상에서 사용하는 언어로' 대용량 데이터에 접근하여 검색할 수 있게 하는 검색엔진을 개발하는 것입니다.

  • Text to SQL

    • Text to SQL은 관심있는 관계형 데이터베이스에 대한 자연어 질문을 SQL 질의로 변경해주는 연구분야로 이 분야의 방법론을 활용하여 지능형 데이터 검색 엔진 개발을 진행하였습니다.

 

1. 연구 진행 과정

D905의 전체 연구 과정은 아래와 같으며 현재 Baseline 모델 연구 및 실험까지 진행하였습니다.

figure

연구목표 설정

기존 제출하였던 제안서를 바탕으로 맨토님들과 협의하여 프로그램 기간 내 실현 가능하고 현재 SKT에서 우선하여 풀어야 하는 문제를 선정하여 연구목표로 설정하였습니다. 설정한 연구목표는 아래와 같습니다.

  1. SKT database에 대하여 한국어 자연어 질의를 SQL 문으로 변환해 주는 Text2SQL 모델 개발

  2. 원자는 자료가 어느 테이블에 존재하는지 예측하는 Table의 메타정보 예측 모델 개발

위의 연구 목표를 달성하기 위하여 D905는 맨토님들과 협의하여 7, 8월 간 데이터셋 구축을 위한 데이터 처리작업을 진행하였습니다. 동시에 Text2SQL모델을 스터디하고 baseline 모델을 선정하여 공개데이터(benchmark Dataset)에 대하여 재구현하는 연구를 진행하였습니다.

 

데이터셋 구축

아래 그림은 데이터셋 구축의 1cycle 과정입니다. 전체 데이터셋을 n개의 배치로 나누고 아래의 과정을 반복하여 데이터셋 구축을 진행하고있습니다. 이와같은 방법은 구축되는 데이터셋의 품질을 지속적으로 평가하고 수정/보완할 수있게하여 고품질의 데이터셋 구축을 가능하게 하였습니다.

[데이터셋 구축과정]

figure3

 

Baseline 모델 연구 및 실험

Text2SQL 모델의 기본 구조는 아래의 그림과 같이 자연어 질의심층신경망(Deep learning)모델을 거쳐 SQL쿼리로 변환되는 형태를 갖습니다. 심층신경망은 입력(자연어 질의)을 압축하는 인코더(Encoder)와 이를 SQL Query로 변환하는 디코더(Decoder)로 구성되어 있습니다. 인코더는 BERT, RoBERT, MT-DNN 등이 사용되며 디코더는 LSTM, Pointer Generator 등이 이용되고 있습니다.

[Baseline 모델 연구 및 실험]

figure2

D905는 여러 Text2SQL 모델의 보고된 성능, SKT 데이터와 적합한지, 모델 사용이 용이한지 등을 기준으로 BRIDGE Model 논문, code을 선정하여 초기 실험을 진행하였고 그 결과 논문의 결과와 유사하게 재현되는 것을 확인할 수 있었습니다.

 

 

2. 중간 발표 내용

D905팀의 중간 발표는 주로 데이터 구축을 어떻게 진행하고있는지를 다뤘습니다. 아래 [활용 Data] 그림은 D905에서 사용하는 데이터(SKT Database)를 정리한 그림입니다. 데이터 구축에 활용하는 Database는 5개 o_tango_own, m_ide, d_smr, d_cem, d_cem5g 를 우선적으로 선정하였고 이들 데이터베이스에 대한 SQL쿼리를 Annotation하였습니다. 선정한 데이터베이스는 통신품질 , 데이터 운용, 시설관리에 관한 데이터로 SKT의 현업과 밀접하게 관련되있는 중요도가 높은 데이터베이스입니다. 차후 데이터 구축 과정에는 이들 데이터베이스 뿐만아니라 다른 데이터베이스에 대한 SQL쿼리도 함께 사용할 계획입니다.

[활용 Data]

figure4

 

그림 [HiveQL Data]는 저희가 제공 받은 SQL 쿼리의 예시입니다.

[HiveQL Data]

figure5

 

제공받은 SQL 쿼리에서 복잡한 형태의 질의가 다수 존재하여 라벨링(Annotation)의 피로도가 크다는점, 모형에서 수용가능한 범위(쿼리의 길이 등)를 넘기는 경우가 존재하는점과 실제 자연어 질의는 복잡한 형태로 질의하지 않을것이라는 기본적인 가정을 바탕으로 전처리를 그림 [Query selection 1]과 같이 진행하였습니다.

[Query selection 1]

figure6

 

먼저 쿼리의 길이 중 1000자 이상의 쿼리를 제거하였으며, 이 프로젝트에서는 Select from 쌍의 갯수로 정의한 DML은 1, 2개가 있는 쿼리를 선택하였습니다. 또한 제공받은 쿼리에서 유사한 쿼리가 다수 존재합니다. 중복된 쿼리를 제거하기 위하여 쿼리를 K-means 군집분석 방법으로 유형별로 세분화하여 대표성을 갖는 쿼리만 샘플링하여 자연러 질의를 라벨링하였습니다.

[Query selection 2]

figure7

 

SQL쿼리를 분석한 결과 95%의 쿼리에서 Select 뒤에 4개 이상의 변수를 입력하였는데 이 경우 규칙적으로 ASTERISK()처리하여 데이터 구축의 용이성을 높였습니다. 그림 [Data augmentation 1] step1은 SQL쿼리에서 검색하는 변수의 갯수의 분포와, 변수를 4개 이상 SELECT하는 경우 ASTERISK(\)처리하는 예시입니다.

[Data augmentation 1]

figure8

그림 [Data augmentation 1] step2는 전처리된 데이터를 사용하여 Data augmentation하는 과정을 나타냅니다. 위의 [Data augmentation 1] step1 처럼 ASTERISK(*)처리된 SQL query와 라벨린된 자연어 질의쌍을 규칙기반의 방법으로 ASTERISK(*)가 위치한 자리에 random column selection된 column을 SQL쿼리와 자연어 질의에 삽입하여 Data augmentation을 진행하고 있습니다.

 

 

3. 앞으로의 계획

[계획표]

figure12

  • Dataset을 추가적으로 구축할 예정이며 그 과정에서 아르바이트를 사용할 계획입니다.

  • 구축한 데이터셋을 준비된 모델에 학습시키고 모델 평가 및 데모를 만들 예정입니다.

    현재 구축하는 데이터셋은 SQL쿼리를 다소 딱딱한 직역의 자연어 질의로 Annotation이 되었습니다. 이를 아래의 그림처럼 조금 더 자연스러운 형태의 자연어 질의를 만들고 모델에 학습하여 고도화된 모형을 만들고자 합니다.

 

[현재 데이터셋 Annotation 방법]

figure10

 

[변경 할 데이터셋 Annotation 방법]

figure11

  • 추가하여 위의 과정을 수행하는 중에 Table 메타정보 예측모델 개발을 진행할 예정입니다.

dhlee.ie 님의 최신 블로그

더보기

관련 블로그