APP下载

智学分享资源检测分类工具设计与实现

2018-09-26曲林尹子轩刘建宾

软件导刊 2018年7期

曲林 尹子轩 刘建宾

摘要:为了更加高效地对智学分享平台中学生分享数据的分类情况进行判断,运用Java开发一个资源检测分类工具,该工具可通过已知的训练集样本获取当前学科中最具代表性的关键字,并根据分享数据中的评价信息以及链接网址中的title信息计算出其与当前所在学科的相关度,进而判断出学生在该网站中分享数据的所在位置是否准确。该工具可替代教师传统的手动判定工作,实现批量处理数据的目的,从而在一定程度上减轻了教师工作压力,具有较好的应用效果。

关键词:分类算法;模糊匹配;中文分词

DOI:10.11907/rjdk.173061

中图分类号:TP319

文献标识码:A文章编号:1672-7800(2018)007-0158-04

Abstract:Inordertomakemoreefficientclassificationjudgmentofstudents'datasharingonthelearning-and-sharingplatform,wedevelopedaresourcedetectionclassificationtoolbyJava.Thetoolcanobtainthemostrepresentativekeywordsinthesubjectsbasedontheexisitedsetsoftrainingsamples,andcalculatethecorrelationwiththecurrentsubjectbysharingtheevaluationofinformationandthetitleinformationoflinkstofurtherjudgeifthelocationofstudents'datasharingisaccurate.Thetoolcansubstitutetraditionalmanualjudgementworkofteachersandachievethepurposeofbatchprocessingofdata,whichtosomeextentalleviatestheteachers'workload.

KeyWords:classificationalgorithm;fuzzymatching;Chinesewordsegmentation

0引言

隨着网络技术的发展,数据量与日俱增,如何有效地对其进行分类成为当今研究的重点之一。数据分类作为数据挖掘的一个分支,是将已知数据分成几大类,然后将新数据归为其中一类的方法。

本文将获取到的有关数据进行分类整合,应用到智学分享平台,供学生们查询、使用。首先利用标题和内容特征进行相关性分析,然后提取关键字,作为分类学科标准,例如:软件工程、网络工程、计算机科学与技术等学科,再将学科进行细化,分为课后练习题、期末考试题、课堂练习等。

1相关概念

模糊匹配(又称为模式匹配、模糊检索):数据结构中字符串的一种基本运算,给定一个字串,要求在某个字符串中找出与该字串相同的所有子串[1]。

词频(TF):给定词语在该文章中出现的次数。

逆向文件频率(IDF):该词语在全部文章中的普遍程度,可由全部文章除以有该词语的文章,再将得到的商取对数得到[2]。

中文分词(ChineseWordSegmentation):将一个汉字序列切分成一个个单独的词。分词即将连续的字序列按照一定规范重新组合成词序列的过程[3]。

自然语言处理(NLP):是计算机科学与人工智能领域中的一个重要方向,研究实现人与计算机之间用自然语言进行有效通信的各种理论和方法。

2程序设计

2.1功能分析

本程序以预先运用爬虫技术爬取的智学分享网站数据为基础,对数据中的分享链接标题、内容评论以及路径等信息进行分析,以实现对分享内容分类的功能。主要步骤如下:首先对已有数据按照教师和学生进行划分,分别作为训练集样本和待分类数据;然后运用相关算法将训练集中的高频词语提取出来,通过人工调整后,将这些词作为该门课程的关键字,完成分类准备工作;最后将待分类的数据与关键字逐一匹配,根据匹配程度判断该条数据是否符合当前分享的位置,并对其细分类别,完成数据分类工作。

2.2模块设计

该程序主要分为3个模块:ReadFiles模块负责对训练集样本数据进行读取、分词,并计算出TF值和IDF值;Ngram模块负责对待分类数据的读取、分词以及相关性分析;Main模块负责相关文件的读取以及调用各个模块,最终输出结果如图1所示。

2.3算法设计

2.3.1中文分词算法

中文分词技术属于自然语言处理技术范畴,人们可以通过自己的知识判断哪些是词,但计算机必须通过人为设定一系列算法进行判断,其过程即为中文分词算法。

