안경잡이개발자

728x90
반응형

  다이얼로그 플로우는 다양한 Intent를 JSON 형식의 파일에서 불러오는 기능을 제공합니다. 따라서 JSON 파일의 형식이 잘못되었거나, 다이얼로그 플로우에서 설정하고 있는 기본적인 형식을 지키지 못하면 오류 메시지가 출력됩니다.



  일단 위와 같이 장문의 오류가 발생하면 당황하지 말고 개발자 도구를 열어서 오류 메시지를 정확히 복사합니다.




  오류 메시지가 위와 같이 굉장히 많이 나왔네요.



  이를 위와 같이 텍스트 파일에 옮겨줍시다. 이제 오류가 발생하는 해당 파일들을 일일이 삭제할 수 있습니다.



  혹은 텍스트 파일에 담은 뒤에 파일 이름만 파이썬으로 추출할 수 있습니다. 다음과 같이 말이죠.



import os 


FIND_DIR="./error messages.txt"


def find_all(string,substring):

    length = len(substring)

    c=0

    indexes = []

    while c < len(string):

        if string[c:c+length] == substring:

            indexes.append(c)

        c=c+1

    return indexes


f = open(FIND_DIR, "r")

s = f.read()

all_errors = find_all(s, "intents/")

for i in range(0, len(all_errors)):

  index = all_errors[i]

  # get only 12 characters

  print(s[index+8:index + 20])

f.close()


위 스크립트를 실행하면 정확히 오류가 발생하는 파일의 이름 앞 부분을 구할 수 있습니다.



  이제 이러한 파일들을 삭제해야 하는데요. 만약 삭제해야 할 파일의 개수가 많다면, 다음과 같이 파이썬 스크립트를 이용해서 일괄 삭제할 수도 있습니다. 저는 다음과 같이 삭제하고자 하는 파일을 배열에 하나씩 담아서 하나씩 순회하면서 삭제되도록 만들었습니다.


import os 


DIR="./Dialog Flow Example Project/intents/"


# deleting some intents that have an error sententce.

targets=[

'145127b6428c',

'14015d374076',

'1401cc8a40b3',

'1451bc4266be',

'1451b39a0148',

'105137cdd164',

'1401fec0f8e8',

'1051e6b4632a',

'145138afb780',

'1451bc4266be',

'1451e8f0d5cb',

'1051b5472e66',

'1001bb2b5200',

'1451153fae0e',

'1451bc0aa2a9',

'1001956e5832',

'105112bdd48a',

'1451bcdef726',

'1451ef55eba6',

'1051b3439dd6',

'1051bb288765',

'1001d0245578',

'14011ae6df96',

'1101cab5bc06',

'145103636150',

'140141837fb0',

'1401c7dde1b5',

'140192c0fdf1',

'1451400f135b'

]


for ROOT, DIRS, FILES in os.walk(DIR): 

  for F in FILES: 

    filename = "{}/{}".format(ROOT, F) 


    for i in range(0, len(targets)):

      if targets[i] in filename: 

        print("Deleting file \"{}\"".format(filename)) 

        os.remove(filename) 



  다만 위와 같이 하면 수동으로 파일명을 입력해야 하므로, 오류 메시지로부터 자동으로 파일 이름을 읽어서 오류가 발생하는 파일만 삭제하도록 스크립트를 합칠 수 있습니다.


import os 


FIND_DIR="./error messages.txt"

ERROR_DIR="./Dialog Flow Example Project/intents/"


def find_all(string,substring):

    length = len(substring)

    c=0

    indexes = []

    while c < len(string):

        if string[c:c+length] == substring:

            indexes.append(c)

        c=c+1

    return indexes


f = open(FIND_DIR, "r")

s = f.read()

all_errors = find_all(s, "intents/")


for ROOT, DIRS, FILES in os.walk(ERROR_DIR): 

  for F in FILES: 

    filename = "{}/{}".format(ROOT, F) 


    for i in range(0, len(all_errors)):

      index = all_errors[i]

      if s[index+8:index + 20] in filename: 

        print("Deleting file \"{}\"".format(filename)) 

        os.remove(filename)



  결과적으로 특정 인텐트의 JSON 파일에 오류가 나오는 경우 오류 메시지를 error message.txt에 기록만 해주고, 이 스크립트를 실행하면 알아서 오류 메시지에 적힌 오류 인텐트 파일들을 찾아서 그 파일들만 intents 폴더에서 지워주게 됩니다.



  결과적으로 위와 같이 더이상 문법과 관련한 오류는 나오지 않는 것을 알 수 있습니다.

728x90
반응형

728x90
반응형

다이얼로그 플로우(Dialog Flow) 개요 및 챗봇 개발 시작하기

나동빈


챗봇(Chatter Robot)이란 사람의 일상적인 언어를 이용해 사람처럼 대화를 하는 서비스입니다.


대표적인 예시: 카카오톡 챗봇, 페이스북 메신저 챗봇


다이얼로그 플로우(Dialog Flow)는 구글에서 개발한 챗봇 개발 플랫폼입니다. 우리가 인공지능(AI) 코어를 직접 개발하지 않아도 구글이 자체적으로 제공하는 자연어 처리(NLP) 기술을 이용하여 다양한 서비스에 챗봇을 적용할 수 있습니다.


결과적으로 다이얼로그 플로우만 잘 이용하면 사실상 코딩을 전혀 할 줄 몰라도 챗봇을 만들 수 있다는 큰 장점이 있습니다.


다이얼로그 플로우: https://dialogflow.com/



공식 웹 사이트에 접속하면 위와 같이 메인 화면이 등장하는 것을 알 수 있습니다. 'GO TO CONSOLE' 링크를 타고 이동하면 챗봇 개발을 바로 진행할 수 있는 콘솔 화면이 등장합니다.



기본적으로 서비스는 로그인 이후에 이용할 수 있으며 구글 계정으로 로그인하시는 것을 추천합니다.



다이얼로그 플로우를 처음 이용하는 분은 초기에 위와 같이 계정 설정을 진행해주셔야 합니다.



이후에 'Create Agent' 버튼을 눌러서 에이전트(Agent)를 생성할 수 있습니다. 에이전트는 '하나의 인공지능 프로젝트'의 개념으로 보시면 됩니다.


- 기본 언어(Default Language): 챗봇에서 사용할 기본 언어

- 기본 시간(Default Time Zone): 챗봇의 기본 시간대



저는 위와 같이 프로젝트 이름은 'FirstAgent'라고 지었으며 기본 언어는 한국어(Korean)로 설정했습니다.



프로젝트가 생성되면 바로 위와 같은 프로젝트 메인 화면이 등장합니다. 오른쪽에는 실시간으로 현재 우리 챗봇 프로젝트를 테스트할 수 있는 화면이 제공되어 있습니다. 또한 기본적으로 제공되는 인텐트인 'Default Welcome Intent'를 확인할 수 있습니다.



'Default Welcome Intent'는 말 그대로 환영 메시지를 보여주는 기본 인텐트입니다. 보시면 학습 구문(Training Phrases)으로 이미 기본적인 한글 인사이 들어가 있는 것을 알 수 있습니다.



위와 같이 챗봇을 테스트하는 영역에서 '안녕?'이라고 입력해 보면 챗봇 또한 자동으로 인삿말을 인식하여 '안녕!'이라는 환영 메시지를 출력하는 것을 알 수 있습니다. 결과가 정확하게 나왔으므로 아래 쪽에서 'OK'를 눌러 정상적인 결과임을 확인하도록 합니다.

728x90
반응형