Dialogbot обеспечивает полную технологию модели диалога. Сочетая модель диалога на основе поиска , модель диалога на основе задач и модель генеративного диалога , выводит оптимальный диалоговый ответ.
Dialogbot реализует различные решения для диалоговых роботов, такие как диалог вопросов и ответов, диалог на основе задач и диалог на основе чата. Он поддерживает вопросы и ответы по сетевому поиску, вопросы и ответы по предметной области, вопросы и ответы по задачам, а также вопросы и ответы в чате. коробка.
Гид
Системы диалога между человеком и машиной всегда были важным направлением развития ИИ. Тест Тьюринга использует диалог, чтобы определить, обладает ли машина высокой степенью интеллекта.
Как построить диалоговую систему человек-компьютер или диалогового робота?
Диалоговая система развивалась на протяжении трех поколений:
Диалоговые системы делятся на три категории:
Вычислите сходство между вопросом пользователя и вопросом в базе данных вопросов и ответов, выберите наиболее похожий вопрос и дайте ему соответствующий ответ.
Расчет сходства предложений включает в себя следующие методы:
Получайте ответы из сводок результатов поиска в 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"
пример: example/taskbot_demo.py
Модель диалога на основе чата, обученная на основе генеративной модели GPT2.
Модель выпущена для моделей HuggingFace: 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
Для получения дополнительной информации о параметрах обучения вы можете непосредственно просмотреть описание параметра в функции set_args() в train.py.
Запустите Interact.py и используйте обученную модель для взаимодействия человека с компьютером. После ввода q для завершения разговора запись чата будет сохранена в файл sample.txt.
python interact.py --no_cuda --model_dir path_to_your_model
При выполнении Interact.py вы можете попытаться настроить создаваемый эффект, настроив такие параметры, как topk, topp, повторение_пеналти, max_history_len и т. д. Для получения дополнительной информации о параметрах вы можете непосредственно просмотреть описание параметра в функции set_args() в файле Interact.py. Если вы хотите использовать графический процессор для генерации, не вызывайте параметр --no_cuda и укажите, какой графический процессор использовать, через -. -устройство 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 | Включая корпус Сяохуанцзи, корпус Дубана, корпус диалогов телевизионных драм, корпус ответов на форуме Tieba, корпус Weibo, корпус сплетен PTT, корпус Qingyun и т. д. |
500 000 китайских чатов | Baidu Netdisk [код извлечения: 4g5e] или GoogleDrive | Содержит исходный корпус и предварительно обработанные данные 500 000 многоходовых разговоров. |
1 миллион китайских чатов | Baidu Netdisk [код извлечения: s908] или GoogleDrive | Содержит исходный корпус и предварительно обработанные данные 1 миллиона многоходовых разговоров. |
Примеры корпуса чата на китайском языке:
谢谢你所做的一切
你开心就好
开心
嗯因为你的心里只有学习
某某某,还有你
这个某某某用的好
你们宿舍都是这么厉害的人吗
眼睛特别搞笑这土也不好捏但就是觉得挺可爱
特别可爱啊
今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
Модель | общий адрес | Описание модели |
---|---|---|
model_epoch40_50w | shibing624/gpt2-dialogbot-base-chinese или Baidu Cloud Disk (код извлечения: taqh) или GoogleDrive | После обучения в течение 40 эпох с использованием 500 000 раундов диалоговых данных потери упали примерно до 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.