Dialogbot proporciona una tecnología completa de modelo de diálogo. Combinando el modelo de diálogo basado en búsqueda , el modelo de diálogo basado en tareas y el modelo de diálogo generativo , genera la respuesta de diálogo óptima.
Dialogbot implementa una variedad de soluciones de robots de diálogo, como diálogo de preguntas y respuestas, diálogo basado en tareas y diálogo basado en chat. Admite preguntas y respuestas de recuperación de red, preguntas y respuestas sobre conocimientos de dominio, preguntas y respuestas guiadas por tareas y preguntas y respuestas por chat, todo ello desde. la caja.
Guía
Los sistemas de diálogo hombre-máquina siempre han sido una dirección importante de la IA. La prueba de Turing utiliza el diálogo para detectar si una máquina tiene un alto grado de inteligencia.
¿Cómo construir un sistema de diálogo persona-computadora o un robot de diálogo?
El sistema de diálogo ha evolucionado a lo largo de tres generaciones:
Los sistemas de diálogo se dividen en tres categorías:
Calcule la similitud entre la pregunta del usuario y la pregunta en la base de datos de preguntas y respuestas, seleccione la pregunta más similar y dé su respuesta correspondiente.
El cálculo de similitud de oraciones incluye los siguientes métodos:
Obtenga respuestas de resúmenes de resultados de búsqueda en Baidu y Bing
Demostración oficial: https://www.mulanai.com/product/dialogbot/
El proyecto se basa en Transformers 4.4.2+, torch 1.6.0+ y Python 3.6+. Luego, simplemente haga:
pip3 install torch # conda install pytorch
pip3 install -U dialogbot
o
pip3 install torch # conda install pytorch
git clone https://github.com/shibing624/dialogbot.git
cd dialogbot
python3 setup.py install
ejemplo: ejemplos/bot_demo.py
from dialogbot import Bot
bot = Bot ()
response = bot . answer ( '姚明多高呀?' )
print ( response )
producción:
query: "姚明多高呀?"
answer: "226cm"
ejemplo: ejemplos/taskbot_demo.py
Un modelo de diálogo basado en chat entrenado en base al modelo generativo GPT2.
El modelo ha sido lanzado para los modelos Huggingface: shibing624/gpt2-dialogbot-base-chinese
ejemplo: ejemplos/genbot_demo.py
from dialogbot import GPTBot
bot = GPTBot ()
r = bot . answer ( '亲 你吃了吗?' , use_history = False )
print ( 'gpt2' , r )
producción:
query: "亲 吃了吗?"
answer: "吃了"
Cree una carpeta de datos en el directorio raíz del proyecto, asigne un nombre al corpus de entrenamiento original train.txt y guárdelo en este directorio. El formato de train.txt es el siguiente. Cada chat está separado por una línea.
真想找你一起去看电影
突然很想你
我也很想你
想看你的美照
亲我一口就给你看
我亲两口
讨厌人家拿小拳拳捶你胸口
今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
Ejecute preprocess.py, tokenice el material de diálogo data/train.txt y luego serialícelo y guárdelo en data/train.pkl. El tipo de objeto serializado en train.pkl es Lista [Lista], que registra el token contenido en cada conversación en la lista de conversaciones.
cd dialogbot/gpt/
python preprocess.py --train_path data/train.txt --save_path data/train.pkl
Ejecute train.py y utilice los datos preprocesados para realizar un entrenamiento autorregresivo en el modelo. El modelo se guarda en la carpeta del modelo en el directorio raíz.
Durante el entrenamiento, puedes detenerte antes de tiempo especificando el parámetro de paciencia. Cuando paciencia = n, si la pérdida del modelo en el conjunto de verificación no disminuye durante n épocas consecutivas, se realizará una parada anticipada para detener el entrenamiento. Cuando paciencia = 0, no se realiza la parada anticipada.
La parada temprana está desactivada de forma predeterminada en el código porque, en la práctica, es posible que el modelo generado por la parada temprana no necesariamente produzca mejores resultados.
python train.py --epochs 40 --batch_size 8 --device 0,1 --train_path data/train.pkl
Para obtener más información sobre los parámetros de entrenamiento, puede ver directamente la descripción del parámetro en la función set_args() en train.py
Ejecute interact.py y use el modelo entrenado para realizar la interacción persona-computadora. Después de ingresar q para finalizar la conversación, el registro de chat se guardará en el archivo sample.txt.
python interact.py --no_cuda --model_dir path_to_your_model
Al ejecutar interact.py, puede intentar ajustar el efecto generado ajustando parámetros como topk, topp, repetition_penalty, max_history_len, etc. Para obtener más información sobre los parámetros, puede ver directamente la descripción del parámetro en la función set_args() de interact.py. Si desea utilizar la GPU para la generación, no llame al parámetro --no_cuda y especifique qué GPU utilizar. -dispositivo 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:好哒
Corpus de chat chino | Dirección del conjunto de datos | Descripción del corpus |
---|---|---|
Chat chino común | chino_chatbot_corpus | Incluyendo el corpus Xiaohuangji, el corpus Douban, el corpus de diálogos de dramas televisivos, el corpus de respuestas del foro Tieba, el corpus Weibo, el corpus de chismes PTT, el corpus Qingyun, etc. |
500.000 corpus de chat chinos | Baidu Netdisk [código de extracción: 4g5e] o GoogleDrive | Contiene corpus original y datos preprocesados de 500.000 conversaciones de varios turnos. |
1 millón de corpus de chat chinos | Baidu Netdisk [código de extracción: s908] o GoogleDrive | Contiene corpus original y datos preprocesados de 1 millón de conversaciones de varios turnos. |
Ejemplos de corpus de chat chino son los siguientes:
谢谢你所做的一切
你开心就好
开心
嗯因为你的心里只有学习
某某某,还有你
这个某某某用的好
你们宿舍都是这么厉害的人吗
眼睛特别搞笑这土也不好捏但就是觉得挺可爱
特别可爱啊
今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
Modelo | dirección compartida | Descripción del modelo |
---|---|---|
modelo_epoch40_50w | shibing624/gpt2-dialogbot-base-chinese o Baidu Cloud Disk (código de extracción: taqh) o GoogleDrive | Después de entrenar durante 40 épocas utilizando 500.000 rondas de datos de diálogo, la pérdida se redujo a aproximadamente 2,0. |
Si utiliza Dialogbot en su investigación, cítelo en el siguiente formato:
@misc{dialogbot,
title={dialogbot: Dialogue Model Technology Tool},
author={Xu Ming},
year={2021},
howpublished={ url {https://github.com/shibing624/dialogbot}},
}
El acuerdo de licencia es la Licencia Apache 2.0, que es gratuita para uso comercial. Adjunte el enlace a dialogbot y el acuerdo de licencia en la descripción del producto.
El código del proyecto aún es muy aproximado. Si tiene alguna mejora en el código, puede enviarlo nuevamente a este proyecto. Antes de enviarlo, preste atención a los dos puntos siguientes:
tests
python -m pytest
para ejecutar todas las pruebas unitarias para garantizar que todas las pruebas unitarias pasenLuego puede enviar un PR.