phychotherapy chatbot with BERT
웰니스 대화 스크립트 데이터셋(AI Hub, 2019)을 사용한 질의응답용 챗봇 프로그램입니다.
Introduction
ko-sROBERTa-Multitask
코드 예시
import urllib.request
import pandas as pd
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('jhgan/ko-sroberta-multitask')
df['embedding'] = df.apply(lambda row: model.encode(row.question), axis = 1)
$cosine similarity = \large \frac{A \cdot B}{\left | A \right | \left | B \right | }$ |
def cosine_similarity(A, B):
return dot(A, B)/(norm(A) * norm(B))
def return_response(input):
embedding = model.encode(input)
df['score'] = df.apply(lambda x: cosine_similarity(x['embedding'], embedding), axis = 1)
return df.loc[df['score'].idxmax()]['response']
Result
코드 예시
q = '몸이 아파서 제대로 생활하지 못하겠어요.'
print(f'Q : ', q)
rsp = return_response(q)
print(f'A : ', rsp)
print('-' * 30)
cnt = len(df[df['response'] == rsp])
print(f'데이터 내 같은 답변의 개수 : {cnt}개')
ind = df.index[df['score'].idxmax()]
print(f'답변을 가져온 데이터 index 번호 : {ind}')
Q : 몸이 아파서 제대로 생활하지 못하겠어요.
A : 내담자분이 제대로 휴식을 취하지 못하고 계신 거 같아 걱정스러워요.
——————————
데이터 내 같은 답변의 개수 : 64개
답변을 가져온 데이터 index 번호 : 6987
댓글남기기