? Usando el interesante corpus chino qingyun, un robot de chat chino escrito por @Doragd: muñeco de nieve:
Aunque ella no es tan perfecta :muscle:, no tan genial :paw_prints:
Pero ella fue codificada por mí:sparkling_heart:, así que
Espero que todos puedan dar más estrellas para apoyar a este principiante de PNL y a sus amigos.
Este proyecto es en realidad un submódulo del diseño del curso de ingeniería de software. Nuestro objetivo es desarrollar un sistema inteligente de procesamiento de tickets de atención al cliente.
El flujo de trabajo real del sistema inteligente de órdenes de trabajo de servicio al cliente es: cuando una persona hace una pregunta al sistema, el sistema primero busca en la base de conocimientos para ver si hay una pregunta relevante. Si es así, devuelve la respuesta a la pregunta. Si la persona no está satisfecha en este momento, puede enviar directamente una orden de trabajo. Si no existe en la base de conocimientos, se llama a este chatbot para obtener respuesta automática.
El escenario de servicio de este sistema es similar al sistema de servicio al cliente de Tencent Cloud. La mayoría de los clientes vienen a consultar problemas relacionados (servidores en la nube, nombres de dominio, etc.), por lo que la base de conocimientos también es una colección de consultas y solución de problemas (preguntas, respuestas). sobre servidores en la nube, nombres de dominio, etc.
La interfaz de front-end del sistema y la interacción de mensajes de front-end y back-end las completa otro compañero de clase @adjlyadv, principalmente usando React + Django.
@Doragd es responsable de adquirir la base de conocimientos y escribir, capacitar y probar el chatbot. El contenido de este repositorio también trata sobre esto.
│ .gitignore
│ config.py #模型配置参数
│ corpus.pth #已经过处理的数据集
│ dataload.py #dataloader
│ datapreprocess.py #数据预处理
│ LICENSE
│ main.py
│ model.py
│ README.md
│ requirements.txt
│ train_eval.py #训练和验证,测试
│
├─checkpoints
│ chatbot_0509_1437 #已经训练好的模型
│
├─clean_chat_corpus
│ qingyun.tsv #语料库
│
├─QA_data
│ QA.db #知识库
│ QA_test.py #使用知识库时调用
│ stop_words.txt #停用词
│ __init__.py
│
└─utils
beamsearch.py #to do 未完工
greedysearch.py #贪婪搜索,用于测试
__init__.py
Instalar dependencias
$ pip install -r requirements.txt
$ python datapreprocess.py
Preprocese el corpus para generar corpus.pth ( corpus.pth se ha subido aquí, por lo que este paso se puede omitir )
Parámetros modificables:
# datapreprocess.py
corpus_file = 'clean_chat_corpus/qingyun.tsv' #未处理的对话数据集
max_voc_length = 10000 #字典最大长度
min_word_appear = 10 #加入字典的词的词频最小值
max_sentence_length = 50 #最大句子长度
save_path = 'corpus.pth' #已处理的对话数据集保存路径
Cuando utilice la base de conocimientos, debe pasar el parámetro use_QA_first=True
En este momento, para la cadena de entrada, la mejor pregunta y respuesta primero se comparan en la base de conocimientos y se devuelven. Cuando no se puede encontrar, se llama al chatbot para generar automáticamente una respuesta.
La base de conocimientos aquí es una colección de 100 preguntas y respuestas frecuentes compiladas de documentos oficiales de Tencent Cloud, ¡solo para pruebas!
$ python main.py chat --use_QA_first=True
Debido a las necesidades del diseño del curso, se agregaron pares de preguntas y respuestas de Tencent Cloud, pero son irrelevantes para el proyecto del robot de chat, por lo que cuando se usa de manera general, use_QA_first=False
, este parámetro por defecto es True
$ python main.py chat --use_QA_first=False
$ python main.py chat
exit
, quit
o q
Explique en el archivo config.py
Cuando necesite pasar nuevos parámetros, solo necesita pasarlos desde la línea de comando, en forma de
$ python main.py chat --model_ckpt= ' checkpoints/chatbot_0509_1437 ' --use_QA_first=False
El comando anterior indica la ruta para cargar el modelo entrenado y si se debe utilizar la base de conocimientos.
Nombre del cuerpo | Número de corpus | Explicación de las fuentes del corpus. | Características del corpus | muestra de corpus | Si ha sido participio |
---|---|---|---|---|---|
qingyun (corpus de Qingyun) | 10W | Un grupo de comunicación chatbot | Relativamente bueno, amigable para la vida. | P: Parece que amas mucho el dinero. R: Oh, ¿en serio? Entonces ya casi has llegado | No |
$ python train_eval.py train [--options]
La parte de evaluación cuantitativa aún no se ha escrito. Debe medirse con perplejidad. Actualmente, solo puede generar oraciones y evaluar manualmente la calidad.
$ python train_eval.py eval [--options]