본 보고서는 대화 시나리오를 3차원 환경에서 관리할 수 있는 3D 대화 시나리오 저작도구에 관한 것이다. 본 연구에서 대화 시나리오를 구성하는 각 대화문장을 3차원 의미벡터로 표시하였으며, 대화 시나리오 전개를 3차원 상에 가시화하였다. 또한, 대화 시나리오를 입력, 수정, 삭제가 가능하다.

하나의 대화 시나리오는 다수의 문장으로 구성되며, 각 문장은 문장을 구성하는 대표 단어의 의미벡터 합으로 표현된다. 대화 시나리오는 키워드 입력을 통해서 검색할 수 있으며, 검색된 대화 시나리오는 3차원 공간상에 문장을 선으로 연결하여 가시화하였다.

 

1.  

1.1 연구 배경

최근 인공지능 에이전트, AI 스피커, 각종 스마트 로봇들이 출시되고 있으며, 사람의 말을 이해해서 적절한 응답을 제공하기 위해서 인간의 언어를 기계가 이해하기 쉽게 표현하는 연구가 진행되고 있다.

본 연구는 인간의 말, , 문장을 의미벡터로 표시하고, 대화 전개를 시나리오 기반으로 진행한다는 가정하에 시나리오를 문장 의미벡터의 연속으로 표시해서, 3차원상에 가시화하여, 시나리오가 어떻게 전개되는지 볼 수 있는 도구를 제공하고자 한다.

또한, 시나리오를 구성하는 문장을 삽입하거나 수정, 삭제하는 기능도 제공하여, 효과적으로 대화 시나리오를 관리하도록 하는 것을 목표로 한다.

1.2 관련연구

최근 트위터로부터 일상 대화 시나리오를 수집하는 방법이 연구되었다. [1] 이렇게 수집된 대화 시나리오를 관리하는 도구에 대한 필요성이 대두되고 있다.

 

2.  

2.1 전체 시스템 구성도

전체 시스템은 아래와 같이 머신러닝서버와 3차원 대화 시나리오 뷰어로 구성된다. 머신러닝서버에서 웹에서 수집한 문장을 대상으로 단어에 대한 3차원 벡터가 모델링되며, 대화 시나리오 문장이 의미벡터로 표시되어 3차원 대화 시나리오 뷰어 상에서 표시된다. 3차원 대화 시나리오 뷰어에서는 시나리오 검색, 시나리오 수정, 시나리오 전개 와 같은 기능을 제공하여, 시나리오를 3차원에서 관리할 수 있도록 지원하게 된다.

대화 시나리오는 다수의 문장으로 구성되는데, 각 문장은 그 문장에서 발생한 단어의미벡터의 합으로 표현하였다. 미리 학습하지 못한 복합명사로 문장이 새롭게 만들어 질 경우, 그 복합명사를 구성하는 단어의 의미백터합으로 그 복합명사의 의미벡터를 표현한다.

아래 표는 3개의 단어로 구성된 복합명사의 의미벡터를 그 복합명사를 구성하고 있는 각 단어 의미벡터 조합으로 표현한 예이다.

복합명사

x좌표값

y좌표값

z좌표값

단어 분리

인물추고도감

-0.02672

-0.22696

0.762833

도감;인물;추고;

인물풍속도무덤

0.178075

-0.17488

0.65056

무덤;인물;풍속도;

인민민주주의국가

-0.83856

-0.04771

0.406166

국가;민주주의;인민;

인민민주주의제도

-0.68759

-0.21081

0.482514

민주주의;인민;제도;

인민보건체조

-1.10825

-0.34399

-0.42693

보건;인민;체조;

인민유격투쟁

-0.61637

-0.13033

0.127841

유격;인민;투쟁;

인민항쟁운동

-0.5301

-0.14541

-0.10506

운동;인민;항쟁;

인쇄전신부호

0.474588

-0.62625

0.158844

부호;인쇄;전신;

인식논리학

0.692593

-1.03159

0.352226

논리;인식;;

1. 복합명사의 의미벡터

 

그림 1 .  시스템 개요

2.2 차원 압축

기존에 많이 이용되고 있는 Word2Vec모델을 통해 위키피디아에서 수집한 28만개의 단어에 대한 300차원 벡터값을 획득하였다. 또한, 300차원을 3차원으로 표시하기 위해서 PCA(Principal Component Analysis)를 이용하여 차원을 압축하였다.

