챗봇 만들기

코사인 유사도 챗봇

주어진 문장을 단어 가방에 넣고, 가장 유사한 코사인 값을 가진 문장을 찾아내어 답변한다.

신경망

hidden layer에는 relu를 보통 사용하는데, sigmoid를 넣게 될 경우 처음부터 이진 분류를 진행하여 성능이 떨어지게 된다.

그리고 마지막에는 이진 분류일 경우에는 sigmoid를 넣어 제대로 분류를 한다.

일지

내용

DL 이전의 전통적인 방식의 챗봇 생성 실습을 했다.

실습 ipynb 파일을 실행하기 이전에, 프로젝트마다 가상 환경을 만들기보다는 통합 관리하고자 홈 경로에 venvs 폴더를 만들었다.

그러나 프로젝트 폴더에서는 바로 인식되던 라이브러리들이 다른 경로로 이동하자 문제를 일으켰는데, 특히 nltk_data가 그러했다.

nltk_data 역시 여러 프로젝트에서 사용되기에, 홈 경로에 설치했는데, vs code에서는 이를 잘 인식하지 못 했다. 그래서 다양한 방법들을 시도했다. 가상환경 삭제/재설치, 라이브러리 삭제/재설치, 환경 경로 재설정, vs code 캐시 초기화, 아나콘다 터미널 초기화/삭제 등.

결국 초기화와 프로젝트 폴더 삭제/재설치 및 경로 명시화 로직 추가로 깨끗한 베이스에서 경로 설정을 성공했다.

그 다음은 코드를 진행하였다.

덩어리 텍스트 파일에서 불필요한 기호를 제거하고, 문장 단위로 리스트화하고, 문장을 단어 단위로 리스트화하고, 단어를 숫자로 원핫인코딩하며, 원리를 이해하였다.

그 다음에는 TfidVectorizer 라이브러리를 이용해, 간단한 문장으로 위 단계들을 간소화해서 진행했다.

그 다음에는 강사님의 피드백을 바탕으로, 챗봇의 학습 뭉치는 따로 벡터화하여 fit_transform을 초기 한 번만 진행하고, 사용자 입력값은 transform만 진행하여 코사인 유사도를 측정하도록 최적화했다.

마지막으로는, 딥러닝을 이용한 챗봇의 생성 흐름에 대해서 잠깐 학습하였다.

느낌