{"id":24627887,"url":"https://github.com/changwookjun/chatbot_seq2seq_extend","last_synced_at":"2025-10-16T03:21:15.478Z","repository":{"id":273963977,"uuid":"156510568","full_name":"changwookjun/ChatBot_seq2seq_extend","owner":"changwookjun","description":"Chatbot using Tensorflow (Model is seq2seq)  Extend V2.0 ko","archived":false,"fork":false,"pushed_at":"2018-11-22T07:26:15.000Z","size":506,"stargazers_count":26,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-24T03:18:29.058Z","etag":null,"topics":["estimator","korean-nlp","seq2seq-attn","seq2seq-chatbot","seq2seq-generation","seq2seq-rnn","tensorflow-models","tensorflow-serving"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/changwookjun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-07T07:59:28.000Z","updated_at":"2022-11-18T13:15:31.000Z","dependencies_parsed_at":"2025-01-24T03:28:35.726Z","dependency_job_id":null,"html_url":"https://github.com/changwookjun/ChatBot_seq2seq_extend","commit_stats":null,"previous_names":["changwookjun/chatbot_seq2seq_extend"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/changwookjun%2FChatBot_seq2seq_extend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/changwookjun%2FChatBot_seq2seq_extend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/changwookjun%2FChatBot_seq2seq_extend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/changwookjun%2FChatBot_seq2seq_extend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/changwookjun","download_url":"https://codeload.github.com/changwookjun/ChatBot_seq2seq_extend/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235537998,"owners_count":19006078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["estimator","korean-nlp","seq2seq-attn","seq2seq-chatbot","seq2seq-generation","seq2seq-rnn","tensorflow-models","tensorflow-serving"],"created_at":"2025-01-25T05:13:33.844Z","updated_at":"2025-10-16T03:21:10.457Z","avatar_url":"https://github.com/changwookjun.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ChatBot(seq2seq) 확장판\nNLG를 활용한 ChatBot을 개발함 (V2.0)\n\n# 수정된 내용\n(V1.0) https://github.com/changwookjun/ChatBot_seq2seq 에 대한 수정 내용 적용\n### 1. Attention 적용\n### 2. Teacher Forcing 적용\n### 3. PAD에 대한 mask 기능을 통한 loss 제한 적용\n### 4. Serving 기능 적용\n\n\n# Architecture\n![images](images/seq2seq.png)  \n\n# Attention\n![images](images/attention.png)  \n\n\n# Learning Data\nTitle|Contents|Other\n--|--|--\n데이터 이름|Chatbot data\n데이터 용도|한국어 챗봇  학습을 목적으로 사용한다.\n데이터 권한|MIT 라이센스\n데이터 출처|https://github.com/songys/Chatbot_data (송영숙님)\n\n# Requirement\nPython 3.6.6   \ntensorflow 1.11   \nkonlpy   \npandas   \nsklearn   \n\n# Project Structure\n    .\n    ├── data_in                     # 데이터가 존재하는 영역\n        ├── ChatBotData.csv         # 전체 데이터\n        ├── ChatBotData.csv_short   # 축소된 데이터 (테스트 용도)\n        ├── README.md               # 데이터 저자 READMD 파일\n    ├── data_out                    # 출력 되는 모든 데이터가 모이는 영역\n        ├── vocabularyData.voc      # 사전 파일\n        ├── check_point             # check_point 저장 공간\n        ├── model                   # model 저장 공간\n    ├── configs.py                  # 모델 설정에 관한 소스\n    ├── data.py                     # data 전처리 및 모델에 주입되는 data set 만드는 소스\n    ├── main.py                     # 전체적인 프로그램이 시작되는 소스\n    ├── model.py                    # 모델이 들어 있는 소스\n    └── predict.py                  # 학습된 모델로 실행 해보는 소스      \n   \n\n# Config\ntf.app.flags.DEFINE_integer('batch_size', 64, 'batch size') # 배치 크기  \ntf.app.flags.DEFINE_integer('train_steps', 10000, 'train steps') # 학습 에포크  \ntf.app.flags.DEFINE_float('dropout_width', 0.8, 'dropout width') # 드롭아웃 크기  \ntf.app.flags.DEFINE_integer('layer_size', 1, 'layer size') # 멀티 레이어 크기 (multi rnn)  \ntf.app.flags.DEFINE_integer('hidden_size', 128, 'weights size') # 가중치 크기  \ntf.app.flags.DEFINE_float('learning_rate', 1e-3, 'learning rate') # 학습률  \ntf.app.flags.DEFINE_float('teacher_forcing_rate', 0.7, 'teacher forcing rate') # 학습시 디코더 인풋 정답 지원율  \ntf.app.flags.DEFINE_string('data_path', './data_in/ChatBotData.csv', 'data path') #  데이터 위치  \ntf.app.flags.DEFINE_string('vocabulary_path', './data_out/vocabularyData.voc', 'vocabulary path') # 사전 위치  \ntf.app.flags.DEFINE_string('check_point_path', './data_out/check_point', 'check point path') # 체크 포인트 위치  \ntf.app.flags.DEFINE_string('save_model_path', './data_out/model', 'save model') # 모델 저장 경로  \ntf.app.flags.DEFINE_integer('shuffle_seek', 1000, 'shuffle random seek') # 셔플 시드값  \ntf.app.flags.DEFINE_integer('max_sequence_length', 25, 'max sequence length') # 시퀀스 길이  \ntf.app.flags.DEFINE_integer('embedding_size', 128, 'embedding size') # 임베딩 크기  \ntf.app.flags.DEFINE_boolean('embedding', True, 'Use Embedding flag') # 임베딩 유무 설정  \ntf.app.flags.DEFINE_boolean('multilayer', True, 'Use Multi RNN Cell') # 멀티 RNN 유무  \ntf.app.flags.DEFINE_boolean('attention', True, 'Use Attention') #  어텐션 사용 유무  \ntf.app.flags.DEFINE_boolean('teacher_forcing', True, 'Use Teacher Forcing') # 학습시 디코더 인풋 정답 지원 유무  \ntf.app.flags.DEFINE_boolean('tokenize_as_morph', True, 'set morph tokenize') # 형태소에 따른 토크나이징 사용 유무  \ntf.app.flags.DEFINE_boolean('serving', False, 'Use Serving') #  서빙 기능 지원 여부  \ntf.app.flags.DEFINE_boolean('loss_mask', False, 'Use loss mask') # PAD에 대한 마스크를 통한 loss를 제한 \n\n# Usage\npython main.py\n\n# Predict\npython predict.py 남자친구가 너무 잘 생겼어\n\n# Reference\nTitle|Contents\n--|--\nData|[Chatbot data](https://github.com/songys/Chatbot_data)  \nPaper|[Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation](https://arxiv.org/pdf/1406.1078.pdf)  \nPaper|[Neural Machine Translation by Jointly Learning to Align and Translate](https://arxiv.org/abs/1409.0473.pdf)\n\n# Author\nChangWookJun / @changwookjun (changwookjun@gmail.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchangwookjun%2Fchatbot_seq2seq_extend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchangwookjun%2Fchatbot_seq2seq_extend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchangwookjun%2Fchatbot_seq2seq_extend/lists"}