Skip to content
/ PQ Public

PopQuiz - using AI to give smart pop quiz about any content, a quick and easy way to check the audience "have you paid attention".

License

Notifications You must be signed in to change notification settings

xinase/PQ

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 

Repository files navigation

PQ

PopQuiz - using AI to give smart pop quiz about any content, a quick and easy way to check the audience "have you paid attention". Knowledge is free, but you have to pay attention.

Chinese Introduction:

场景: 任何分享知识的场景 - 老师讲课, 大咖分享 PPT, ... 都存在这样的痛点:
演讲人:听众都 get 到了么? 我看到他们都在看手机...
听众:你讲的我现在就有不同意见,怎么给你提?
组织者:这次分享效果如何? 听众投入 (engagement) 了么? 听众有实际收获么? 有什么值得改进的地方?

想象中的典型互动: 演讲开始后, 大约每 10 分钟, 演讲者就会提示,“我们做一个现场调研”。 所有听众的手机 app (或小程序)就收到提示, Ai-pop-quiz 给大家发来了根据前 10 分钟内容的选择题。 大家只用花 10 秒钟回答就好。 然后继续听演讲。 当然,听众也可以回复其它类型的反馈,如:讲得太快,讲得太慢,太乏味... 等等。

演讲结束: 听众会收到: 你回答的问题, 正确率为 X% , 在所有听众中, 排名是 Y ... 以及其他统计信息。 演讲者, 组织者会收到: 你的演讲的 pop-quiz 的统计如下 ...
事后,演讲者和听众还可以方便地看到所有选择题,双方可以就所有选择题进行讨论, 例如,这个题目有问题,我有更好的答案,或者我有进一步的问题要讨论等等。
组组者:我一段时间以来组织的 N 场演讲,各个演讲者的表现如何? 我有 M 个听众,他们在这 N 场演讲的表现如何?

数据隐私:我相信,如果这些数据对于演讲者和组织者来说都是匿名的,那效果会更好。 当然,也可以让用户自己选择。

AI 根据演讲的内容出题。 而不是演讲者事先出题。 因为:事先出题成本太高, 演讲者有很多脱稿内容(是语音内容), AI 可以及时捕捉,生成题目。

粗略设计

PQ 解决方案可以分为三个部分:

  1. 输入收集: 把各种模态的输入变为文字,保存到数据库。
  2. 处理: 分析数据库里面的 ”内容“, 把它们变成各种各样的测试题目(目前是 选择题)
  3. 输出+用户交互:把题目通过 小程序/app 和用户交互, 用户信息管理, 收集反馈/判题/统计数据, 发给用户和内容的创造者 (老师, 演讲者,组织者,等)。

更详细的解释:

我经常去大学讲课, 也做培训,当老师演讲的时候,很多学生都埋头就看手机📱。 这未必就是不听或者不注意,也许学生在用手机做笔记,也许在开小差,包括眼睛不看手机的学生,有可能心不在焉。 经过和朋友的几次讨论, 我觉得可以做一个 “临场注意力检测” app, 或者叫 POPquiz generator,老师讲了十分钟后,就点一下 POP quiz 按钮。AI 可以分析老师前十分钟的内容 (PPT,语音,视频),自动生成一个 quiz,发到学生的手机上。三十秒后,这个quiz 就超时。老师继续讲。

传统:老师要手动编这些quiz 非常累,还有学生登录,统计等工作要做。而且讲课会有一些即席发挥和变动,还可能有师生问答,事先想不到, 不能事先准备相关的 quiz。AI 就可以根据现场录音,ppt等发挥, 产生 quiz。

在传统的POP quiz 中,去年的POP quiz 可以事先知道,邻座的同学很容易抄袭答案。

优势:AI 可以生成多种不同的问题, 不同的学生收到的提问不尽相同。而且紧扣老师现场讲的内容,这样可以大大提高效果。quiz的准确度未必要很高,可以让学生自己写他认为正确的答案。课堂结束后,可以马上看到统计,这样老师和学生都能看出来大家的了解程度。 学生也得到了一组课程笔记。

我自己讲课的时候,都频繁提问,但是这较花时间。 这种方法在各种培训中也很有用处,一些培训老师都会有这样的现场 quiz。

学生的实践

有一些学生已经开始了实践:
https://github.com/menghan-xu/popquiz

功能需求列表

