KT AIVLE/AI Track(교육)

[AI] KT AIVLE(KT 에이블스쿨) 3기 AI 개발자 트랙 6차 미니프로젝트(1-2일차) , 챗봇 만들기 -12주차-

머준 2023. 4. 24. 19:55

프로젝트 주제

Aivel School 지원 질문, 답변 챗봇 만들기

 

1. 데이터 확인

- 일상대화의 데이터와 Aivel School 지원 질문, 답변 데이터가 주어졌다.

- 각각 500개, 800개 정도의 데이터를 가지고 있다.

 

2. 데이터 전처리

- 두 데이터 셋을 하나로 합치고 대화유형(type)을 0과 1로 지정.

- intent별 질문 갯수, 질문별 문장 길이 분포, 대화유형(type)별 문장 길이 분포 등 기초통계량 및 시각화.

- Mecab, Hannaum, Okt, Komoran 등 다양한 형태소 분석기를 사용.

 

3. 모델링

3-1) 챗봇1

- Word2Vec 임베딩 벡터 기반 머신러닝 분류 모델링

 

3-2) 챗봇2

  - type 분류 모델 만들기(Embedding + LSTM)

  - pre-trained Word2Vec 모델로 임베딩벡터 저장

  - 코사인 유사도로 intent 찾아 답변 출력

 

3-3) 챗봇3

  - type 분류 모델 만들기(Embedding + LSTM)

  - FastText 모델 생성하여 임베딩벡터 저장

  - 코사인 유사도로 intent 찾아 답변 출력

 

< Word2Vec >

 Word2Vec 말 그대로 단어를 벡터로 변환해준다. 컴퓨터는 단어 자체를 인식할 수 없기 때문에 벡터로 바꾸어서 컴퓨터에 어떤 단어인지 알려줘야 한다. 또한, 벡터로 바꾸어야 유사도 계산도 가능하다. Word2Vec은 2개의 히든레이어를 가지고 있는 Neural Network 모델이다. 단어가 많아져도 저차원 벡터를 가지고 다차원 공간에 벡터화해서 유사성을 표현할 수 있다. 이러한 word embedding을 Distributed representation(분산표현) 이라고도 한다. 각 차원이 실수형으로 표현 되면서 단어의 의미를 여러 차원에다가 분산시킨다는 말이다. 분산 표현 방식에는 2가지 방법이 있다.

 

1. CBOW (Continuous Bag of Words)

 : 주변의 단어로 중간 단어를 예측

2. Skip-gram

 : 중간의 단어로 주변 단어들을 예측

 

< FastText >

 페이스북에서 개발한 텍스트 임베딩 기법이다. Word2Vec과 유사하나 Word2Vec은 한 단어를 더 이상 쪼개질 수 없는 최소 단위라고 생각하면, FastText는 각 단어를 character 단위 n-gram으로 쪼갠다. FastText는 subword 정볼르 이용해 단어 오타, 신조어에 대한 학습도 높일 수 있다. Word2Vec과 같이 CBOW와 Skip-gram 두 가지 모델을 제공한다.

 

 

4. 결론

 - 두 번째 자연어 처리 미니프로젝트 였으나, 여전히 자연어 처리는 어려웠다. 실습 교안에 있는 주석을 보고 따라서 하긴 했으나 원리를 제대로 이해하고 하지는 못 한 느낌이었다. 추가적인 복습과 이론적 이해가 필요하다고 생각했다. 블로그에 자연어처리에 대해 정리해볼까 한다.