基于学习者画像与习题相似度的预科中文习题推送方法转让专利

申请号 : CN202011408926.6

文献号 : CN112347366B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王华珍赵荐轩赵毅飞

申请人 : 华侨大学

摘要 :

本发明实施例公开了一种基于学习者画像与习题相似度的预科中文习题推送方法,首先基于用户的母语语系与用户的历史做题轨迹构建学习者画像;之后构建知识点多叉树,进而采用LCA机制计算习题相似度;接着融合学习者画像与习题相似度生成候选习题队列;最后基于用户交互数据实时生成推送习题队列。本发明实施例针对预科留学生,构建了用户的深度垂直学习者画像;充分利用习题的多层语义信息,提升了习题推送的精准性与可解释性;采用实时交互数据,实现“i+1”教学理论下的实时引导。

权利要求 :

1.一种基于学习者画像与习题相似度的预科中文习题推送方法,其特征在于,包括:步骤10、基于用户的母语语系与用户的历史做题轨迹构建学习者画像;

步骤20、构建知识点多叉树,然后采用LCA机制计算习题的相似度;

步骤30、基于用户的学习者画像与习题相似度,生成候选习题队列;

步骤40、基于用户交互数据遍历候选习题队列,生成推送习题队列;

其中,所述步骤10具体包括:

步骤11、将用户的母语信息L映射到九大语系与孤立语系LF,LF∈(0,1,2,3,4,5,6,7,

8,9);

步骤12、获取用户的历史做题轨迹数据集H,构建用户习题轨迹向量X,其中,X的长度为预科留学生中文知识大纲一级知识点的规模,X的值为一级知识点的做题准确率;

步骤13:汇总用户的母语信息L、语系数据LF以及用户习题轨迹向量X形成学习者画像UP=(L,LF,X);

步骤14:对于任意两位用户a和用户b,学习者画像分别为Ua(L1,LF1,X1)与Ub(L2,LF2,X2),采用如下公式计算用户a和用户b学习者画像的相似度:其中,n为预科留学生中文知识大纲一级知识点的规模,X1i为用户a在预科留学生中文知识大纲第i个一级知识点下的做题准确率,X2i为用户b在预科留学生中文知识大纲第i个一级知识点下的做题准确率。

2.根据权利要求1所述的方法,其特征在于:所述步骤20具体包括:步骤21、根据预科中文知识大纲构造知识点多叉树T,所述知识点多叉树T的根节点R为一虚拟节点,深度h为0,深度h为1的节点与中文知识大纲的一级知识点对应设置,下层子节点与中文知识大纲的下层知识点对应设置;定义所述知识点多叉树T路径权值函数为:h

d(h)=0.5

步骤22、针对任意两道习题ei,ej,i≠j,i,j=1,2...q,q为题库EL的习题数量,根据两道习题分别对应的知识点组Kei={kei1,kei2,...,kein}与Kej={kej1,kej2,...,kejm},计算Kei与Kej产生的所有知识点对的LCA节点,所述LCA节点为:对于有根树T的两个结点u、v,最近公共祖先LCA节点表示一个结点x,满足x是u和v的祖先且x的深度尽可能大;计算出所有知识点对的LCA节点到根节点的边权值的均值,得到习题ei和ej的习题相似度,公式如下:其中,kLCA(keio,kejp)为keio与kejp对应知识点的LCA节点,Dist(k)为任意节点至根节点路径权值和,Lei为题目ei所对应的知识点组Kei长度,Lej为题目ej所对应的知识点组Kej长度。

3.根据权利要求1所述的方法,其特征在于:所述步骤30具体包括:步骤31、提取用户的错题集WE,然后按照时间戳进行排序,生成错题集队列WEL=[we1,we2,...];

步骤32、对总习题库EL进行遍历,当总习题库EL中的任意习题e,满足 中且在错题集WE中可以找到某一习题we满足Simex(e,we)>0时,将习题e加入相似习题集SEL,得到相似习题集SEL={(ei,ri),j=1,2,...,qsel},其中ri为习题ei加入队列时的Simex(ei,we)的值;当错题集WE中存在多道习题与ei满足Simex>0,取最高值作为加入队列时记录的相似度数据ri;

步骤33、计算用户库U中所有用户与当前用户a的相似度,按相似度值由大到小进行排序,取前1%的用户作为相似组SU,然后获取相似组SU的习题集SUE;