下面是一个基本的功能需求列表,每个团队需要完成基本的功能。

  1. 输入收集: 把各种模态的输入变为文字,保存到数据库。
    1.1 输入是文本文件
    1.2 输入是 PowerPoint 文件
    1.3 输入是 pdf 文件
    1.4 输入是音频文件
    1.5 输入是视频文件
    1.6 输入是视频文件,其中视频中有文字信息(例如是在播放 PowerPoint),它们也要被保存到数据库

  2. 处理: 分析数据库里面的 ”内容“, 把它们变成各种各样的测试题目(目前是 选择题)
    2.1 输出有四个选项的选择题,只有一个答案是完全符合题目要求的。
    2.2 输出每道题目的时间不能多于 10 秒钟。
    2.3 建立一个测试集合, 有典型的各种文本 (如,讲解编程语言的讲稿, 介绍某个历史事件的讲稿,等),输出选择题, 并且这个选择题能让目标用户觉得有足够的难度,而不是非常浅显,或文不对题。
    2.4 建立一个持续调用 AI 大语言模型,检查输出的结果,并不断提高输出质量 (通过更好的提示词和提供更多素材)的闭环。 这个闭环不光是简单地把提示词发给 AI,然后就把结果传给用户。它应该是一套对因果,权责有强约束力的行为链条,如果AI 返回的题目太肤浅,你会怎么检测出来这个 “太肤浅” 的状态,你怎么让 AI 创造出更 “深刻” 的题目? 如果 AI 并没有理解你传入的文本信息, 你如何检测到这个信息并让 AI 接触到更核心,更广泛的上下文(context)?

  3. 输出+用户交互:把题目通过网页 app 和用户交互, 用户信息管理, 收集反馈/判题/统计数据, 发给用户和内容的创造者 (老师, 演讲者,组织者,等)。
    3.1 构建一个简单的网页 app,能演示从用户(听众)看到题目,回答题目,回答多个题目,并返回用户回答正确与否,和统计信息(答对了多少)
    3.2 构建一个简单的网页 app,能演示演讲者看到的结果(有多少学生回答了第一题, 第二题,... 他们回答的准确率如何)
    3.3 构建一个简单的网页 app,能演示组织者看到的结果,可以选择 “演讲”,然后,不同的演讲有 N 个测试(quiz),不同测试的统计信息。 (多少人回答了,多少人没回答,多少人答对,等等) ,对于每个听众, 他们会收到 “我的回答正确率, 我在所有人中的排名,等信息)。
    3.4 用两个不同的文件作为输入,可以生成 5 个选择题, 有一个组织者,一个老师,三个听众, 能在网页 app 上完整演示所有功能。
    3.5 允许用户在答题外,反馈另外几个信息: a. 关于演讲者的: 讲得太快,讲得太慢,演讲本身太乏味. b. 关于题目的: 题目出得质量不好, 太深, 太浅显, 和内容不相关, 等. c. 关于环境的: 演讲环境不好, 音响效果差, 教室不好, 等等.
    期待: 系统能能收集并处理这些反馈,并在给演讲者和组织者的报告中有显示。
    3.6 允许为每一个题目创建一个即时的讨论区, 一个题目的回答截止时间过后, 这个讨论区显示题目和选项, 各个回答的统计数据, 让所有人在这里发评论。

  4. 在网页 app 上实现组织者,演讲者,听众的注册,登录等用户管理功能,各种讲课的管理 (演讲者 - 课程 - 听众)的关系要体现出来。

  5. 在微信小程序上,把 3. 和 4. 的功能实现, 二者选一就好, 不重要的功能可以大大简化 (例如, 不搞 "密码找回", "验证你是真人" 等).

  6. 其他学生们自己想出来的功能
    6.1 例如, 为了防止简单的抄袭, 一个题目的内部正确答案 (A,B,C,D 中 D 是对的) 在每个客户端的 UI 层面是不一样的排列, 同一套题目,同样 4 个不同回答, 用户李磊 看到 A,B,C,D 和 用户韩梅梅看到的 A,B,C,D 的内容是不一样的. 这样李磊和韩梅梅就不能简单地互相抄袭了. 技术上, UI 层的选择会映射到内部的编号, 然后进行判断和计算. 而且, 这个逻辑不应该暴露在客户端, 否则很容易被破解. ... ...

  7. 测试的数据在这里: https://github.com/orgs/pq-25-summer/discussions/3 你的解决方案应该至少能对这样的输入有令用户基本满意的结果。

