一种近似题推送方法及系统技术领域
本发明涉及推送领域,尤其涉及一种近似题推送方法及系统。
背景技术
大数据时代,每天所产生的数据量爆炸式的增长。K12教育作为中国最重要的教育
形式之一,每天产生的数据量不可忽视。中国在线教育的规模正以每年30%以上的速度增
长,市场估值将超过1600亿元。教育应用或网站中,常有当学生遇到难解或薄弱题后,需推
送其近似题供其深入练习的需求。
现有的题目推荐多基于协方差矩阵的推荐系统,引入类似商品推荐的方法,所推
送题目对教学模式的适应性较低。并且题目的特征提取相对简单,不适用于含较多公式或
复杂成分的题目。现有的相关题目相似度计算方法中,主要有以下三类:
(1)计算两个题目的最长公共字符,再除以两个题目中最短题目的字符个数则为
两个题目的相似度。
(2)根据当前题目的知识点信息,从与其知识点相同的其他题目中随机抽取相关
题目作为相似题。
(3)将一个题目转换为另一个题目所需要的最小编辑(增删改等操作)的次数。
(4)计算两个题目之间的增删距离和替换距离,将两种距离综合得到两个题目的
相似度以达到推送相关题目的目的。
以上的方法所推送的题目相关性较差,推荐的效果并不理想。
发明内容
本发明所要解决的技术问题是:提供一种近似题推送方法及系统,实现提高推送
题目的相关性。
为了解决上述技术问题,本发明采用的技术方案为:
本发明提供一种近似题推送方法,包括:
S1:提取第一题目中的符号;
S2:根据所述的符号进行归类,得到与所述第一题目相应的分类;
S3:计算所述第一题目与所述分类中各题目的相似度;
S4:根据所述相似度形成近似题集合;
S5:推送所述近似题集合。
本发明还提供一种近似题推送系统,包括:
提取模块,用于提取第一题目中的符号;
归类模块,用于根据所述的符号进行归类,得到与所述第一题目相应的分类;
计算模块,用于计算所述第一题目与所述分类中各题目的相似度;
获取模块,用于根据所述相似度形成近似题集合;
推送模块,用于推送所述近似题集合。
本发明的有益效果在于:通过提取第一题目中的符号,根据所述符号进行归类并
推送与第一题目相似的近似题集合,实现充分利用题目中的信息,从而提高推荐题目的相
关性。
附图说明
图1为本发明一种近似题推送方法的流程框图;
图2为本发明一种近似题推送系统的结构框图;
标号说明:
1、提取模块;2、归类模块;3、计算模块;4、获取模块;5、推送模块。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附
图予以说明。
本发明最关键的构思在于:通过提取第一题目中的符号,根据所述符号进行归类
并推送与第一题目相似的近似题集合,实现提高推荐题目的相关性。
如图1所示,本发明提供一种近似题推送方法,包括:
提取第一题目中的符号;
根据所述的符号进行归类,得到与所述第一题目相应的分类;
计算所述第一题目与所述分类中各题目的相似度;
根据所述相似度形成近似题集合;
推送所述近似题集合。
进一步地,所述S2具体为:
根据预设的转义字符转换所述符号,得到第二题目;
提取所述第二题目的特征,得到第一向量;
根据预设的知识点分类模型,得到与所述第一向量相应的分类。
由上述描述可知,由于不同来源的题目的描述方式可能不同,尤其是不同的公式
编辑器对公式中的符号的描述差异较大,因此,通过预设的转义字符转换所述公式中的符
号,可归一化不同描述方式但代表相同意思的符号,从而准确并充分利用题目中的信息,提
高推送题目的相关性及获取近似题的效率。
例如:待推送近似题的题目1为“使函数有意义的的正整数取值范围
组成的集合的元素有?”。待推送近似题的题目2为“使函数有意义的y=(5-x)1/2的正整数取
值范围组成的集合的元素有?”。实际上,题目1和题目2本质上是相同的,但是现有的方法无
法充分利用题目中公式的信息,只是推送计算变量的取值范围从而使函数有意义的题目,
而无法更具有针对性地推送计算变量的取值范围从而使带有根号的函数有意义的题目。且
现有的方法无法识别和判断相同的题目,造成需重复解析同一题目从而获得近似题,效率
低。
进一步地,提取所述第二题目的特征,得到第一向量,具体为:
解析所述第二题目,得到中文字符栈和非中文字符栈;
使用切词算法对所述中文字符栈中的字符进行切词处理,并使用预设的正则表达
式匹配所述非中文字符栈中存储的公式,得到第三题目;
从所述第三题目中删除停止词,得到第四题目;
提取所述第四题目的特征,得到第一向量。
由上述描述可知,由于现有的切词算法会删除题目中的非中文字符,只对中文字
符进行切词处理,因此,本发明先将题目中的中文字符和非中文字符分别放入不同的栈,对
中文字符栈进行切词处理,对非中文字符栈使用正则表达式匹配相应的公式,尽量将公式
中可识别的部分分开,能够在保留题目中信息的同时,对题目进行切词,有利于提取题目中
的特征向量。此外,使用栈保存中文字符和非中文字符能够保证字符顺序不变,在切词处理
过程中不改变题目的原意。再者,删除题目中的停止词,即无意义的词,如“的”、“它”、“在”、
“为”、“里面”等,能够更精确地提取题目的特征向量,忽略无关信息,降低特征向量的冗余
度。
进一步地,从所述第三题目中删除停止词,得到第四题目,具体为:
计算所述第三题目中各个词的权重;
根据所述权重将所述第三题目中的词排序,形成第一队列;
从所述第三题目中删除与所述第一队列前预设个数元素相应的词,得到第四题
目。
由上述描述可知,由于不同学科和不同学龄段的停止词的具体内容不同,现有的
停止词获取方法为通过停止词表进行查阅,灵活性和针对性较低,本发明通过停止词计算
算法,如TF-IDF算法,计算各个词在题目中的权重,并删除所述第三题目中权重较小的词,
能够针对不同学科获得不同的停止词,从而提高获取到的近似题的相关性。
例如,常见词汇“加速度”在物理学科中是经常出现的词汇,而且对题意的理解也
是很重要的,然而在生物学中,1000道题目都未必能有这种词汇,因此如果在生物学科中发
现有“加速度”,就可以认定为其是停止词,并不能作为生物学科中重要的词看待,可以将其
删除。
其中,词频(term frequency,TF)指的是某一个给定的词语在该文件中出现的次
数。这个数字通常会被归一化(分子一般小于分母区别于IDF),以防止它偏向长的文件。其
计算公式如下:
上述公式中ni,j是该词在文件dj中出现的次数,而分母这是在文件dj中所有字词出
现的次数之和。
逆向文件频率(inverse document frequency,IDF)是一个词语普遍重要性的度
量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商
取对数得到。其公式如下所示:
其中|D|是语料文件的总数,|{j:ti∈dj}|包含词语ti的文件数目,如果该词不在
语料库中,就会导致被除数为0,因此一般情况下使用的是1+|{j:ti∈dj}|。最后得到TF-IDF
的公式,如下所示:
tf-idfi,j=tfi,j×idfi
某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可
以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。
进一步地,所述S2具体为:
根据预设的转义字符转换所述符号,得到第二题目;
根据所述第二题目构建词频向量;所述词频向量中元素的个数为预设训练数据集
中不同词的数量,所述词频向量中元素的值为与所述元素相应的词在所述第二题目中出现
的次数;
根据预设的维度建立语义特征抽取模型;
根据所述语义特征抽取模型构建与所述第二题目相应的语义向量;
根据预设的知识点分类模型,得到与所述词频向量和所述语义向量相应的分类。
由上述描述可知,由于传统的机器学习模型中只使用了词频向量或者0-1向量来
提取题目的特征,而忽略了题目中上下文之间的关系,本发明不仅包含有词频向量而特意
引入了可以度量上下文之间关系的语义向量(即word2vec向量或者gloVe向量),将两种向
量结合可有效提高分类正确率,保证在获取词汇对整个题库的重要程度的基础上,加入词
汇之间的上下文关系,使得后续输入到分类模型中的向量具有更丰富的含义,从而提高获
取近似题的相关性。此外,在训练语义特征抽取模型时可以根据实际情况确定词向量的维
度,达到降维的目的,从而降低计算的复杂度,降低分类过程所需的内存空间,降低特征抽
取模型的大小,避免占用过多内存。
进一步地,根据预设的知识点分类模型,得到与所述词频向量和所述语义向量相
应的分类,具体为:
根据基于词频的知识点分类模型,得到与所述词频向量相应的第一知识点集合;
根据基于语义的知识点分类模型,得到与所述语义向量相应的第二知识点集合;
根据所述第一知识点集合和所述第二知识点集合,得到第三知识点集合;
根据所述第三知识点集合得到与所述词频向量和所述语义向量相应的分类。
由上述描述可知,通过基于词频的知识点分类模型得到的第一知识点集合和基于
语义的知识点分类模型得到的第二知识点集合,能够得到题目所包含的知识点,从而添加
该题目到所述知识点相应的分类中,实现精确地按知识点分类,从而提高从所述知识点分
类中获取的近似题与第一题目的相关性。
进一步地,根据所述第一知识点集合和所述第二知识点集合,得到第三知识点集
合,具体为:
获取所述第一知识点集合和所述第二知识点集合中相同的知识点;
获取所述相同的知识点根据基于词频的知识点分类模型得到的第一权重值;
获取所述相同的知识点根据基于语义的知识点分类模型得到的第二权重值;
根据所述第一权重值和所述第二权重值,形成与所述相同的知识点相应的权重值
集合;
根据所述权重值集合排序将所述相同的知识点,获取与预设知识点数相应的知识
点,形成第三知识点集合。
由上述描述可知,通过综合分析基于词频的知识点分类模型得到的第一知识点集
合和基于语义的知识点分类模型得到的第二知识点集合中各知识点所占的权重值,可获知
题目与各知识点的关联程度,从而实现将题目添加到关联度较高的知识点分类中,提高获
取第一题目所述知识点的分类的精确度,从而提高从相关知识点分类中获取的近似题与第
一题目的相关性。
进一步地,所述S3具体为:
计算所述第一题目与所述分类中各题目的余弦距离;
根据所述余弦距离得到所述第一题目与所述分类中各题目的相似度。
由上述描述可知,通过计算所述第一题目与所述分类中各题目的余弦距离可有效
找到与第一题目相似度高的题目。
进一步地,所述S4具体为:
将所述分类中各题目按所述相似度排序,形成第一队列;
从所述第一队列中获取与预设推荐数相应的题目,形成近似题集合。
由上述描述可知,在不同的场景下,用户所需的推荐数可能不同,可根据预设推荐
数推荐最相关的题目。
如图2所示,本发明还提供一种近似题推送系统,包括:
提取模块1,用于提取第一题目中的符号;
归类模块2,用于根据所述的符号进行归类,得到与所述第一题目相应的分类;
计算模块3,用于计算所述第一题目与所述分类中各题目的相似度;
获取模块4,用于根据所述相似度形成近似题集合;
推送模块5,用于推送所述近似题集合。
由上述描述可知,本发明提供的近似题推送系统可提高推送题目与所述第一题目
的相关性。
本发明的实施例一为:
提取第一题目中的符号;
根据预设的转义字符转换所述符号,得到第二题目;
解析所述第二题目,得到中文字符栈和非中文字符栈;
使用切词算法对所述中文字符栈中的字符进行切词处理,并使用预设的正则表达
式匹配所述非中文字符栈中存储的公式,得到第三题目;
计算所述第三题目中各个词的权重;
根据所述权重将所述第三题目中的词排序,形成第一队列;
从所述第三题目中删除与所述第一队列前预设个数元素相应的词,得到第四题
目;
提取所述第四题目的特征,得到第一向量;
根据预设的知识点分类模型,得到与所述第一向量相应的分类;
计算所述第一题目与所述分类中各题目的余弦距离;
根据所述余弦距离得到所述第一题目与所述分类中各题目的相似度。
将所述分类中各题目按所述相似度排序,形成第一队列;
从所述第一队列中获取与预设推荐数相应的题目,形成近似题集合;
推送所述近似题集合。
由上述描述可知,本实施例通过将题目中的符号通过预设的转义字符进行归一化
处理,通过对题目中的中文字符进行切词处理,通过对题目中的非中文字符使用正则表达
式匹配,通过删除题目中的停止词,提高了题目按知识点归类的精确度,实现有效提高推送
的近似题集合中的题目与第一题目的相关性。
本发明的实施例二为:
提取第一题目中的符号;
根据预设的转义字符转换所述符号,得到第二题目;
根据所述第二题目构建词频向量;所述词频向量中元素的个数为预设训练数据集
中不同词的数量,所述词频向量中元素的值为与所述元素相应的词在所述第二题目中出现
的次数;
根据预设的维度建立语义特征抽取模型;
根据所述语义特征抽取模型构建与所述第二题目相应的语义向量;
根据基于词频的知识点分类模型,得到与所述词频向量相应的第一知识点集合;
根据基于语义的知识点分类模型,得到与所述语义向量相应的第二知识点集合;
获取所述第一知识点集合和所述第二知识点集合中相同的知识点;
获取所述相同的知识点根据基于词频的知识点分类模型得到的第一权重值;
获取所述相同的知识点根据基于语义的知识点分类模型得到的第二权重值;
根据所述第一权重值和所述第二权重值,形成与所述相同的知识点相应的权重值
集合;
根据所述权重值集合排序将所述相同的知识点,获取与预设知识点数相应的知识
点,形成第三知识点集合;
根据所述第三知识点集合得到与所述词频向量和所述语义向量相应的分类;
计算所述第一题目与所述分类中各题目的余弦距离;
根据所述余弦距离得到所述第一题目与所述分类中各题目的相似度;
将所述分类中各题目按所述相似度排序,形成第一队列;
从所述第一队列中获取与预设推荐数相应的题目,形成近似题集合;
推送所述近似题集合。
由上述描述可知,本实施例与本发明的实施例一相比,进一步结合词频向量和可
以度量上下文之间关系的语义向量,有效提高获取第一题目相关知识点的准确性,从而提
高推送近似题的相关性。
本发明的实施例一提供的方案随着题目字数的增加,归类的准确率降低。本发明
的实施例二进一步结合词频向量和可以度量上下文之间关系的语义向量,使得归类的准确
率不受题目字数的影响。但是,对于字数较短的题目,本发明的实施例一可以在保证高归类
准确率的同时,比本发明的实施例二具有更高的效率。
本发明的实施例三为:
S1、提取第一题目中的符号;
其中,第一题目为“使函数有意义的的正整数取值范围组成的集合的
元素有?”提取第一题目中的符号“√”、“=”和“-”。
S2、根据预设的转义字符转换所述符号,得到第二题目;
其中,符号“√”的转义字符为“\sqrt”,符号“=”的转义字符为英文状态下输入的
等于号,符号“-”的转义字符为英文状态下输入的减号。经转义字符转换后得到的第二题目
为“使函数有意义的y=\sqrt(5-x)正整数取值范围组成的集合的元素有?”
S3、解析所述第二题目,得到中文字符栈和非中文字符栈;
使用切词算法对所述中文字符栈中的字符进行切词处理,并使用预设的正则表达
式匹配所述非中文字符栈中存储的公式,得到第三题目;
其中,使用jieba切词算法对所述中文字符栈中的字符进行切词处理,并使用预设
的正则表达式匹配所述非中文字符栈中存储的公式得到的所述第三题目为:“使@函数@有
意义@的@y@=@\sqrt@(@5@-@x@)@正整数@取值范围@组成@的@集合@的@元素@有@?”其中,
符号@表示分隔符。
S4、计算所述第三题目中各个词的权重;
根据所述权重将所述第三题目中的词排序,形成第一队列;
从所述第三题目中删除与预设个数元素相应的词,得到第四题目;
其中,使用TF-IDF算法计算所述第三题目中各个词的权重,得到所述第三题目中
各个词的权重依次为:
使(0.05)@函数(0.51)@有意义(0.22)@的(0.02)@y(0.09)@=(0.07)@\sqrt
(0.22)@((0.01)@5(0.01)@-(0.07)@x(0.07)@)(0.01)@正整数(0.49)@取值范围(0.44)@组
成(0.15)@的(0.02)@集合(0.38)@的(0.02)@元素(0.35)@有(0.05)@?(0.01)。
从第三题目中删除词的权重较小的词,如将第三题目中各个词按其权重从大到小
排序,得到第一队列,所述第一队列具体为:“函数@正整数@取值范围@集合@元素@有意义@\
sqrt@组成@y@=@使@x@-@有@的@的@的@(@)@?@5”,从第三题目中删除与第一队列中后13个
元素对应的词,得到第四题目,所述第四题目为:“函数@有意义@\sqrt@正整数@取值范围@
组成@集合@元素”。
S5、根据所述第四题目构建词频向量;所述词频向量中元素的个数为预设训练数
据集中不同词的数量,所述词频向量中元素的值为与所述元素相应的词在所述第二题目中
出现的次数;
其中,先统计第四题目中每个词出现的次数,再根据所有非停止词所构建的非停
止词向量,构建第四题目的词频向量。
例如,非停止词向量长度为1000维,从第四题目中可知每个词都只出现了一次,那
么所构建的词频向量长度等于非停止词向量长度1000维,每维元素为该维所代表的词在第
四题目中出现的次数。因此除了第四题目中的词汇所代表的维度为1之外,其他维度的值都
将为0。
S6、根据预设的维度建立语义特征抽取模型;
根据所述语义特征抽取模型构建与所述第四题目相应的语义向量;
其中,将第四题目中出现的每个词输入到已经训练好的语义模型中(例如
word2vec或者GloVe模型)获得每个词的向量,由于得到的每个词的向量是等长的,因此可
以将每个词的向量进行叠加,即相同维度值相加,得到一个包含整个题目的向量,语义模型
是一种可以保存语义上下文关系的表示方法。
S7、根据基于词频的知识点分类模型,得到与所述词频向量相应的第一知识点集
合;
根据基于语义的知识点分类模型,得到与所述语义向量相应的第二知识点集合;
获取所述第一知识点集合和所述第二知识点集合中相同的知识点;
获取所述相同的知识点根据基于词频的知识点分类模型得到的第一权重值;
获取所述相同的知识点根据基于语义的知识点分类模型得到的第二权重值;
根据所述第一权重值和所述第二权重值,形成与所述相同的知识点相应的权重值
集合;
根据所述权重值集合排序将所述相同的知识点,获取与预设知识点数相应的知识
点,形成第三知识点集合;
根据所述第三知识点集合得到与所述词频向量和所述语义向量相应的分类;
其中,第一知识点集合为:{集合元素的取值范围,函数的表示方法,集合的表示
法,集合中元素的最值根的存在性,集合中元素的最值根的个数判定,函数的值,根式运
算},表示第四题目经过基于词频的知识点分类模型的处理得知第四题目所包含的知识点,
且第四题目与各个知识点的关联度分别为:{0.85,0.04,0.03,0.02,0.03,0.02,0.01}。第
二知识点集合为:{集合元素的取值范围,根式运算,集合的表示法,集合中元素的最值,集
合的相等,函数的定义域及其求法,函数的值},表示第四题目经过基于语义的知识点分类
模型的处理得知第四题目所包含的知识点,且第四题目与各个知识点的关联度分别为:
{0.73,0.08,0.08,0.04,0.04,0.02,0.01}。获取第一知识点集合和第二知识点集合中相同
的知识点,形成第三知识点集合。
形成第三知识点集合有以下两种方式:
方式一,获取第一知识点集合和第二知识点集合中相同的,且关联度较大的知识
点。所述第三知识点集合的知识点同时满足第四题目的词频向量和语义向量的特征,与第
四题目的关联度较大,可获取相关度高的知识点分类。
方式二,获取第一知识点集合和第二知识点集合的并集为第三知识点集合。该方
式使得获得的知识点分类更加全面。
S8、计算所述第一题目与所述分类中各题目的余弦距离;
根据所述余弦距离得到所述第一题目与所述分类中各题目的相似度。
其中,计算余弦距离的公式如下所示:
其中,x表示第一题目的特征向量,y表示所述分类中各题目的特征向量,cosθ的值
越接近1,表示两个题目的相似度越高。
本发明所使用的余弦距离作为计算两个题目的相似度具有如下优势:
(1)将最终的相似度映射到0-1之间,方便对不同相似的题目进行排序和理解;
(2)将两个文本的所有词都考虑在内,信息不丢失;
(3)由于新题目是向量的构成方式,计算速度快,便于分布式计算。
S9、将所述分类中各题目按所述相似度排序,形成第一队列;
从所述第一队列中获取与预设推荐数相应的题目,形成近似题集合;
其中,所述分类中各题目按相似度从高到低排序,并获取第一队列中前预设推荐
数个题目,即与第一题目相似度最高的预设推荐数个题目形成近似题集合。
S10、推送所述近似题集合。
综上所述,本发明提供的一种近似题推送方法,通过提取第一题目中的符号,根据
所述符号进行归类并推送与第一题目相似的近似题集合,实现充分利用题目中的信息,从
而提高推荐题目的相关性。进一步地,由于不同来源的题目的描述方式可能不同,尤其是不
同的公式编辑器对公式中的符号的描述差异较大,因此,通过预设的转义字符转换所述公
式中的符号,可归一化不同描述方式但代表相同意思的符号,从而准确并充分利用题目中
的信息,提高推送题目的相关性及获取近似题的效率。进一步地,由于现有的切词算法会删
除题目中的非中文字符,只对中文字符进行切词处理,因此,本发明先将题目中的中文字符
和非中文字符分别放入不同的栈,对中文字符栈进行切词处理,对非中文字符栈使用正则
表达式匹配相应的公式,尽量将公式中可识别的部分分开,能够在保留题目中信息的同时,
对题目进行切词,有利于提取题目中的特征向量。进一步地,本发明通过停止词计算算法,
计算各个词在题目中的权重,并删除所述第三题目中权重较小的词,能够针对不同学科获
得不同的停止词,从而提高获取到的近似题的相关性。进一步地,本发明不仅包含有词频向
量而特意引入了可以度量上下文之间关系的语义向量,将两种向量结合可有效提高分类正
确率,保证在获取词汇对整个题库的重要程度的基础上,加入词汇之间的上下文关系,使得
后续输入到分类模型中的向量具有更丰富的含义,从而提高获取近似题的相关性。进一步
地,在不同的场景下,用户所需的推荐数可能不同,可根据预设推荐数推荐最相关的题目。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发
明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括
在本发明的专利保护范围内。