HowToCreateHomunculus-从零开始学习构建智能对话系统


这个仓库名为 HowToCreateHomunculus,主要聚焦于基于深度学习的对话系统的实现与探索,包含了从简单对话系统到结合数据库和知识图谱的对话系统等多个不同复杂度的项目,为构建对话系统提供了丰富的实践案例和理论指导。以下是对该仓库的详细介绍:

项目概述

项目源于对构建与人类无异的对话系统的向往,受《钢之炼金术师》中瓶中小人角色启发而开展。旨在探索基于深度学习的对话系统的构建方法,并记录学习过程,目前网上缺乏统一鲜明的路线,此项目可作为学习参考。

前置知识

  • 具备编程基础,推荐同时掌握 tensorflowpytorch
  • 本项目基于 NLPBeginner 开发,可先大致了解该项目中关于自然语言处理的知识。

相关基础理论

自然语言理解

  • 语义表示:涵盖分布语义表示(如 word2vecglove)、模型论语义表示和框架语义表示。
  • 意图检测(分类):包含基于规则的方法(如 CFG)、基于传统机器学习的方法(如 SVM)以及基于深度学习的方法(如 CNNRNNLSTM)。
  • 语义槽填充(slot filling):采用序列标注方法,如条件随机场、隐马尔可夫模型(HMM)、CNNRNN

对话管理

选取了几篇经典论文,如关于对话状态跟踪的 Dialog State Tracking Challenge (DSTC)Neural Belief Tracker: Data-Driven Dialogue State Tracking,以及关于对话策略学习的 A Network-based End-to-End Trainable Task-oriented Dialogue System

自然语言生成

目前主流方法为基于深度学习的模型,如 seq2seqtransformerbert,同时也会补充经典的传统模型。

对话系统实现

简单对话系统(1.simpleChatbot

  • 模型:实现了一个 seq2seq 模型,采用 Encoder/Decoder 结构,包含 2 个 LSTM 层,并对 output_projection 机制进行了详细说明,该机制可有效节约存储空间和提升计算速度。
  • 网站界面:使用 Django 框架搭建网站,通过 ChatbotManager 管理聊天机器人实例,实现与用户的交互。

带数据库的聊天机器人(3.chatbotWithDatabase

包含 data.xlsx 数据文件和 main.py 主程序文件,推测用于构建与数据库交互的聊天机器人。

知识图谱聊天机器人(2.knowledgeGraphChatbot

  • 数据字典:包含 food.txtdepartment.txt 等数据字典文件,用于知识图谱的构建。
  • 核心模块:包含 answer_search.pybuildKG.pychatbot_graph.py 等核心模块,用于构建知识图谱和实现聊天机器人的功能。

文件结构

.DS_Store
README.md
3.chatbotWithDatabase/
    data.xlsx
    main.py
2.knowledgeGraphChatbot/
    .DS_Store
    answer_search.py
    buildKG.py
    chatbot_graph.py
    data/
    dict/
    question_classifier.py
    question_parser.py
1.simpleChatbot/
    .DS_Store
    README.md
    chatbot/
    chatbot_website/
    data/
    image/
    main.py
    save/

总结

该仓库为学习和构建基于深度学习的对话系统提供了全面的理论指导和实践案例,适合对自然语言处理和对话系统开发感兴趣的开发者参考学习。