本发明涉及教育技术领域,尤其涉及一种基于短语结构树的相似题目识别方法和系统。
背景技术:
题目数据是教育资源中重要的组成部分,在学习和教学过程中,学生日常使用的练习题目及用于测试的考试题目均属于题目数据。随着计算机和互联网技术的发展,中小学教育中的题目数据基本实现了电子化存储。题目数据在学习过程中不仅可以帮助学生加深对知识的学习与理解,还可以帮助老师及时掌握学生对知识的掌握情况,了解学生的学习进度,帮助学生查缺补漏,提高学习效率。
对于中小学多学科题库的建设,一方面便于对中小学多学科题目数据的更新与管理,另一方面可以降低老师教学的工作强度。随着题库中题目数据的不断更新与增加,题库中会出现两个或多个题目相同或相似的情况。相同或相似题目的出现一方面使得题库变得冗余庞大,需要消耗更多的存储计算资源;另一方面会影响题库数据的检索使用效率。
因此对题库中的题目进行筛查并去除相同或相似题目是十分必要的。在相似题目识别任务中,评估计算两个题目的相似度是其中最重要的一环。当前的题目相似度计算方式主要是将待比较的题目看作两个连续的字符串来处理。一种方式是通过字符串的距离度量来评估题目的相似度,如将字符表示为向量后,计算两个向量之间的余弦夹角或欧式距离等;另一种方式是对文本降维,如给字符串生成一个simhash值,即指纹(fingureprint),通过simhash的值来评估两个字符串的相似情况。
值得注意的是,以上的方法均把题目作为一个字符串整体来处理,在实际中,一道完整的题目,往往包含不同的表达形式,如有的为普通字符表示,有的为公式表示。如果将题目整体按照字符串简单处理,则无法准确评估题目的相似情况。而且有的题目尽管字符相同,但是不同的语句结构导致表示的题目信息有所差别,实际为不同的题目。比如“-3的倒数的相反数”和“-3的相反数的倒数”。因此需要一种能够更精确地判断题目是否相同的方法。短语结构树是一种可以很好的对语句中的关键位置及关键信息进行表示的结构。
技术实现要素:
针对以上问题,本发明提出一种基于短语结构树的相似题目识别方法和系统,将题目数据进行文本预处理并解析题目涉及到的知识点信息及公式信息,然后针对题目信息构建短语结构树,通过对构建的短语结构树先进行剪枝处理,然后进行层次遍历,比较树的结构信息及叶节点内容信息进而实现两个题目之间相似度的比较。
根据本发明的一个方面,提出一种基于短语结构树的相似题目识别方法,包括以下步骤:
s1.针对输入题目进行文本预处理;
s2.针对题目信息构建短语结构树;
s3.对短语结构树做剪枝操作,遍历短语结构树,根据短语结构树的树结构及叶子节点内容,判定题目的相似性。
2、根据权利要求1所述的方法,其特征在于,在所述步骤s1中,对输入题目进行文本预处理,包括:
s11.统一编码处理、分词、去除停用词、去除无用及非法字符,从而获得词序列;
s12.根据题目中的关键字解析识别题目涉及的知识点信息;
s13.根据正则表达式解析题目中的公式表达式信息。
3、根据权利要求2所述的方法,其特征在于,所述步骤s2中,针对题目信息构建短语结构树的步骤包括:
s21.对词序列进行词法分析;
s22.对词序列进行语法分析;
s23.根据词法分析和语法分析的结果构建短语结构树。
4、根据权利要求1所述的方法,其特征在于,所述步骤s3中,剪枝的步骤包括:
s31.对插入语进行剪枝处理;
s32.对无实际意义的词进行剪枝处理。
5、根据权利要求4所述的方法,其特征在于,所述步骤s3中,判定题目的相似性的步骤包括:
s33.比较题目短语结构树的结构,若短语结构树的树结构信息不相同,则判定题目不相同,否则进入步骤s34;
s34.比较短语结构树的内容信息是否相同,若不相同则判定题目不相同,否则判定题目相同。
6、根据权利要求5所述的方法,其特征在于,所述步骤s34中,比较短语结构树的内容信息的步骤包括:
比较题目涉及的知识点信息是否相同,若不相同则判定题目不相同;
比较短语结构树包含的公式表达式是否相同,若不相同则判定题目不相同;
为词性设置不同的权重值,计算两个短语的相似度,如果相似度大于设定的阈值,则判定题目相同,否则判定题目不相同。
7、根据权利要求6所述的方法,其特征在于,所述相似度的计算公式为:
其中wi为短语结构树叶子节点中第i个分词对应词性的权重,ci为两个短语结构树第i个分词的比较结果,若第i个分词相同ci=1,否则ci=0。
8、一种基于短语结构树的相似题目识别系统,其特征在于,所述系统包括题目文本预处理模块、构建短语结构树模块及题目判定模块,其中:
题目文本预处理模块,用于读取待比较题目信息及题库题目信息,对题目文本进行相应的文本预处理,解析题目中的知识点信息及公式表达式信息,最后将题目信息传送给构建短语结构树模块;
构建短语结构树模块,根据题目文本预处理模块获取的题目信息,对题目进行词法分析及语法分析,结合题目中的知识点信息与公式表达式信息构建短语结构树,将其传送给题目判定模块;
题目判定模块,根据待比较题目的短语结构树信息,对短语结构树做剪枝操作,然后层次遍历短语结构树,根据短语结构树的树结构信息及题目内容信息判定题目的相似性并对题目进行相应的处理;
9、根据权利要求8所述的系统,其特征在于,在所述题目文本预处理模块中,对题目文本进行预处理的方法包括;
统一编码处理、分词、去除停用词、去除无用及非法字符,获得词序列;
根据题目中的关键字解析识别题目中涉及的知识点信息;
根据正则表达式解析题目中的公式表达式信息。
10、根据权利要求8所述的系统,其特征在于,所述题目判定模块中,根据短语结构树的树结构信息及题目内容信息判定题目的相似性的方法包括:
比较题目涉及的知识点信息是否相同,若不相同则判定题目不相同;
比较短语结构树包含的公式表达式是否相同,若不相同则判定题目不相同;
为词性设置不同的权重值,计算短语间的相似度,如果相似度大于设定的阈值,则判定题目相同,否则判定题目不相同。
本发明的有益效果为:
(1)针对相似题目比较过程中的题目表征,利用短语结构树对题目进行结构化解析,从而实现对题目描述细颗粒度的结构化表征。
(2)针对相似题目比较,本发明在短语结构树表征的基础上,通过对短语结构树进行剪枝,提炼短语结构树的主要部分,进行短语结构树的比较,在题目结构层面对题目进行比较。
(3)针对相似题目的比较,本发明在短语结构树比较的基础上,通过比较题目包含的知识点信息、公式信息以及具体文本信息的细颗粒度比较,提高了相似性判断的准确率。
附图说明
图1为根据本发明一个实施例的一种基于短语结构树的相似题目识别方法的流程示意图;
图2为根据本发明一个实施例的题目文本预处理方法的流程示意图;
图3为根据本发明一个实施例的题目构建短语结构树的流程示意图;
图4为一个短语结构树的示意图;
图5为一个短语结构树的示意图;
图6为一个短语结构树的示意图;
图7为根据本发明一个实施例的题目相似性判定的流程示意图;
图8为一个短语结构树的示意图;
图9为一个短语结构树的示意图;
图10为一个短语结构树的示意图;
图11为一个短语结构树的示意图;
图12为根据本发明一个实施例的一种基于短语结构树的相似题目识别系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清查、完整的描述,以下所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
短语结构树是指将句子的短语结构分析的结果以树形结构输出,即对每一个输入的句子通过构造短语树来完成对它的分析,短语结构树不仅可以表示出句子的语法关系,也可以表示出句子的层次。从短语结构树中可以快速分析句子间的短语结构,比如节点标记为np表示该部分为一个名词短语。在短语结构树中,当两个短语最近的父节点属于同一个节点时,称这两个短语为同层次短语,除此之外,短语结构树还可以分析出句子中的并列结构,从句结构等。
下面结合附图及具体实施方式详细介绍本发明。根据本发明的一个方面,提出一种基于短语结构树的相似题目识别方法,如图1所示,包括以下步骤:
s1.针对输入题目进行文本预处理;
s2.基于题目信息构建短语结构树;
s3.对短语结构树做剪枝操作,遍历短语结构树,根据短语结构树的树结构及叶子节点内容的相似度,判定题目的相似情况。
在步骤s1中,由于存储方式及应用环境的不同,题目的表现形式往往也不一样。如为了题目不同的展示需求,题目的编码方式有gb2312、gbk、utf-8等不同情况。因此需要对待比较题目进行统一文本预处理,便于后续对题目进行相似度比较,提高相似度比较的准确度。
如图2所示,文本预处理操作主要包括以下操作:
(1)根据题目中的关键字解析题目中涉及的知识点信息。
(2)通过正则表达式识别题目信息中的公式表达式信息。
(3)统一编码处理:统一题目编码格式为utf-8;
(4)分词:
(5)去除停用词:
(6)去除无用及非法符号:
这几种操作并无时间先后顺序,本领域技术人员可以根据需要设定其具体执行步骤。
知识点是指对某一个知识的泛称,特指教科书上或考试的知识。如“已知直角三角形的直角边长,计算其斜角边长”的问题即属于勾股定理的知识点。根据题目信息中的关键词在预定义的知识点库中进行匹配,获取题目所涉及的知识点信息。
知识点库包括中小学出现的各个知识点信息及每个知识点涉及的相关描述的关键字(关键词用于描述知识点下的具体知识,例如知识点“三解函数”就包括“任意角”、“弧度制”、“正弦”、“余弦”、“正切”等关键词),知识点库结构和示例信息如表1所示。
表1知识点库结构和示例
在一个实施例中,输入题目如下:
题目:方程x2+6*x+9=0的根的相反数为()?
通过文本预处理将英文括号统一转换为中文括号;去除空格;去除空括号。
经过解析该题目信息,获取到题目的公式表达式为:x2+6*x+9=0
经过对题目信息进行匹配,获得题目中的关键词“方程”在知识点库中所属的知识点信息为“函数与方程”。
题目信息为经过上述处理后生成的词序列、知识点信息和公式信息。
在步骤s2中,如图3所示,针对题目信息构建短语结构树,主要包括以下步骤。
构建短语结构树需要在分词的基础上,对题目信息中词序列进行词法分析、语法分析,然后构建短语结构树,用每一个树节点表示词之间的关系,叶子节点的内容为题目信息中的分词,进而将题目信息转换为短语结构树表示。
在计算机科学和技术中,短语结构树是一种用来表达句子的句法结构的数据结构。我们将这种思想应用于对题目信息的处理上,将题目信息构建为一棵树结构表示,其中叶子节点与输入句子中的词语相关联,其他中间节点内容为短语成分的标记。如np表示该短语为名词短语,vp表示该短语为动词短语。短语结构树的构建步骤主要经过词法分析与语法分析。
词法分析,是对读入字符串进行词法规则匹配的过程,通过从左到右逐个字符地扫描要分析的文本,基于词语的12种类别,对分词结果中的词性进行分析归类,确定词法规则。其中词性类别分别为名词、动词、形容词、数词、量词、代词、副词、介词、连词、助词、叹词、拟声词。
语法分析,是将分词后的字符流作为输入,识别由词法分析给出的分词序列是否是符合语法规则的语句。现代汉语语法有多种句式结构,比如主谓宾结构、主谓结构、动宾结构等,语法分析主要分析题目信息中句式结构信息。
通过短语结构树,我们可以清晰的理清句子间各部分的关系。其中短语结构树中节点表示的关系与其含义如表2所示:
表2短语结构树中节点表示及含义
例如,语句“亲爱的同学们坐在飞驰的高铁上”,构建的短语结构树结构如图4所示。将其按照树结构表示如下:
[s[vp[cp[adjp亲爱的][np同学们]][vv坐在]][np[cp[vp飞驰的][nn高铁]][lc上]]]
再如,题目信息:“方程x2+6*x+9=0的根的相反数为”,构建的短语结构树结构如图5所示,短语结构树存储表示:[s[np[nn方程][nrx^2+6*x+9=0][dnp的]][np[nn根][dnp的][nn相反数]][vv为]]
其中公式信息为:x^2+6*x+9=0
涉及的知识点信息为:函数与方程。
在另一个实例中,题目信息:“-3的倒数的相反数为”,构建的短语结构树结构如图6所示。短语结构树存储表示:[s[np[nr-3][dnp的]][np[nn倒数][dnp的][nn相反数]][vv为]]
其中公式信息为:-3
涉及的知识点信息为:函数与方程。
在步骤s3中,对短语结构树做剪枝操作,遍历短语结构树,根据短语结构树的树结构信息及题目内容信息,进而判定题目的相似情况。
如图7所示,基于短语结构树对题目的相似情况进行判定主要包括两部分操作,首先是对短语结构树的剪枝处理以及遍历短语结构树并比较其短语结构树的树结构信息,然后是比较短语结构树的内容信息,包括对题目涉及的知识点信息与公式信息及题目具体内容信息的比较。具体步骤如下:
(1)对短语结构树进行剪枝处理:
对短语结构树做剪枝操作,包括对插入语的剪枝、对于无实际意义的词如语气词、拟声词、断句符节点的剪枝。其中插入语在句子中属于独立语,将其去掉可以使得句子得到简化。无实际意义的词在句子中不包含或包含少量语义信息,去掉后不影响句子表达的意思。
在短语结构树中标记为prn的部分为插入语,我们将插入语部分剪枝,将其子节点全部删除然后将剩下的部分合并在一起。在短语结构树中标记为y的部分为语气词,标记为o的部分拟声词,标记为pu的部分为断句符节点,我们将以上标记部分剪枝,将其子节点全部删除然后将剩余部分合并在一起。剪枝前短语结构树如图8所示,短语结构树存储表示为:
[s[np[nn小明][vp[vv有][qp[cd三][m只]][nn兔子][pu,]]][vp[d又][vv得到][qp[cd两][m只]][pu,]][vp[p共有][qp[cd几][m只]][pu?]]]
剪枝后短语结构树如图9所示,短语结构树存储表示为:
[s[np[nn小明][vp[vv有][qp[cd三][m只]][nn兔子]]][vp[vv得到][qp[cd两][m只]]][vp[p共有][qp[cd几][m只]]]]
(2)对短语结构树进行遍历:
对短语结构树的遍历采用树的层次遍历方法,具体算法描述如下:
初始化一个队列q,将短语结构树的根节点s加入队列;
while队列q非空:
将队列q的头节点元素取出;
访问该节点值;
若该节点的子节点非空且子节点非叶子节点则将其子节点加入队列。
(3)比较短语结构树的树结构信息:
比较题目短语结构树的树结构信息,若短语结构树的树结构信息不相同,则判定题目不相同,否则需要继续比较短语结构树的内容信息;
具体比较过程如下:
在短语结构树的层次遍历过程中,对待比较的两个短语结构树t1和t2先初始化两个队列p和q,先将两个短语结构树的根节点s1和s2分别加入队列p和q,然后将两个队列的头节点取出,即将s1和s2进行比较,若s1和s2的内容及s1和s2的子树节点内容c1和c2均相同,则将子树节点c1和c2加入队列p和q。否则直接判定两个短语结构树的结构不同。
一轮比较结束后判定两个队列p和q是否为空,若两个队列均不为空,从队列中继续取出头节点,继续进行上面的比较。若两个队列一个为空,一个不为空,则判定两个短语结构树的结构不同。若两个队列均为空,则短语结构树的结构比较结束。
(4)比较短语结构树的题目内容信息:
比较短语结构树的题目内容信息,方法如下:
先比较两个题目涉及的知识点信息是否相同,若不相同则判定题目不相同;若知识点信息相同则继续比较短语结构树包含的公式表达式是否相同,若不相同则判定题目不相同;若公式表达式信息相同则比较题目具体内容信息。对题目内容的比较中,为词性类别设置不同的权重值,然后计算两个短语的相似度,如果相似度大于设定的阈值,则判定题目相同,否则判定题目不相同。相似度score的计算公式为:
其中wi为短语结构树叶子节点中第i个分词对应词性的权重,ci为两个短语结构树第i个分词的比较结果,若第i个分词相同ci=1,否则ci=0。
如题目“四大发明对世界做出突出的贡献”与题目“姚明给体育界做出伟大的贡献”的比较中,名词部分为{四大发明、姚明、世界、体育界、贡献},动词部分{对、给、做出},形容词为{突出的,伟大的},具体表示如下:
词性:名词动词名词动词形容词名词
在一个实施例中,将名词、动词、形容词的权重分为为0.2、0.3、0.1,阈值设为0.8,则
词性:名词动词名词动词形容词名词
所以score=(0.2*0+0.3*0+0.2*0+0.3*1+0.1*0+0.2*1)/(0.2*1+0.3*1+0.2*1+0.3*1+0.1*1+0.2*1)=0.4167,小于设定的阈值0.8,故判定两个短语内容不相同,即题目不相同。
在另一个实例中,待比较的两个题目具体如下:
题目1:方程x2+6*x+9=0的根的相反数为
题目2:-3的倒数的相反数为
构建的短语结构树表示为:
题目1:[s[np[nn方程][nrx^2+6*x+9=0][dnp的]][np[nn根][dnp的][nn相反数]][vv为]]
题目2:[s[np[nr-3][dnp的]][np[nn倒数][dnp的][nn相反数]][vv为]]
先对短语结构树做剪枝处理,没有找到可以剪枝的部分。然后比较短语结构树的结构,采用层次遍历的方式,先初始化两个队列p和q,将两个树的根节点s1和s2分别加入队列p和q中,此时队列p和q非空,将头节点s1和s2取出,两个节点内容均为“s”,且均有三个子树节点“np”,“np”,“vv”,且子树节点内容相同。故分别将子树节点“np”,“np”,“vv”加入队列p和q。此时队列p和q非空,取出两个队列的头节点“np”,发现题目1的子树有三个节点,分别是“nn”,“nr”,“dnp”,而题目2的子树仅有两个节点“nr”,“dnp”,因此判定两个短语结构树的结构不同,进而判定两个题目不相似。
在另一个实例中,待比较的两个题目具体如下:
题目3:西游记的作者赞扬了反抗精神
题目4:西游记的作者讲述了什么故事
树形结构如图10、11所示。构建的短语结构树结构如下:
题目3:[s[np[np[nn西游记][dnp的]][nn作者]][vp[vv赞扬][as了]][np[nn反抗][nn精神]]]
题目4:[s[np[np[nn西游记][dnp的]][nn作者]][vp[vv讲述][as了]][np[pn什么][nn故事]]]
先对短语结构树做剪枝处理,没有找到可以剪枝的部分。然后比较短语结构树的结构,采用层次遍历的方式,先初始化两个队列p和q,将两个树的根节点s1和s2分别加入队列p和q中,此时队列p和q非空,将头节点s1和s2取出,两个节点内容均为“s”,且均有三个子树节点“np”,“vp”,“np”,且子树节点内容相同。故分别将子树节点“np”,“vp”,“np”加入队列。此时队列p和q非空,取出两个队列的头节点“np”,发现题目3的子树和题目4的子树节点相同,将其子树节点“nn”,“dnp”加入队列。继续取出队列p和q中的头节点“vp”,比较其子节点,发现子节点均为“vv”,“as”。继续取出队列p和q子节点“np”,比较其子节点,发现题目3的子节点均为“nn”,而题目4的子节点为“pn”,“nn”,并不相同,因此判定两个短语结构树的结构不同,进而判定两个题目不相似。
根据本发明的另一方面,提出一种基于短语结构树的相似题目识别系统,包括:题目文本预处理模块、构建短语结构树模块及题目判定模块,如图12所示。
题目文本预处理模块,用于读取待比较题目信息及题库题目信息,对题目文本进行相应的文本预处理,解析题目中的知识点信息及公式表达式信息和题目信息,并将其传送给构建短语结构树模块;具体的方法见上文。
构建短语结构树模块,根据题目文本预处理模块获取的题目信息,对题目进行词法分析及语法分析,结合题目中的知识点信息与公式表达式信息构建短语结构树,将其传送给题目判定模块;具体的方法见上文。
题目判定模块,根据待比较题目的短语结构树信息,先对短语结构树做剪枝操作,然后层次遍历短语结构树,根据短语结构树的树结构信息及题目内容信息判定题目的相似情况,并对题目进行相应的处理。
在题目判定模块中,首先对短语结构树进行剪枝处理以及遍历短语结构树并比较其短语结构树的树结构信息,然后是比较短语结构树的内容信息,包括对题目涉及的知识点信息与公式信息及题目具体内容信息的比较。具体步骤如下:
(1)对短语结构树进行剪枝处理:
对短语结构树做剪枝操作,包括对插入语的剪枝、对于无实际意义的词如语气词、拟声词、断句符节点的剪枝。其中插入语在句子中属于独立语,将其去掉可以使得句子得到简化。无实际意义的词在句子中不包含或包含少量语义信息,去掉后不影响句子表达的意思。
在短语结构树中标记为prn的部分为插入语,我们将插入语部分剪枝,将其子节点全部删除然后将剩下的部分合并在一起。在短语结构树中标记为y的部分为语气词,标记为o的部分拟声词,标记为pu的部分为断句符节点,我们将以上标记部分剪枝,将其子节点全部删除然后将剩余部分合并在一起。
(2)对短语结构树进行遍历:
对短语结构树的遍历采用树的层次遍历方法,具体算法描述如下:
初始化一个队列q,将短语结构树的根节点s加入队列;
while队列q非空:
将队列q的头节点元素取出;
访问该节点值;
若该节点的子节点非空且子节点非叶子节点则将其子节点加入队列。
(3)比较短语结构树的树结构信息:
比较题目短语结构树的树结构信息,若短语结构树的树结构信息不相同,则判定题目不相同,否则需要继续比较短语结构树的内容信息;
具体比较过程如下:
在短语结构树的层次遍历过程中,对待比较的两个短语结构树t1和t2先初始化两个队列p和q,先将两个短语结构树的根节点s1和s2分别加入队列p和q,然后将两个队列的头节点取出,即将s1和s2进行比较,若s1和s2的内容及s1和s2的子树节点内容c1和c2均相同,则将子树节点c1和c2加入队列p和q。否则直接判定两个短语结构树的结构不同。
一轮比较结束后判定两个队列p和q是否为空,若两个队列均不为空,从队列中继续取出头节点,继续进行上面的比较。若两个队列一个为空,一个不为空,则判定两个短语结构树的结构不同。若两个队列均为空,则短语结构树的结构比较结束。
(4)比较短语结构树的题目内容信息:
比较短语结构树的题目内容信息,方法如下:
先比较两个题目涉及的知识点信息是否相同,若不相同则判定题目不相同;若知识点信息相同则继续比较短语结构树包含的公式表达式是否相同,若不相同则判定题目不相同;若公式表达式信息相同则比较题目具体内容信息。对题目内容的比较中,为词性类别设置不同的权重值,然后计算两个短语的相似度,如果相似度大于设定的阈值,则判定题目相同,否则判定题目不相同。相似度score的计算公式为:
其中wi为短语结构树叶子节点中第i个分词对应词性的权重,ci为两个短语结构树第i个分词的比较结果,若第i个分词相同ci=1,否则ci=0。
通过上面的方法或系统,可以对题库中的题目逐个进行比较,从而删除相同或相似度高的题目,减少题库的冗余,提高题库的质量。
本发明未详细阐述的技术内容属于本领域技术人员的公知技术。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。