Skip to content

Latest commit

 

History

History
463 lines (424 loc) · 13.3 KB

README.md

File metadata and controls

463 lines (424 loc) · 13.3 KB

자연어처리 여행 정보제공 챗봇 👓

[시연 동영상]

https://www.youtube.com/watch?v=aikZXcpKetg&feature=youtu.be

[PPT]

https://github.com/fakecan/Trigo_Chatbot/raw/master/Trigo-PPT.pptx


딥러닝(케라스)과 자연어처리를 사용해서 대화의 의도파악과 개체명인식, Seq2Seq를 이용한 잡담처리, 이미지 분석을 통한 여행정보를 제공하는 챗봇입니다. 자연어처리를 위한 워드임베딩으로 FastText를 사용하였고, 의도파악과 이미지분석에는 Convolutional neural network, 개체명인식과 Seq2Seq에는 Recurrent Neural Network을 사용하여 구현하였습니다.

단어 벡터 시각화




0. 개발환경

- Windows10 x64
- Intel i7-8700 CPU @ 3.20GHz
- RAM 32.0GB
- NVIDIA GeForce RTX2080
- Visual Studio Code

- python                3.7.3
- Flask		        1.1.1
- gensim                3.8.1
- numpy                 1.17.3
- konlpy		0.5.1
- JPype1		0.6.3
- nltk		        3.4.4
- Keras		        2.2.4
- keras-contrib	        2.0.8
- redis		        3.3.11
- uuid		        1.30
- PyMySQL		0.9.3
- beautifulsoup4	4.8.0




1. Intent Classification

사용자 대화의 의도를 파악하기 위한 단계

konlpy를 사용한 문장 토큰화, Fasttext를 사용한 워드임베딩과 Convolution 네트워크를 사용하여 문장을 분류하였습니다.
의도파악 카테고리 (날씨, 맛집, 미세먼지, 여행지, 관광지)



2. Entity Classification

사용자 대화의 의도를 분류 후 대화의 핵심 단어들을 파악하기 위한 단계

konlpy를 사용한 문장 토큰화, Fasttext를 사용한 워드임베딩과 BiLSTM-CRF를 사용하여 개체명을 분류하였습니다.
개체명인식 태그(LOCATION, DATE, RESTAURANT, TRAVEL, PURPOSE, O)



의도파악 & 개체명 분류



3. Sequence to Sequence

의도파악 카테고리에 해당하지 않는 문장을 처리해주는 단계

konlpy를 사용한 문장 토큰화, keras embedding을 사용한 워드임베딩, LSTM(Encoder)-LSTM(Decoder)를 연결하여 Seq2Seq 모델을 구현하였습니다.





4. Image Analysis

사용자가 이미지 입력 시 처리하는 단계

이미지 256x256 사이즈로 리사이징, Convolution 네트워크를 사용하여 이미지 분석&분류 하였습니다.



5. application

- 챗봇 로직(의도파악, 개체명인식, fallback, seq2seq, 이미지분석, 시나리오(웹 크롤링))

1. input
2. preprocess (tokenize >> 형태소분석, 불용어 제거)
3-1. get_intent (의도파악)
3-2. get_image  (이미지분석)
4-1. get_entity (개체명 인식)
4-2. get_seq2seq (seq2seq 대화)
5. scenario   (의도, 개체명 >> 크롤링 >> 결과출력)



6. scenario

- 각 의도에 해당하는 웹 크롤링 실행

1. intent 확인 후 맞는 카테고리 메소드 실행
2. 테그 분리 후 크롤링 실행