步骤34、对相似习题集SEL按下述排序规则进行双条件排序:对任意两道习题(e1,e2)

当e1,e2∈SUE或e1, 时,按两者加入相似习题集SEL时记录的相似度数据由高到低 排序;

当e1,e2任意一道习题属于SUE且另一道习题不属于SUE时,属于SUE的习题置于不属于SUE的习题之前;

相似习题集SEL双条件排序后的结果即为习题候选队列CEL。

4.根据权利要求1所述的方法,其特征在于:所述步骤40具体包括:步骤41、根据一级知识点对用户的历史习题集进行归类,然后根据简单、中等、困难三个难度等级计算用户的答题正确率(rke,rkn,rkh)(k∈1,2...t);

针对每个一级知识点生成简单、中等、困难三个等级下的推送概率:(pke,pkn,pkh)

其中,pke代表简单难度习题的推送概率,pkn代表简单难度习题的推送概率,pkh代表简单难度习题的推送概率;

然后生成一个t×3的知识点推送概率矩阵M,其中,t为中文知识大纲一级知识点的数量;

步骤42、按顺序遍历生成的习题候选队列CEL,对任一习题e,其对应知识点组为{k1,k2,...,km};根据习题e对应的难度选取对应的知识点推送概率,汇总所有知识点的推送概率得到最终推送概率:基于概率阈值准则,确定习题e是否加入推送习题队列FEL,当所述推送习题队列FEL长度满足要求时,结束遍历,返回推送习题队列FEL中的所有题目推荐给用户。

说明书 :

基于学习者画像与习题相似度的预科中文习题推送方法

技术领域

[0001] 本发明涉及推荐算法技术领域,具体涉及一种基于学习者画像与习题相似度的预科中文习题推送方法。

背景技术

[0002] 线上教育因其独特优势,因此各院校也顺势推出针对境外生的在线学习平台。其中,预科中文学习是这些在线学习平台的重要组成部分,能为参加教育部推出的本科来华留学生预科教育结业考试的留学生提供在线智能学习辅导,帮助学生顺利通过考试并且获得高分。平台涵盖汉语水平测试,真题练习,模拟考试等实用功能。
[0003] 目前,用户在传统预科中文学习平台上获取习题,往往只能停留在按知识点、按错题本或纯随机出题,其本质是被动的、非个性化的推送机制,系统不能根据多维度的信息为学习者推送习题,因此导致学习者学习效率不高,学习体验差与平台习题利用率低等问题。因此针对以上描述的问题和缺陷,广大中文预科学习者迫切需要能够结合多个维度的、主动的、个性化的习题推送算法。

发明内容

