chatbot과 관련해서 쓰려고 이것저것 만들어보다가 완성을 못해서 오늘은 실패 기록기...
발화자의 의도 분류 모델 만드는 데 시간쓰기 보단 google spreadsheet를 데이터베이스 대용으로 써보려고 하는 뻘짓이 더 많았습니다. mysql, sqlite3, postsql 등 쓰면 될텐데 굳이 spreadsheet를 연동해서 써보는 걸 테스트 해보고 싶었습니다...
챗봇이란
chatbot은 chatter + robot 의 합성어 입니다. 사람과 대화를 나누는데, 음성이나 텍스트 형태로 대화를 나누는 것을 뜻한다고 합니다. 그런데 최근엔 가상인간 이미지로 화면에 띄워져 있고, 집주인이 집에 들어오는 거 보고 서로 안부 대화를 나누는 시연 장면을 본 적이 있었는데, 요약하면 사람과 대화를 나누는 로봇입니다.
챗봇 활용도
이런 챗봇을 만드는 이유는 24시간 동안 인간을 대신해서 즉시 응답해 줄 수 있는 장점이 있기 때문입니다. 회사에서 챗봇을 만드는 가장 큰 이유가 효율화와 비용 절감 때문일 것 같습니다.
챗봇 주의점
챗봇을 쓰지 않는다면 이유는 정확도와 실용성 측면일 것 같습니다. 매우 높은 수준의 정확도를 요구하는 경우에는 챗봇 쓰는 것보단 사람을 쓰는 게 더 나을 수도 있습니다. 요즘엔 chatGPT api 활용해서 챗봇을 만들고 있는 경우가 많은 것 같습니다. 그런데, 제약 조건 엄청 걸고 나면 사실 그냥 선택지 주는 알고리즘 쓰는 게 더 효과적이라고 생각될 때도... gpt는 A에 대해 질문하면 최대한 많은 대답을 하기 때문에 묻지도 않은 B에 대해서 설명한다던가, 아니면 물어본 것에 대해 잘못된 대답을 한다던가. 잡담도 하기도 하는 것 같은데, 고객은 아마 원하는 답만 ASAP로 얻고 나가려고 할텐데. 조금만 느려도 챗봇 활용성이 오히려 떨어질 수도 있습니다. 그리고 비일관적인 대답하는 것도 해결해야 할 문제일 수 있구요.
앞으로 챗봇은 어떻게 될까
최근에 vision pro에 대해서 애플이 발표한 걸 보면서 점점 직접 사람과 상호작용을 하는 시대가 될 거라고 생각했습니다. virtual human + chat + image & voice detection 까지 되면 이젠 챗봇이 아니라 인공비서가 최종 형태이지 않을까요. 메타버스와 현실의 경계가 점차 흐려질 걸로 예상합니다. (게다가 VR이 쉬운 기술도 아닌데 발전이 점점 빨라지는 듯하구요)
챗봇의 구조 짜기
목적: 회사 내 기존 Q&A 답변을 학습하여 답변을 주도록 만들기.
프로세스:
1. 사용자가 질문을 한다
👇
2. 해당 질문에서 의도(인사, 주문, 욕설, 무의미한 정보 등),
개체명(날짜, 시간, 상품 종류),
키워드 추출
👇
3. 추출된 데이터에 기반해서 정해진 답변을 한다
의 흐름으로 나름 gpt api 로 프롬프트 형식으로 짜는 것 말고, 전통적인 챗봇을 만들려고 했습니다.
여기에서 어느 부분에서 실패를 했냐면 Database 구조 짜다가 멈췄습니다. 데이터셋트도 새로 만들어야 하고, 아마 시간이 좀 더 필요한 것 같습니다ㅋㅋㅋ 해당 챗봇을 만드는 목적이 업무 효율성이라고 정해둬서. 회사라는 상황을 가정하고. 딱 특정 회사에서 나올 법한 질문과 답변의 데이터가 존재하는 구조. 그래서 새로운 질문이 들어오면 기존 데이터셋트에 업데이트 하는 방향으로 가정하고 만들다보니.
대략 이런 식으로 짜다가...
이걸 sql로 안하고 spreadsheet로 연동해서 지속적으로 spreadsheet에 업데이트 하는 게 더 편하지 않을까 싶어서 짜다가 times up.
연동하는 방법은 하단에.
Google Spreadsheet 읽고 쓰고 업데이트 하기
1. google cloud console 로 이동
marketplace에서 다음의 두 api 제품을 사용하기를 눌러서 설치합니다
- google drive api
- google sheet api
를 설치합니다
2. key 만들기
- cloud에서 서비스 계정에 들어가면,
- 이전에 사용하는 key나 핀이 없는 경우 다음의 서비스 계정을 만듭니다
서비스 계정 이름을 치면 자동으로 ID가 생성됩니다.
액세스 권한 부여는 편집자로 할 지 소유자로 할 지 갈등하다가 일단 두 개 다 넣어봤습니다. 둘 중 하나 해도 작동합니다
액세스 권한 부여는 굳이 안 넣어도 됩니다.
다음과 같이 만들어지는데 키를 생성하면 됩니다
키 관리를 선택하고 json 형태로 키를 생성해줍니다
3. 구글 스프레드 시트에서 공유
다음의 스프레드 시트에서 공유를 누르고
사용자 및 그룹 추가에서 키 생성 때 만들어진 이메일 주소로
편집자 권한으로 공유를 하면
이제 python에서 불러올 수 있습니다
4. 라이브러리 설치
pip install oauth2client
pip install gspread
다음과 같이 불러들이고 읽고 쓸 수 있습니다
import gspread
import pandas as pd
# spreadsheet 연동 google-key 필요
json_key_path = 'json 키 입력하기'
google_spread = gspread.service_account(filename=json_key_path)
# 스프레드시트 문서 가져오기
spreadsheet_url = 'https://docs.google.com/해당 공유된 url 주소'
google_doc = google_spread.open_by_url(spreadsheet_url)
# sheet 지정
sheet = google_doc.worksheet('시트1')
# dataframe으로 지정
dataframe = pd.DataFrame(sheet.get_all_records())
print(dataframe)
print(dataframe.iloc[-1]['id'])
# update
# sheet.update([dataframe.columns.values.tolist()] + dataframe.values.tolist())
아직 만드는 중이네요.
오늘은 여기까지~
'NLP-writing' 카테고리의 다른 글
[마무리] What's Next? (1) | 2023.07.16 |
---|---|
BERT와 OpenAI GPT 란 (0) | 2023.06.18 |
텍스트 유사도-벡터 유사도 (0) | 2023.06.04 |
텍스트 분류 (0) | 2023.05.21 |
한국어 텍스트 데이터 전처리 (5) | 2023.05.07 |