← 返回目录


HITszQAbot 项目记录

学校≠教育≠技能;文凭溢价=80%信号传递+20%人力资本

16 👍 / 12 💬

偷偷开一个新专栏,写点自己大学折腾的东西。


项目目标

在HITsz的QQ招生群中自动回复学生和家长提出的问题,减轻招生老师和志愿者的工作负担。

问题分析

招生群里的问题通常是有一定范围的,类似于信息检索,只不过用户的 Query 比较口语化。而且用户在 QQ 群里提问的问题较短,且很少会在一句话里问多个问题。同时群聊信息较多,很少会继续多轮问答,所以只考虑单轮问答的情况。综上所述,我们要实现的是一个限定范围下的单轮问答,所以可以直接用文本分类的方法。

解决方案

把学校招生常见的问题打上标签,然后喂给神经网络做文本分类,训练好后基于NoneBot框架接上酷Q的API,实现在招生QQ群里回答问问题的家长和学生。

项目进展

文本分类器:之前使用 TextCNN,现在已经更换为 BERT;

机器人框架:在@机器人或提及机器人小名时会调用模型并回复,其余情况只收集语料和分类,记录到日志中。

GitHub 地址:L-M-Sherlock/HITszQAbot

难点/盲区

这套解决方案有一个很明显(然而我瞎了)的问题,那就是大部分家长和学生提问题的时候可不会指定谁来回答。

出现这种情况还是由于我看问题的方式不够全面,将文本分类精度当作了主要指标。而实际和与理论之间可能隔着十万八千里。

如何改进?

目前想到两个解决方法:

  1. 将置信度作为是否回复的第二个条件。当置信度足够高时,即使用户没有call机器人,也进行回复。
  2. 再训练一个文本分类器,来判断用户的消息是否在提问,从而决定是否回复。

当然,上面两个解决方法都有各自的问题:

如果采用方法一,有些短文本很容易产生高置信度,不好把控置信度阈值。

如果采用方法二,这个二分类的训练数据该如何确定?问的是招生咨询以外的问题该如何处理?

总结

理论很丰满,现实很骨感,一个看似简单的问题实际上可能有很多坑。在项目中不能只看理论指标,还需要重视实际效果。学技术,不能解决实际问题就成了空谈了。

本项目还有挺多不规范的地方,持续改进中,如果有什么意见或者建议,欢迎讨论。


专栏:Thoughts Memo的文章


← 返回目录