Dialogbot은 검색 기반 대화 모델 , 작업 기반 대화 모델 및 생성 대화 모델을 결합하여 최적의 대화 모델 기술을 제공합니다.
Dialogbot은 질의응답 대화, 작업 기반 대화, 채팅 기반 대화 등 다양한 대화 로봇 솔루션을 구현하여 네트워크 검색 Q&A, 도메인 지식 Q&A, 작업 안내 Q&A, 채팅 Q&A를 즉시 지원합니다. 상자.
가이드
인간-기계 대화 시스템은 항상 AI의 중요한 방향이었습니다. Turing 테스트는 대화를 사용하여 기계의 지능이 높은지 여부를 감지합니다.
인간-컴퓨터 대화 시스템이나 대화 로봇을 구축하는 방법은 무엇입니까?
대화 시스템은 3세대에 걸쳐 발전해 왔습니다.
대화 시스템은 세 가지 범주로 나뉩니다.
사용자의 질문과 질의응답 데이터베이스의 질문 사이의 유사성을 계산하고, 가장 유사한 질문을 선택하여 그에 상응하는 답변을 제공합니다.
문장 유사성 계산에는 다음 방법이 포함됩니다.
Baidu 및 Bing의 검색 결과 요약에서 답변을 검색합니다.
공식 데모: https://www.mulanai.com/product/dialogbot/
이 프로젝트는 Transformers 4.4.2+, torch 1.6.0+ 및 Python 3.6+를 기반으로 합니다. 그런 다음 간단히 다음을 수행하십시오.
pip3 install torch # conda install pytorch
pip3 install -U dialogbot
또는
pip3 install torch # conda install pytorch
git clone https://github.com/shibing624/dialogbot.git
cd dialogbot
python3 setup.py install
예: example/bot_demo.py
from dialogbot import Bot
bot = Bot ()
response = bot . answer ( '姚明多高呀?' )
print ( response )
산출:
query: "姚明多高呀?"
answer: "226cm"
예: 예제/taskbot_demo.py
GPT2 생성 모델을 기반으로 학습된 채팅 기반 대화 모델입니다.
이 모델은 Hugingface 모델로 출시되었습니다: shibing624/gpt2-dialogbot-base-chinese
예: example/genbot_demo.py
from dialogbot import GPTBot
bot = GPTBot ()
r = bot . answer ( '亲 你吃了吗?' , use_history = False )
print ( 'gpt2' , r )
산출:
query: "亲 吃了吗?"
answer: "吃了"
프로젝트 루트 디렉터리에 데이터 폴더를 만들고 원본 훈련 코퍼스 train.txt라는 이름을 지정한 후 이 디렉터리에 저장합니다. train.txt의 형식은 다음과 같습니다. 각 채팅은 한 줄로 구분됩니다.
真想找你一起去看电影
突然很想你
我也很想你
想看你的美照
亲我一口就给你看
我亲两口
讨厌人家拿小拳拳捶你胸口
今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
preprocess.py를 실행하고 data/train.txt 대화 자료를 토큰화한 다음 직렬화하여 data/train.pkl에 저장합니다. train.pkl에 직렬화된 객체 유형은 List[List]이며, 대화 목록의 각 대화에 포함된 토큰을 기록합니다.
cd dialogbot/gpt/
python preprocess.py --train_path data/train.txt --save_path data/train.pkl
train.py를 실행하고 전처리된 데이터를 사용하여 모델에 대한 자동 회귀 학습을 수행합니다. 모델은 루트 디렉터리의 모델 폴더에 저장됩니다.
훈련 중에 인내 매개변수를 지정하여 조기에 중지할 수 있습니다. 인내=n일 때, 검증 세트에 대한 모델의 손실이 n 연속 에포크 동안 감소하지 않으면 훈련을 중지하기 위해 조기 중지가 수행됩니다. 인내=0이면 조기 중지가 수행되지 않습니다.
조기 중지는 코드에서 기본적으로 꺼져 있습니다. 왜냐하면 실제로는 조기 중지로 생성된 모델이 반드시 더 나은 결과를 생성하지 않을 수도 있기 때문입니다.
python train.py --epochs 40 --batch_size 8 --device 0,1 --train_path data/train.pkl
더 많은 훈련 매개변수 소개를 보려면 train.py의 set_args() 함수에서 매개변수 설명을 직접 볼 수 있습니다.
Interact.py를 실행하고 훈련된 모델을 사용하여 인간-컴퓨터 상호 작용을 수행합니다. q를 입력하여 대화를 종료하면 채팅 기록이 Sample.txt 파일에 저장됩니다.
python interact.py --no_cuda --model_dir path_to_your_model
Interact.py를 실행할 때 topk, topp, Repeat_penalty, max_history_len 등과 같은 매개변수를 조정하여 생성된 효과를 조정해 볼 수 있습니다. 더 많은 매개변수 소개는 상호작용.py의 set_args() 함수에서 매개변수 설명을 직접 확인하실 수 있습니다. 생성에 GPU를 사용하려면 --no_cuda 매개변수를 호출하지 말고, -를 통해 사용할 GPU를 지정하세요. -장치 GPU_id.
user :在干嘛
chatbot:睡觉
user :这么早就睡觉啦
chatbot:嗯啊你也早点睡啊
user :我再玩一会儿手机
chatbot:早点休息晚安
user :拜拜啦
chatbot:晚安晚安
user :多喝热水
chatbot:哈哈哈
user :多喝热水
chatbot:好的咯
user :在吗
chatbot:在
user :我不开心
chatbot:怎么啦
user :最近好累啊
chatbot:是挺累的
user :作业好多啊
chatbot:还好还好
user :我觉得我快要挂科了
chatbot:我也是啊,但是我觉得我快熬出头了
user :不说了,我还有好多作业没写
chatbot:我也是啊好多啊
user :那先这样,下次再聊,再见了
chatbot:好哒
중국어 채팅 말뭉치 | 데이터 세트 주소 | 코퍼스 설명 |
---|---|---|
일반적인 중국어 채팅 | Chinese_chatbot_corpus | Xiaohuangji 말뭉치, Douban 말뭉치, TV 드라마 대화 말뭉치, Tieba 포럼 답변 말뭉치, Weibo 말뭉치, PTT 가십 말뭉치, Qingyun 말뭉치 등을 포함합니다. |
500,000개의 중국어 채팅 코퍼스 | Baidu Netdisk [추출 코드: 4g5e] 또는 GoogleDrive | 500,000개의 다단계 대화의 원본 코퍼스와 전처리된 데이터를 포함합니다. |
100만 개의 중국어 채팅 코퍼스 | Baidu Netdisk [추출 코드: s908] 또는 GoogleDrive | 100만 건의 다단계 대화에 대한 원본 코퍼스와 전처리된 데이터를 포함합니다. |
중국어 채팅 말뭉치의 예는 다음과 같습니다.
谢谢你所做的一切
你开心就好
开心
嗯因为你的心里只有学习
某某某,还有你
这个某某某用的好
你们宿舍都是这么厉害的人吗
眼睛特别搞笑这土也不好捏但就是觉得挺可爱
特别可爱啊
今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
모델 | 공유 주소 | 모델 설명 |
---|---|---|
model_epoch40_50w | shibing624/gpt2-dialogbot-base-chinese 또는 Baidu Cloud Disk(추출 코드: taqh) 또는 GoogleDrive | 500,000 라운드의 대화 데이터를 사용하여 40 에포크 동안 훈련한 후 손실은 약 2.0으로 떨어졌습니다. |
연구에 Dialogbot을 사용하는 경우 다음 형식으로 인용해 주세요.
@misc{dialogbot,
title={dialogbot: Dialogue Model Technology Tool},
author={Xu Ming},
year={2021},
howpublished={ url {https://github.com/shibing624/dialogbot}},
}
라이센스 계약은 상업용으로 무료로 제공되는 Apache 라이센스 2.0입니다. 제품 설명에 다이얼로그봇 링크와 라이센스 동의서를 첨부해주세요.
프로젝트 코드는 아직 매우 미숙합니다. 코드에 개선 사항이 있으면 제출하기 전에 다음 두 가지 사항에 주의하시기 바랍니다.
tests
에 해당 단위 테스트 추가python -m pytest
사용하여 모든 단위 테스트를 실행하여 모든 단위 테스트가 통과하는지 확인하세요.그런 다음 PR을 제출할 수 있습니다.