中文分词算法可以分为3大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法,本文采用基于字符串匹配的分词方法[4]。基于字符串的分词方法又称为机械分词方法,它是将需要分析的字符串与一个中文库进行匹配,如果在中文库中能够成功匹配某个字符串,则称为识别出一个词。

本文使用的中文库是名为MMAnalyzer的一款开源分词器,其支持英文、数字、中文(简体)混合分词,以及常用的地区名和人名匹配。MMAnalyzer分词算法[5]步骤如下:读取一个字,然后联想,如果当前可以构成词,便返回一个token;如果当前不能构成词,则返回上一个可构成词语的字,然后从返回结果的下一个字重新开始联想。

该算法具有以下优势:首先,传统的最大匹配算法需要确定一个切分最大长度。如果该长度过大,将影响分词效率,并且超出最大长度的词将无法切分。但本算法不需要最大长度,根据词库中的词进行匹配,可以切分为任意大小,而且对于未登录的非汉字具有一定切分能力。本文词库具有可扩展性,比如可以将人们需要但词库中没有的关键词加入词库。最重要的是,由于本文选用的为论文、学术著作等较为科学严谨的文章,用语精炼,采用该算法能够快速有效地区分出关键词。

2.3.2TF-IDF算法

当给定的词语在文章中出现次数越多,即TF越大,而在全部文章中出现的概率越小,则该词语具有很强的区分能力。例如:“软件”这个词在一些计算机类的文章中出现次数很多,但在体育及文学类文章中很少出现,因而该词能很好地区分计算机类与其它类文章。

词语在某篇文章中的重要性即词频,用公式(1)表示。

而词语在所有文章中的普遍程度即逆文件频率,用公式(2)表示。

|F|为包含所需词语的文件数目,如果该词语不在语料库中,则会导致被除数为零,因此一般情况下使用公式(4)。

文件内的某些词语在该文件中频繁出现,但可能该词语在整个文件集合中仅偶尔出现,从而产生出高权重的TF-IDF[6]。因此,TF-IDF倾向于过滤掉常见词语,保留重要词语。

由于本文采用的样本集文章较为科学严谨,使用TF-IDF算法能够充分考虑每个词项的统计信息,突出关键词在每篇文章中的关键地位,使结果更加清晰明了。

2.3.3N-gram算法

模糊匹配在生活中最常见的应用即输入法的输入提示功能,例如:当输入“问”再输入一个“t”时,输入法会自动优先提示“题”字;或者使用数据库查询时,经常使用usernamelike“%name%”形式,查询出的username字段中含有name的数据,此即为模糊匹配[7]。

N-Gram模糊匹配算法是利用两个字符串之间的“差异”(Smith-Waterman算法和Needleman-Wunsch算法中的“编辑距离”)进行匹配[8]。假设两个字符串a、b,它们的N-Gram即表示按长度N切分原字符串得到长度为N的子串,通过比较子串中相同数量占总数量的比重表示两字符串之间的相似程度[9]。但该方法并不利于计算机理解,于是有学者提出以非重复的N-Gram分词为基础定义N-Gram距离概念,可用以下公式表述[10]:

一篇文章中有许多句子,而一个句子由各种词语组成,需要将词语从句子中区分出来,所以要用到基于N-Gram算法的模糊匹配技术。该算法较为全面,每条数据的出现都有一定概率,所有词的出现都会影响其后的词,但对之前的词没有影响,因而对于关键词有更好的区分作用。

3代码实现过程

3.1训练样本数据处理

首先读取样本数据,并使用MMAnalyzer的中文分词功能对样本数据进行分词,分得的词为原始数据,包括各种重复的双字词、三字词、四字词等,然后使用TF-IDF算法计算其中词语的TF及IDF值。但由于一篇文章中至少有上百个词,如果人工逐词寻找每个单词的TF或IDF值,无疑非常浪费时间与精力,因此需要一个方法对分词得到的词进行排序、过滤。本文将词语与TF或IDF值绑定存入HashMap中,取出hashMap中的TF值进行比较。提取并分词关键代码如下:

//定义一个空数组

String[]cutWordResult;

//使用MMAnalyzer中的方法分割字词

MMAnalyzeranalyzer=newMMAnalyzer();