[0004] 本发明要解决的技术问题,在于提供一种基于学习者画像与习题相似度的预科中文习题推送方法,通过融合学习者画像与习题相似度生成候选习题队列,然后基于用户交互数据实时生成推送习题队列,实现多维度的、主动的、个性化的习题推送。
[0005] 为了解决上述技术问题,本发明是这样实现的:
[0006] 本说明书实施例提供了一种基于学习者画像与习题相似度的预科中文习题推送方法,包括:
[0007] 步骤10、基于用户的母语语系与用户的历史做题轨迹构建学习者画像;
[0008] 步骤20、构建知识点多叉树,然后采用LCA机制计算习题的相似度;
[0009] 步骤30、基于用户的学习者画像与习题相似度,生成候选习题队列;
[0010] 步骤40、基于用户交互数据遍历候选习题队列,生成推送习题队列。
[0011] 进一步地,所述步骤10具体包括:
[0012] 步骤11、将用户的母语信息L映射到九大语系与孤立语系LF,LF∈(0,1,2,3,4,5,6,7,8,9);
[0013] 步骤12、获取用户的历史做题轨迹数据集H,构建用户习题轨迹向量X,其中,X的长度为预科留学生中文知识大纲一级知识点的规模,X的值为一级知识点的做题准确率;
[0014] 步骤13:汇总用户的母语信息L、语系数据LF以及用户习题轨迹向量X形成学习者画像UP=(L,LF,X);
[0015] 步骤14:对于任意两位用户a和用户b,学习者画像分别为Ua(L1,LF1,X1)与Ub(L2,LF2,X2),采用如下公式计算用户a和用户b学习者画像的相似度:
[0016]
[0017] 其中,n为预科留学生中文知识大纲一级知识点的规模,X1i为用户a在预科留学生中文知识大纲第i个一级知识点下的做题准确率,X2i为用户b在预科留学生中文知识大纲第i个一级知识点下的做题准确率。
[0018] 进一步地,所述步骤S20具体包括:
[0019] 步骤21、根据预科中文知识大纲构造知识点多叉树T,所述知识点多叉树T的根节点R为一虚拟节点,深度h为0,深度h为1的节点与中文知识大纲的一级知识点对应设置,下层子节点与中文知识大纲的下层知识点对应设置;定义所述知识点多叉树T路径权值函数为:
[0020] d(h)=0.5h
[0021] 步骤22、针对任意两道习题ei,ej(i≠j;i,j=1,2...q,q为题库EL的习题数量),根据两道习题分别对应的知识点组Kei={kei1,kei2,...,kein}与Kej={kej1,kej2,...,kejm},计算Kei与Kej产生的所有知识点对的LCA节点,所述LCA节点为:对于有根树T的两个结点u、v,最近公共祖先LCA节点表示一个结点x,满足x是u和v的祖先且x的深度尽可能大;计算出所有知识点对的LCA节点到根节点的边权值的均值,得到习题ei和ej的习题相似度,公式如下:
[0022]
[0023] 其中,kLCA(keio,kejp)为keio与kejp对应知识点的LCA节点,Dist(k)为任意节点至根节点路径权值和,Lei为题目ei所对应的知识点组Kei长度,Lej为题目ej所对应的知识点组Kej长度。
[0024] 进一步地,所述步骤S30具体包括:
[0025] 步骤31、提取用户的错题集WE,然后按照时间戳进行排序,生成错题集队列WEL=[we1,we2,...];
[0026] 步骤32、对总习题库EL进行遍历,当总习题库EL中的任意习题e,满足 中且在错题集WE中可以找到某一习题we满足Simex(e,we)>0时,将习题e加入相似习题集SEL,得到相似习题集SEL={(ei,ri),j=1,2,...,qsel},其中ri为习题ei加入队列时的Simex(ei,we)的值;当错题集WE中存在多道习题与ei满足Simex>0,取最高值作为加入队列时记录的相似度数据ri;
[0027] 步骤33、计算用户库U中所有用户与当前用户a的相似度,按相似度值由大到小进行排序,取前1%的用户作为相似组SU,然后获取相似组SU的习题集SUE;
[0028] 步骤34、对相似习题集SEL按下述排序规则进行双条件排序:
[0029] 对任意两道习题(e1,e2)
[0030] 当e1,e2∈SUE或e1, 时,按两者加入相似习题集SEL时记录的相似度数据由高到底排序;
[0031] 当e1,e2任意一道习题属于SUE且另一道习题不属于SUE时,属于SUE的习题置于不属于SUE的习题之前;
[0032] 相似习题集SEL双条件排序后的结果即为习题候选队列CEL。
[0033] 进一步地,所述步骤S40具体包括:
[0034] 步骤41、根据一级知识点对用户的历史习题集进行归类,然后根据简单、中等、困难三个难度等级计算用户的答题正确率(rke,rkn,rkh)(k∈1,2...t);
[0035] 针对每个一级知识点生成简单、中等、困难三个等级下的推送概率:
[0036] (pke,pkn,pkh)
[0037] 其中,pke代表简单难度习题的推送概率,pkn代表简单难度习题的推送概率,pkh代表简单难度习题的推送概率;
[0038] 然后生成一个t×3的知识点推送概率矩阵M,其中,t为中文知识大纲一级知识点的数量;
[0039] 步骤42、按顺序遍历生成的习题候选队列CEL,对任一习题e,其对应知识点组为{k1,k2,...,km};根据习题e对应的难度选取对应的知识点推送概率,汇总所有知识点的推送概率得到最终推送概率:
[0040]
[0041] 基于概率阈值准则,确定习题e是否加入推送习题队列FEL,当所述推送习题队列FEL长度满足要求时,结束遍历,返回推送习题队列FEL中的所有题目推荐给用户。
[0042] 本发明具有如下优点:
[0043] 构建了针对预科留学生的深度垂直学习者画像;充分利用习题的多层语义信息,提升了习题推送的精准性与可解释性;采用实时交互数据,实现“i+1”教学理论下的实时引导。

附图说明

