论文部分内容阅读
随着计算机网络教育的不断推广和发展,程序设计教学作为计算机基础科学教育的核心课程受到越来越多的关注。近年来,国际大学生程序设计竞赛(ACM International Collegiate Programming Contest,简称ACM/ICPC)的普及激发了学生学习程序设计的极大兴趣,很多的高校学生投身于于该项比赛中。很多有经验的ACM参赛者或爱好者会将自己解决ACM具体题目的报告分享到网络中,形成了网络中大量存在的网络程序设计资源。但是令人遗憾的是,这些海量题解资源目前没有得到很好的组织并被广大程序设计学习爱好者来使用。本文的研究结合了国家自然科学基金项目(项目名称:网络知识互联结构自主发育模型研究,项目编号:60973121),基金项目提出了网络资源存在的“知识孤岛”现象,也即知识资源在思维中(由知识概念上内在联系联结而构成)的知识概念结构和其在网络中(由超链接联结而构成)的物理连接结构这两者之间的不一致性。本文的研究更加具体化,研究对象是web网中程序设计的资源。为了将web网中的程序设计资源联系起来,要解决两个问题,首先是获取网络程序设计资源中包含的算法知识名称,然后对网络程序资源中所含的算法知识点进行识别。识别网络程序资源中所含的算法知识名称之后,就可以将网络程序资源按知识结构联系起来。为了从网络程序资源中获取算法知识名称,本文提出了一种基于自然语言处理的方法。该方法通过发现含有算法知识名称语句的字符串模式,从程序资源中提取可能含算法知识名称的字符串,从中找出最有可能出现在算法知识名称中的分词,然后根据这些分词来获取算法知识名称。与原有人工整理出的算法知识名称集合相比,该方法新增了 11.2%的算法知识点和49.5%的算法知识名称。我们获取的算法知识名称,不能用于识别算法知识点。因为一个算法知识点可能有多个算法知识名称,因此要将代表相同知识点的算法知识名称归为一类。课题组以前的研究中整理了一个程序设计专家库文件,该专家库文件中包含算法知识点以及代表算法知识点的一个或多个名称,获取的算法知识名称可以对专家库中的算法知识点进行扩充。本文提出了一种用知识名称来扩充已有知识结构的方法。为了识别网络程序资源中所含的算法知识点,本文提出了构建本体来识别网络程序资源中包含的算法知识点的方法。该方法首先构建解题报告包含算法知识名称的本体模型,再根据具体的解题报告包含算法知识名称时的语义构建本体实例,然后推理解题报告本体实例包含的算法知识点。该方法根据算法知识点名称出现时的语义进行推理,提高了识别的准确率。