StringtempCutWordResult=analyzer.segment(text,"");

cutWordResult=tempCutWordResult.split("");

处理TF以及IDF值关键代码如下:

privatestaticHashMap>allTheTf=newHashMap>();

外层HashMap的String存储文件名字,内层HashMap的String存储得到的分词词语,Float存储该词语对应的TF值,从而通过文件名-词语快速定位到TF值,程序流程如图1所示。

TF值处理以及IDF值过滤部分流程如图2所示。

3.2分析算法实现

该工具利用hashMap获取学生分享的数据标题及评论,并且使用基于N-Gram的模糊匹配算法,将其分别分为单个字、双字词、三字词以及四字词放入hashMap中,并与过滤算法得到的list集合匹配。如果匹配成功,则相关性加1。本文通过设定某个值大小,判断该篇文章与学科相关的准确度,若TF-IDF比值越高,则判断该分享数据与学科越相关。伪代码如下:

获取分享的标题以及评论

利用split将其进行分词并存入hashMap中

for(此hashMap的大小){

for(list词库大小){

if(匹配成功){

计数器加1

}

}

}

4实验结果

该工具的运行环境为Win10,采用Java作为编程语言,eclipse作为编写工具。

4.1学科关键字提取

以一篇软件工程文章、一篇体育新闻、一篇財经新闻为例进行学科关键词提取,运行结果如表1-表3所示。

可看出在第一篇文章中,“软件工程”的TF值遥遥领先,可结合“学生”、“计算机”、“信息资源”等关键词确定为软件工程相关文章;第二篇文章倾向性很强,可通过“阿根廷”、“世界杯”、“进球”等关键词确定为体育类文章;第三篇文章可通过“股”、“跌幅”、“跌停”等关键词确定为财经类文章。

检测的IDF值如表4所示。

由表4可以看出,“软件工程”关键词对于软件工程学科的区分有着明显效果,而关键词“阿根廷”虽然TF值较高,但是IDF值较低,说明该词尚不足以作为区分体育新闻学科的标准,当然由于本文实验条件所限,选取文章数量不是很多,可能存在误差。

4.2分享数据检验

本文对3篇文章中的30条数据进行验证,共检测出24条数据符合当前学科,6条数据不符合,准确率为80%,其中“向上”、“中”、“结合”、“超”等数据明显不符合当前学科。

由于影响准确率的因素主要为训练集样本与学科相关度,以及判定数据符合与否的临界值,因此为使结果更加准确,需严格筛选训练集样本,并多次调整临界值,以使最终判定结果达到最理想效果。

5结语

本文运用中文分词、模糊匹配等相关算法实现对智学分享网站中学生分享数据的分类工作,从而一定程度上减轻了教师手动检测的工作量。该工具已在智学分享网站部分课程中得到初步应用,取得了良好效果。

参考文献:

[1]王建.基于模式匹配的网路入侵检测系统的研究与设计[D].武汉:武汉理工大学,2010.

[2]李萍.基于改进词语权重的文本分类方法研究[D].长春:东北师范大学,2010.

[3]终小南.中文分词算法总结[EB/OL].http://www.360doc.com/content/13/0909/16/13491968_313302194.shtml.

[4]路卫杰.全文检索lucene中文分词的一些总结[EB/OL].http://blog.csdn.net/buptdavid.

[5]蔡小燕,寇应展,沈巍.Nutch_0_9中JE中文分词的实现[D].北京:北京航天大学,2014.

[6]特依依.TFIDF算法java实现(TF/IDF选取高频词)[EB/OL].http://blog.csdn.net/earth3008/article/details/9200307.

[7]阮一峰.TF-IDF与余弦相似性的应用[EB/OL].http://www.ruanyifeng.com/blog/2013/03/cosine_similarity.html.

[8]王晔,黄上腾.基于n-gram相邻字的中文文本特征提取算法[C].Ncircs全国信息检索与内容安全学术会议,2004.

[9]葛昊.基于n-gram语法检查系统的改进和实现[D].合肥:中國科学技术大学,2014.

[10]白马负金羁.自然语言处理中的N-Gram模型详解[EB/OL].http://blog.csdn.net/baimafujinji/article/details/51281816.

(责任编辑:黄健)