用户体验 (UX)关系到用户是否成为长期用户

我们程序员辛辛苦苦把 app 做出来后,非常希望用户能马上爱上这个软件。 但是用户从来就没了解这个软件, 他们有自己的习惯和期望值, 我们怎么能让 第一次 的体验非常好呢? 每个团队要在给典型用户试用的过程中探索并解决这些 UX 问题。

  1. 演讲开始之前,演讲者和听众如何感知pop-quiz的?需不需要做些预先的准备?谁来做?
  2. 做题是一个中断演讲的事件, 用户喜欢被打断么? 那么在演讲中,如何更温柔地告知每个人“要回答问题咯”
  3. 提交答案的时候,避免实名制,可以让用户pick一个有主题背景的nickname,比如动物园的动物、甜品等(可以根据演讲主题去设定)
  4. 看统计,配合数字统计,可以通过AI做些数据可视化的图形,方便阅读。
  5. 最后是“我能带走什么”,即收获阶段,除了知识,是否可以做一些徽章收集,在未来的课程或参与的演讲中,用户可持续收集。(游戏化)

怎么深入了解用户

  1. 第一层,他们说了什么。 这些数据来自问卷调查的原始数据,或者道听途说,或者是别人的意见(opinion),而不是真是的数据(data)。 例如,老师认为,学生应该专心听讲并积极思考和提问,这是一个意见, 未必是学生的数据。
  2. 第二层,他们怎么感受的。 他们直接的感受和期待是什么? 我们要设计更好的用户调查和访谈,把这层意思找出来,这未必就是问卷调查表格上的文字。 例如,他们口头上会说喜欢 pop-quiz 这个工具,但感情上很反感这个工具侵犯了他的舒适区?
  3. 第三层,他们做了什么。 是不是说一套,做一套呢? 我们要提一些开放式的问题,让他们动手完成一些任务,观察和分析他们的行为。 学生表示 “我会经常复习课上的内容的”, 但是他们的实际行为呢, 这个 “经常” 是否是 “考试前一天”?
  4. 第四层,他们为什么这么做。 只有找到背后的动机,才能真正理解用户。 我们需要深入访谈、深入分析,迭代我们的产品,分析用户实际行为,才能达到 理解 这个层面。

实际的多场活动的测试

我们可以独立测试一些模块的功能,实际上的情形要复杂得多,在 集成测试 中,我们要完整地测试一次活动,还有同时发生的多次活动要测试。例如, 我们假设有两组 【组织者/演讲者/听众】同时参与两个独立的 “演讲” 的活动,他们都用我们的服务,那么, 还有一些细节要考虑:

  • 组织者怎么拿到演讲者的 ppt 然后开始自动出题? 如何唯一标识这次演讲?
  • 出题的时间间隔如何设置?
  • 如何告诉听众要去某个 web page 或 小程序?
  • 题目跳出来的时候, 演讲者要被提醒并停止演讲 30 秒么?还是对演讲者没有影响,演讲和听众回答问题同步进行?
  • 组织者/演讲者/听众在什么时候看到统计信息?
  • 作为组织者, 为 300 名学生组织了 20 次讲课, 每次课平均有 10 次 pop quiz, 收集了很多数据 (回答的次数, 回答的延时, 回答的正确率, 对演讲其它方面的反馈, 课后参与讨论的次数, 等). 那么, 可以从这 "大数据" 中推导 "有注意力" 的分布么? 能否构造测试数据, 显示一个比较实际和可信的数据统计和 top10 "有注意力" 和 "没有注意力" 的学生? 注意, 有注意力 和 成绩好 不是完全对应的关系.

对扩展功能的思考

我们可以考虑, 在最初的场景中,我们要演讲者、组织者参与。 但是,如果最简的情况下, 一个学生或者几个学生不能学习么? 考虑这个场景:
小明想学习某个内容(课件, 考试资料, 视频, 公众号文章),他就把文章或链接仍到 popquiz 里, 根据自动生成的各种quiz 来答题, 或者他可以分享这个 “讲课”, 让其它人也来答题、讨论。 如何?

About

PopQuiz - using AI to give smart pop quiz about any content, a quick and easy way to check the audience "have you paid attention".

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published