[0044] 下面参照附图结合实施例对本发明作进一步的说明。
[0045] 图1为本发明实施例方法的执行流程图;
[0046] 图2为本发明实施例用户的学习者画像生成流程图;
[0047] 图3为本发明实施例基于知识点生成的多叉树的部分示意图;
[0048] 图4是本发明实施例对相似习题集SEL双排序流程示意图。

具体实施方式

[0049] 为使本发明实施例的目的、技术方案和优点更加清楚,结合附图进一步阐述本发明。应理解,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0050] 本发明的总体思路为:将现有系统中的学生母语语系信息与用户痕迹作为生成学习者画像的基础数据,通过习题的知识点信息构建知识点多叉树,计算归属于不同习题对应的知识节点的LCA节点得到习题间的相似度数据;在通过上述维度获得候选习题队列后,依据“i+1”理论(“i”代表学习者目前的语言知识水平,“1”代表学习者目前语言知识状态与下一阶段的差距)生成每一习题的命中概率,最终生成最终推送习题队列。基于学习者画像与习题相似度的预科中文习题“i+1”推送算法,引入学习者画像与习题相似度双维度习题候选队列生成算法,提高了习题推送的针对性与可解释性。同时,基于“i+1”教学理论的推送概率生成算法,体现了分层教学的教学理论,有效提升了学习者的学习兴趣与学习动机,优化了学习者的学习体验。
[0051] 本发明实施例公开了一种基于学习者画像与习题相似度的预科中文习题推送方法,请参考图1,包括以下步骤:
[0052] S1、基于用户的母语语系与用户的历史做题轨迹构建学习者画像;
[0053] S11、将用户(比如预科留学生)的母语信息L映射到九大语系与孤立语系LF,LF∈(0,1,2,3,4,5,6,7,8,9);对于母语归属于九大语系下同一语系的用户群体,认为该用户群体在母语语系上拥有较高相似度;对于归属于独立语系(LF=9)的语言,则使用母语本身进行相似度判断。
[0054] S12、获取用户的历史做题轨迹数据集H,以此构建一个用户习题轨迹向量X,其中X的长度为预科留学生中文知识大纲一级知识点的规模,其值为一级知识点下的做题准确率。
[0055] S13、汇总用户的母语信息L,语系数据LF与用户习题轨迹数据X,形成学习者画像记为UP=(L,LF,X)。
[0056] S14、对于任意两位用户a和用户b,其学习者画像分别为Ua(L1,LF1,X1)与Ub(L2,LF2,X2),计算用户a和用户b学习者画像的相似度公式如下:
[0057]
[0058] 其中,n为预科留学生中文知识大纲一级知识点的规模,X1i为用户a在预科留学生中文知识大纲第i个一级知识点下的做题准确率,X2i为用户b在预科留学生中文知识大纲第i个一级知识点下的做题准确率;
[0059] 学习者画像生成流程图如图2所示。
[0060] S2、构建知识点多叉树,然后采用LCA机制计算习题的相似度;
[0061] S21、根据预科中文知识大纲构造出一棵知识点多叉树T,根节点R为一虚拟节点,深度h为0;深度h为1的节点为中文知识大纲的一级知识点,以此类推,下层子节点为中文知识大纲的下层知识点,在多叉树T同一深度的边权值d相同且边权值d与深度有关,定义该多叉树路径权值函数为:
[0062] d(h)=0.5h
[0063] S22、针对任意两道习题ei,ej(i≠j;i,j=1,2...,q,q为题库EL的习题数量),根据其对应的知识点组Kei={kei1,kei2,...,kein}与Kej={kej1,kej2,...,kejm},计算Kei与Kej产生的所有知识点对的LCA节点,所述LCA的节点定义为:对于有根树T的两个结点u、v,最近公共祖先LCA节点表示一个结点x,满足x是u和v的祖先且x的深度尽可能大。在这里,一个节点也可以是它自己的祖先。进而计算出所有知识点对的LCA节点到根节点的边权值的均值,即为习题ei和ej的习题相似度。由此定义以下公式:
[0064] 获取任意两个知识点的LCA节点:
[0065] kLCA(k1,k2)
[0066] 获取任意节点至根节点路径权值和:
[0067] Dist(k)
[0068] 任意两道习题e1,e2的相似度公式为:
[0069]
[0070] 其中,kLCA(keio,kejp)为keio与kejp对应知识点的LCA节点,Dist(k)为任意节点至根节点路径权值和,Lei为题目ei所对应的知识点组Kei长度,Lej为题目ej所对应的知识点组Kej长度。
[0071] S3、基于用户的学习者画像与习题相似度,生成候选习题队列;
[0072] S31、提取用户的错题集WE,并按照时间戳由大至小进行排序,生成错题集队列WEL=[we1,we2,...];
[0073] S32、对总习题库EL进行遍历,当且仅当总习题库EL中的任意习题e,e∈EL,满足中且在错题集WE中可以找到某一习题we满足Simex(e,we)>0,将该习题加入相似习题集SEL,最终得到的相似习题集SEL={(ei,ri),j=1,2,...,qsel},其中ri为习题ei加入队列时的Simex(ei,we)的值。当错题集WE中存在多道习题与ei满足Simex>0,取最高值作为加入队列时记录的相似度数据ri;
[0074] S33、根据Simstu函数,计算用户库U中所有用户与当前用户a的相似度,取相似度最高的1%用户作为相似组SU,并获取相似组SU的习题集SUE;
[0075] S34、对相似习题集SEL按下述排序规则进行双条件排序:
[0076] 对任意两道习题(e1,e2)
[0077] (1)当e1,e2∈SUE或e1, 时,按两者加入相似习题集SEL时记录的相似度数据由高到底排序;
[0078] (2)当e1,e2任意一道习题属于SUE且另一道习题不属于SUE时,属于SUE的习题置于不属于SUE的习题之前;
[0079] 相似习题集SEL双条件排序后的结果即为习题候选队列CEL。
[0080] S4、基于用户交互数据遍历候选习题队列,生成推送习题队列;
[0081] S41、根据一级知识点对用户的历史习题集进行归类,进而根据简单、中等、困难三个难度等级计算其答题正确率(rke,rkn,rkh)(k∈1,2...t,t为中文知识大纲一级知识点数量);
[0082] 根据“i+1”教学理论,编号为k的知识点(k∈1,2...t,t为中文知识大纲一级知识点数量),对于其简单难度的习题,当该用户中等与困难难度习题正确较低时,推送简单难度的习题的概率较高,因此,设置简单难度习题的推送概率pke为:
[0083]
[0084] 对于其中等难度的习题,当该用户简单难度习题正确率较高而困难难度习题正确较低时,推送中等难度的习题的概率较高,因此,设置中等难度习题的推送概率pkn为:
[0085]
[0086] 对于其困难难度的习题,当该用户简单与中等难度的习题正确率较高时,推送困难难度的习题的概率较高,因此,设置困难难度习题的推送概率pkh为:
[0087]
[0088] 由此生成编号为k的知识点在简单、中等、困难三个等级下的推送概率:
[0089] (pke,pkn,pkh)
[0090] 最终生成一个t×3的知识点推送概率矩阵M,其中t为中文知识大纲一级知识点数量。
[0091] S42、按顺序遍历S3中生成的习题候选队列CEL,对任一习题e,其对应知识点组为{k1,k2,...,km},根据习题e对应的难度(简单、中等、困难)选取对应的知识点推送概率,汇总其对应的所有知识点的推送概率得到其最终推送概率为:
[0092]
[0093] p的值越接近于1,说明其越符合“i+1”教学理论指导下的习题推送。基于概率阈值准则,确定对习题e是否加入最终的推送队列FEL。即随机生成0至1的随机数,当生成随机数小于习题e的最终推送概率p时,将习题e加入最终推送队列。当最终队列长度满足要求时,结束遍历,返回最终推送队列FEL中的所有题目推荐给用户。
[0094] 以下为一具体实施例:
[0095] 第一步:学习者画像生成
[0096] 学习者画像需要语言语系作为显式数据,用户习题作为隐式数据,针对编号为#0的学生生成学习者画像的过程如下:
[0097] (1)语言语系数据:
[0098] 将用户母语映射成语系,使用了语言学普遍公认的九大语系与孤立语系作为映射结果集,从而获得语系数据LF。本实施例采用的语言与语系数据的对应关系如表1所示:
[0099] 表格1常用语言与九大语系对应关系
[0100]
[0101]
[0102]
[0103]
[0104]
[0105] (2)用户习题轨迹数据
[0106] 获取用户的历史做题轨迹数据集H,以此构建一个用户习题轨迹向量X,其中X的长度为预科中文知识点大纲一级知识点的规模,其值为一级知识点下的做题准确率。
[0107] (3)学习者画像数据元组的构建
[0108] 汇总学习者的母语信息L,语系数据LF与用户习题轨迹数据X形成学习者画像记为UP=(L,LF,X)。
[0109] 针对编号为#0的用户生成学习者画像的具体步骤如下:
[0110] 首先,编号为#0的用户的母语信息与语系映射结果如下所示:
[0111] L#0=英语
[0112] LF#0=0
[0113] 然后,该用户的部分习题轨迹数据表二所示,其中“题目知识点组”表示该题目所对应的知识点信息,组内元素以“,”分割。例如{1.6.2,2.2.2,4.7}指的知识点为编号为1.6.2、2.2.2与4.7的三个知识点。
[0114] 表格2编号为#0的部分习题轨迹信息
[0115]
[0116]
[0117] 最后,汇总生成编号为#0的用户的学习者画像为:
[0118] UP#0={英语,0,[0.9339195828342755,0.7251881382959092,0.5208145598192523,0.8616284113349806,0.6810263255880479,0.5914522872981305,
0.3744961440723096,0.7861996558752264,0.9296202080857866,0.8481496339940807]}[0119] 第二步:基于知识点多叉树与LCA机制习题相似度的计算
[0120] (1)根据预科中文知识大纲构造出一棵知识点多叉树T,根节点R为一虚拟节点,深度为0。深度为1的节点为中文知识大纲的一级知识点,以此类推,下层子节点为中文知识大纲的下层知识点。根据任意两个知识点ki,kj(i≠j;i,j=1,2...s)构建出这两个节点的边权值dij。在多叉树T同一深度的边权值相同且权值与深度有关,多叉树部分示意图如图3所示。
[0121] (2)对任意两道习题ei,ej(i≠j;i,j=1,2...q,q为题库EL的习题数量),根据其对应的知识点组Kei={kei1,kei2,...,kein}与Kej={kej1,kej2,...,kejm},计算Kei与Kej产生的所LCA有知识点对的LCA节点,进而计算出LCA节点到根节点的边权值dij ,即为习题ei和ej的习题相似度。
[0122] 针对ID为413与ID为424的习题计算相似度:
[0123] 首先,ID为413的习题e#413的知识点组K#413={6.1.4.1,1.2},ID为424的习题e#424的知识点组K#424={1.1.2,1.2.4},其所有知识点对为(6.1.4.1,1.1.2),(6.1.4.1,1.2.4),(1.2,1.1.2)与(1.2,1.2.4)。
[0124] 其次,计算其所有知识点对的LCA节点与LCA节点至根节点的距离:
[0125] (6.1.4.1,1.1.2)的LCA节点为0,Dist(0)=0;
[0126] (6.1.4.1,1.2.4)的LCA节点为0,Dist(0)=0;
[0127] (1.2,1.1.2)的LCA节点为1,Dist(1)=0.5;
[0128] (1.2,1.2.4)的LCA节点为1.2,Dist(1.2)=0.75。
[0129] 最后,求出所有知识点对的LCA节点至根节点距离的平均值,记为习题ei,ej的相似度:
[0130]
[0131] 第三步:融合学习者画像与习题相似度生成候选习题队列;
[0132] 提取用户的错题集WE,并按照时间戳由大至小进行排序,生成错题集队列WEL=[we1,we2,...]。
[0133] 对总习题库EL进行遍历,当且仅当总习题库EL中的任意习题e,e∈EL,满足且在错题集WE中可以找到某一习题we满足Simex(e,we)>0,将该习题加入相似习题集SEL,最终得到的相似习题集SEL={(ei,ri),j=1,2,...,qsel},其中ri为习题ei加入队列时的Simex(ei,we)的值。当错题集WE中存在多道习题与ei满足Simex>0,取最高值作为加入队列时记录的相似度数据ri。对用户库U中所有用户进行遍历,取出与用户a具有最高相似度的前1%用户集合作为相似用户组SU。
[0134] 根据Simstu函数,计算用户库U中所有用户与当前用户a的相似度,取相似度最高的1%用户作为相似组SU,并获取相似组SU的习题集合SUE。
[0135] 对相似习题集SEL进行双条件排序,生成习题候选队列CEL,双条件排序的具体过程详见图4。
[0136] 针对编号为#0的用户生成候选习题队列CEL的具体步骤如下:
[0137] 首先,获取编号为#0的用户的错题集WE#0,该用户的部分错题信息如下表所示:
[0138] 表格3编号为#0的部分错题信息
[0139]题目ID 时间戳
412 1580039206
416 1590283268
417 1584495190
419 1583084544
424 1582961296
958 1586444357
762 1588219986
530 1582961296
785 1586444357
949 1588692389
[0140] 按时间戳从大到小排序后生成
[0141] WEL#0=[412,416,762,958,785,417,419,424,530,1772,1986,949,1998,1975,1560,1205,1780,1273,1265,1572,1707,1492,1617,1595,1051,1910,1114,1764,1233,
1845…]
[0142] 对总习题库EL进行遍历,将所有满足条件(ei,ri)加入相似习题集SEL#0,SEL#0={(5910,0.6922667),(4753,0.5354832),(2303,0.08529),(100,0.546306),(1551,0.633632),(4743,0.9098956),(1638,0.9329645),(4488,0.0512871),(2516,
0.6642648),(7398,0.0963061),…}
[0143] 随后获取编号为#0的用户相似组SU#0,部分相似组用户信息如下表所示:
[0144] 表格4编号为#0的部分相似组用户信息
[0145]
[0146]
[0147] 获取相似组SU#0的习题集
[0148] SUE#0={7203,15976,100,17615,24555,13904,14894,20497,233,24707,6001,27445,3917,23742,22673,26421…}
[0149] 最后对相似习题集SEL#0进行双条件排序,对相似习题集SEL#0的具体两组元素的排序过程如下:
[0150] 对(5910,0.6922667)与(100,0.546306):
[0151] ID为5910的习题不属于SUE#0,ID为100的习题属于SUE#0,则ID为100的习题将置于ID为5910的习题之前;
[0152] 对(5910,0.6922667)与(2303,0.08529):
[0153] ID为5910与ID为2303的习题均不属于SUE#0,则依据0.6922667大于0.08529,将ID为5910的习题置于ID为2303的习题之前;
[0154] 最终生成习题候选队列
[0155] CEL#0=[5769,3921,9135,5804,5112,1121,4936,7477,4645,100,3939,8843,2179,2838,1582,4628,2048,9172,8493,7160…]
[0156] 第四步:基于用户交互数据实时生成“i+1”推送习题队列
[0157] 根据一级知识点对用户的历史习题集进行归类,进而根据简单、中等、困难三个难度等级计算其答题正确率(rke,rkn,rkh)(k∈1,2...t,t为中文知识大纲一级知识点的数量)。
[0158] 根据“i+1”教学理论,针对每个一级知识点将生成简单、中等、困难三个等级下的推送概率,最终得到一个t×3的知识点推送概率矩阵M,其中t为中文知识大纲一级知识点数量。
[0159] 顺序遍历第三步中生成的习题候选队列CEL,对任一习题e,其最终推送概率由其对应知识点组为{k1,k2,...,km},根据其难度在知识点推送概率矩阵M中选取对应知识点难度推送概率决定。当习题满足推送条件时,将其加入最终推送队列FEL;当最终推送队列FEL长度满足要求时,结束遍历,返回最终推送队列中的所有题目。
[0160] 首先,对编号为#0的用户,根据一级知识点对其历史习题集进行归类。该用户在“词类”一级知识点下,简单、中等、困难难度的正确率为(0.66,0.5,0.3);
[0161] 根据“i+1”教学理论,生成其在“词类”一级知识点下简单难度习题的推送概率为:
[0162]
[0163] 其在“词类”一级知识点下中等难度习题的推送概率为:
[0164]
[0165] 其在“词类”一级知识点下困难难度习题的推送概率为:
[0166]
[0167] 即可得编号为#0的用户,在“词类”一级知识点下简单、中等、困难三个难度下的推送概率为:
[0168] (0.6,0.68,0.58)
[0169] 以此类推,对所有的九个一级知识点生成简单、中等、困难三个难度下的推送概率,最终得到编号为#0的用户的知识点推送概率矩阵M#0,其大小为9×3。
[0170]
[0171] 对习题候选队列CEL#0中ID为100的习题,其知识点组K#100={7.1.4.1,1.2,3.9.7},难度为中等,则其推送最终推送概率为:
[0172]
[0173] 最后进行一次范围为0到1随机数ran生成,若ran小于等于0.68,则将ID为100的习题加入最终推送队列FEL#0中,否则,则顺序选择习题候选队列CEL#0的下一习题,直到FEL#0长度满足本次推送习题的长度要求。
[0174] 虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。