Coder Social home page Coder Social logo

chinesechatbot's Introduction

中文 问答 / 聊天机器人

一个利用模板匹配、问题检索、联网搜索、以及答案生成等方法,完成问答交互的中文聊天机器人。

  • 聊天效果

    
      >> 你好
      你好,你是哪位
      >> 我是你爸爸
      真不怕给自己折寿...
      >> 风寒感冒
      风寒感冒: 
      ·所属科室:疾病百科、中医科、中医综合 
      ·症状表现:小儿发烧后身上起红点、风寒咳嗽、喉部有痰、扁桃体发炎、流鼻涕、鼻塞、恶寒、外寒内热、背心冷、情绪性感冒 
      ·易患人群:无特发人群 
      ·传染途径:通过呼吸道传染 
      ·(可以通过 疾病名称+病因、预防等继续查询)
      >> 感冒的症状
      感冒的症状:头痛、浑身忽冷忽热、咽痛、发烧、咽喉干燥及灼热感、流鼻涕、鼻塞、发热伴寒战、情绪性感冒等
      >> 怎么预防感冒
      感冒的预防方法:本病全年皆可发病,冬春季节多发,可通过含有病毒的飞沫或被污染的用具传播,多数为散发性,但常在气候突变时流行,由于病毒的类型较多,人体对各种病毒感染后产生的免疫力较弱且短暂,并无交叉免疫,同时在健康人群中有病毒携带者,故一个人一年内可有多次发病。
      日常预防
      四种简易预防感冒的方法
      1、冷水洗脸、热水泡足法:每日晨、晚养成用冷水浴面、热水泡足的习惯,这有助于提高身体抗病能力。
      2、盐水漱口:每日早晚、餐后用淡盐水漱口,以清除口腔病菌。在流感流行的。
      3、食醋熏蒸法:把陈醋加热,关上门窗,隔一段时间在房间里熏蒸一次,可有效杀除感冒等病毒。
      4、饮用姜茶法:晚上睡觉前,用萝卜加醋熬汤,或以生姜、红糖适量煮水代茶饮,对防止感冒有很好的效果。
      专业指导
      1、补充维生素E、维生素C。维生素E、维生素C都能有效提高人体免疫力。
      2、保证足够的睡眠。数据显示,只睡半宿的人,免疫力会下降大约三成。而在睡足8小时后,免疫力会立刻恢复。
      3、进行鼻部按摩。大部分感冒中,鼻咽部是最初感染的部位,因此鼻部按摩能有效预防感冒。
      
  • 项目介绍

    1. 模板匹配:利用 XML 文件配置相关人格等固定信息,根据正则表达式匹配答案
    2. 问题检索:利用倒排索引,用余弦相似度筛选答案;或根据知识图谱搜索问题
    3. 联网搜索:利用搜狗问问的搜索引擎对问题进行实时搜索
    4. 答案生成:利用 Seq2Seq 模型以及机器学习方法生成答案(尚未加入该模块)

    问答处理是层级线性的,处理流程如下:

    • 首先将问题送入模板匹配模块,匹配到后会从答案中随机返回。如果没有匹配到答案则送入下一模块
    • 进入检索模块,并根据问题相似度选出匹配问题的答案,如果没有匹配到则送入下一模块
    • 到联网搜索模块,意味着本地语料库没有匹配答案,则根据搜狗问问的接口搜索答案
  • 代码组织结构

    • layer.py
      • 类 BaseLayer 基础类,父类
      • 类 Template 是模板匹配模块
      • 类 CorpusSearch 是问题检索模块
      • 类 MedicalSearch 从医疗知识图谱中检索问题
      • 类 Generate 是答案生成模块(尚未添加功能)
      • 类 Internet 是联网搜索模块
    • factory.py 是处理模块,提供分词、提取关键字、清洗词句等功能
    • filter.py 是层级处理模块,主要控制各模块的顺序运行(添加 score.py 会加入 re-rank 机制)
    • chatbot.py 聊天机器人,拥有联网微信以及本地两种聊天模式
    • run.py 启动机器人
  • 运行方法

    运行 run.py 文件

    
      from chatbot import WXChatBot
    
      if __name__ == '__main__':
          bot = WXChatBot()
          
          # bot.inter_start()
          bot.local_start()
        
      
  • config 文件

    • default_answer.xml 配置了默认答案,当没有联网的情况下且未找到匹配答案时返回默认答案
      需要注意的是,<robot_info>下的 tag 名称要与 的 id 值一致
    • robot_template.xml 配置了机器人的固定人格信息即相应回答
    • special_words.txt 配置了特殊不想被且分开的词汇
    • chat_log.txt 记录了运行中多有的对话
    • inverse_index.json 语料库的倒排索引文件
    • vocab_from_q.json 从语料库中提取出的词典,以 key-value 形式
    • word2vec.model 利用 gensim 进行 Word Embedding,训练得出的 word2vec 模型,
  • 聊天数据

    保存在 corpus/conversation_text.txt 中
    形如:

    
      你好
      你好,你是哪位
      在吗
      在,怎么了?
      

chinesechatbot's People

Contributors

goweixh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

chinesechatbot's Issues

missing

No such file or directory: 'kg_index/medical/special_words.txt'
No such file or directory: 'kg_index/medical/origin_index.json'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.