아래는 R Studio300차원 데이터를 입력하여 공분산, 상관행렬을 구해서, 주성분 분석을 통해서 실제 3차원 좌표값을 도출한 화면이다.

 

그림  2. R Studio 를 이용한  3 차원 좌표값 획득

 

2.3 3차원 대화 시나리오 뷰어

3차원으로 대화 시나리오를 저작, 관리하기 위하여 3차원 시나리오 뷰어를 개발했다. 대화 시나리오를 구성하는 각 문장은 의미벡터의 연결로 표현되며, 각 의미벡터는 3차원 공간에서 고유한 벡터값을 가지고 있다. 이러한 의미벡터가 연결된 하나의 묶음이 하나의 대화 시나리오가 되며, 저작도구를 통해서 생성, 삭제, 편집, 업데이트가 가능하다.

아래 그림은 대화 문장이 공간상에 무수한 점으로 표현된 화면이다. 멀리서 보면 점처럼 보이지만, 실제로는 정육면체 격자모양으로 구성되었으며, 시나리오의 전개 방향이 정육면체의 중앙에서 서로 연결되는 구조로 만들었다.

그림  3. 3D  대화 시나리오 뷰어 화면  -  줌아웃

줌인하였을 경우, 점모양이 정육면체로 표시됨을 확인할 수 있다. 우측 상단에는 줌아웃된 3차원 공간을 표시하여, 줌인하더라도, 현재 공간상의 위치를 실시간 확인할 수 있도록 하였다.

그림  4. 3D  대화 시나리오 뷰어 화면  -  줌인

 

대화 시나리오를 검색하기 위해서, 검색 키워드를 입력하였을 경우, 유사한 문장 리스트가 좌측에 표시되며, 우측에는 해당 문장이 포함된 전체 시나리오가 표시된다.

그림  5. 3D  대화 시나리오 뷰어 화면  -  검색 키워드 입력  :  고양이

 

예를 들자면, “고양이키워드로 검색하였을 경우, 아래와 같은 검색결과가 표시된다.

그림  6. 3D  대화 시나리오 뷰어 화면 – 검색된 문장 리스트

 

3차원 공간의 시나리오상에서 문장간 이동이 가능하며, 우측 하단 팝업창으로 이동하는 기능을 제공한다.

그림  7. 3D  대화 시나리오 뷰어 화면  -  다음 문장 이동

 

아래 그림은 우측 하단의 팝업창을 확대한 화면이며, “이전”, “다음버턴을 통해서 하나의 대화 시나리오 상의 이전 문장과 이후 문장으로 이동이 가능하다.

그림  8. 3D  대화 시나리오 뷰어 화면  -  시나리오 이동 화면

 

대화 시나리오의 각 문장은 선으로 연결되며, 공간상에서 이동상황을 한 눈에 파악할 수 있다.

, 1번 문장 -> 2번 문장 -> 3번 문장 -> 4번 문장으로 이동하며, 2번 문장(너무 귀여워요)4번 문장(귀여워요)은 의미벡터 간의 거리가 매우 가까우며, 거의 같은 의미를 나타냄을 확인할 수 있다.

그림 9. 3D  대화 시나리오 뷰어 화면  -  시나리오가 공간상에 선으로 표시

2.4 속도 최적화

파일에서 데이터를 읽어서 28만개의 정육면체 큐브를 3차원공간에 렌더링하면 약 41분의 시간이 소요된다. 렌더링 속도를 최적화하기 위해서 3차원 공간을 27등분하였으며, 현재 카메라 위치를 중심으로 해당 영역에 있는 정육면체 큐브만 렌더링하여 렌더링 시간을 17초로 단축하였다. 또한, 모든 큐브에 문장을 표시하면 렌더링 속도가 느려지는 이슈가 발생한다. 이를 해결하기 위해 클릭한 큐브에만 문장이 표시되게 수정하여 속도를 향상시켰다.

 

3.  

본 연구를 통해서 2차원으로 관리하던 시나리오와 의미벡터를 3차원으로 관리할 수 있게 되었다. 그리고 머신러닝 서버를 이용하여 단어의미벡터 학습이 자동으로 이루어지게 된다. 그 결과 시나리오 관리가 훨씬 편리한 환경을 구축하였다.

 

인공지능 음성, 언어, 영상 분석/처리 전문기업  bory.io/

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기