曲林 尹子軒 劉建賓
摘要:為了更加高效地對智學(xué)分享平臺中學(xué)生分享數(shù)據(jù)的分類情況進行判斷,運用Java開發(fā)一個資源檢測分類工具,該工具可通過已知的訓(xùn)練集樣本獲取當(dāng)前學(xué)科中最具代表性的關(guān)鍵字,并根據(jù)分享數(shù)據(jù)中的評價信息以及鏈接網(wǎng)址中的title信息計算出其與當(dāng)前所在學(xué)科的相關(guān)度,進而判斷出學(xué)生在該網(wǎng)站中分享數(shù)據(jù)的所在位置是否準確。該工具可替代教師傳統(tǒng)的手動判定工作,實現(xiàn)批量處理數(shù)據(jù)的目的,從而在一定程度上減輕了教師工作壓力,具有較好的應(yīng)用效果。
關(guān)鍵詞:分類算法;模糊匹配;中文分詞
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引言
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,數(shù)據(jù)量與日俱增,如何有效地對其進行分類成為當(dāng)今研究的重點之一。數(shù)據(jù)分類作為數(shù)據(jù)挖掘的一個分支,是將已知數(shù)據(jù)分成幾大類,然后將新數(shù)據(jù)歸為其中一類的方法。
本文將獲取到的有關(guān)數(shù)據(jù)進行分類整合,應(yīng)用到智學(xué)分享平臺,供學(xué)生們查詢、使用。首先利用標題和內(nèi)容特征進行相關(guān)性分析,然后提取關(guān)鍵字,作為分類學(xué)科標準,例如:軟件工程、網(wǎng)絡(luò)工程、計算機科學(xué)與技術(shù)等學(xué)科,再將學(xué)科進行細化,分為課后練習(xí)題、期末考試題、課堂練習(xí)等。
1相關(guān)概念
模糊匹配(又稱為模式匹配、模糊檢索):數(shù)據(jù)結(jié)構(gòu)中字符串的一種基本運算,給定一個字串,要求在某個字符串中找出與該字串相同的所有子串[1]。
詞頻(TF):給定詞語在該文章中出現(xiàn)的次數(shù)。
逆向文件頻率(IDF):該詞語在全部文章中的普遍程度,可由全部文章除以有該詞語的文章,再將得到的商取對數(shù)得到[2]。
中文分詞(ChineseWordSegmentation):將一個漢字序列切分成一個個單獨的詞。分詞即將連續(xù)的字序列按照一定規(guī)范重新組合成詞序列的過程[3]。
自然語言處理(NLP):是計算機科學(xué)與人工智能領(lǐng)域中的一個重要方向,研究實現(xiàn)人與計算機之間用自然語言進行有效通信的各種理論和方法。
2程序設(shè)計
2.1功能分析
本程序以預(yù)先運用爬蟲技術(shù)爬取的智學(xué)分享網(wǎng)站數(shù)據(jù)為基礎(chǔ),對數(shù)據(jù)中的分享鏈接標題、內(nèi)容評論以及路徑等信息進行分析,以實現(xiàn)對分享內(nèi)容分類的功能。主要步驟如下:首先對已有數(shù)據(jù)按照教師和學(xué)生進行劃分,分別作為訓(xùn)練集樣本和待分類數(shù)據(jù);然后運用相關(guān)算法將訓(xùn)練集中的高頻詞語提取出來,通過人工調(diào)整后,將這些詞作為該門課程的關(guān)鍵字,完成分類準備工作;最后將待分類的數(shù)據(jù)與關(guān)鍵字逐一匹配,根據(jù)匹配程度判斷該條數(shù)據(jù)是否符合當(dāng)前分享的位置,并對其細分類別,完成數(shù)據(jù)分類工作。
2.2模塊設(shè)計
該程序主要分為3個模塊:ReadFiles模塊負責(zé)對訓(xùn)練集樣本數(shù)據(jù)進行讀取、分詞,并計算出TF值和IDF值;Ngram模塊負責(zé)對待分類數(shù)據(jù)的讀取、分詞以及相關(guān)性分析;Main模塊負責(zé)相關(guān)文件的讀取以及調(diào)用各個模塊,最終輸出結(jié)果如圖1所示。
2.3算法設(shè)計
2.3.1中文分詞算法
中文分詞技術(shù)屬于自然語言處理技術(shù)范疇,人們可以通過自己的知識判斷哪些是詞,但計算機必須通過人為設(shè)定一系列算法進行判斷,其過程即為中文分詞算法。
中文分詞算法可以分為3大類:基于字符串匹配的分詞方法、基于理解的分詞方法和基于統(tǒng)計的分詞方法,本文采用基于字符串匹配的分詞方法[4]?;谧址姆衷~方法又稱為機械分詞方法,它是將需要分析的字符串與一個中文庫進行匹配,如果在中文庫中能夠成功匹配某個字符串,則稱為識別出一個詞。
本文使用的中文庫是名為MMAnalyzer的一款開源分詞器,其支持英文、數(shù)字、中文(簡體)混合分詞,以及常用的地區(qū)名和人名匹配。MMAnalyzer分詞算法[5]步驟如下:讀取一個字,然后聯(lián)想,如果當(dāng)前可以構(gòu)成詞,便返回一個token;如果當(dāng)前不能構(gòu)成詞,則返回上一個可構(gòu)成詞語的字,然后從返回結(jié)果的下一個字重新開始聯(lián)想。
該算法具有以下優(yōu)勢:首先,傳統(tǒng)的最大匹配算法需要確定一個切分最大長度。如果該長度過大,將影響分詞效率,并且超出最大長度的詞將無法切分。但本算法不需要最大長度,根據(jù)詞庫中的詞進行匹配,可以切分為任意大小,而且對于未登錄的非漢字具有一定切分能力。本文詞庫具有可擴展性,比如可以將人們需要但詞庫中沒有的關(guān)鍵詞加入詞庫。最重要的是,由于本文選用的為論文、學(xué)術(shù)著作等較為科學(xué)嚴謹?shù)奈恼?,用語精煉,采用該算法能夠快速有效地區(qū)分出關(guān)鍵詞。
2.3.2TF-IDF算法
當(dāng)給定的詞語在文章中出現(xiàn)次數(shù)越多,即TF越大,而在全部文章中出現(xiàn)的概率越小,則該詞語具有很強的區(qū)分能力。例如:“軟件”這個詞在一些計算機類的文章中出現(xiàn)次數(shù)很多,但在體育及文學(xué)類文章中很少出現(xiàn),因而該詞能很好地區(qū)分計算機類與其它類文章。
詞語在某篇文章中的重要性即詞頻,用公式(1)表示。
而詞語在所有文章中的普遍程度即逆文件頻率,用公式(2)表示。
|F|為包含所需詞語的文件數(shù)目,如果該詞語不在語料庫中,則會導(dǎo)致被除數(shù)為零,因此一般情況下使用公式(4)。
文件內(nèi)的某些詞語在該文件中頻繁出現(xiàn),但可能該詞語在整個文件集合中僅偶爾出現(xiàn),從而產(chǎn)生出高權(quán)重的TF-IDF[6]。因此,TF-IDF傾向于過濾掉常見詞語,保留重要詞語。
由于本文采用的樣本集文章較為科學(xué)嚴謹,使用TF-IDF算法能夠充分考慮每個詞項的統(tǒng)計信息,突出關(guān)鍵詞在每篇文章中的關(guān)鍵地位,使結(jié)果更加清晰明了。
2.3.3N-gram算法
模糊匹配在生活中最常見的應(yīng)用即輸入法的輸入提示功能,例如:當(dāng)輸入“問”再輸入一個“t”時,輸入法會自動優(yōu)先提示“題”字;或者使用數(shù)據(jù)庫查詢時,經(jīng)常使用usernamelike“%name%”形式,查詢出的username字段中含有name的數(shù)據(jù),此即為模糊匹配[7]。
N-Gram模糊匹配算法是利用兩個字符串之間的“差異”(Smith-Waterman算法和Needleman-Wunsch算法中的“編輯距離”)進行匹配[8]。假設(shè)兩個字符串a(chǎn)、b,它們的N-Gram即表示按長度N切分原字符串得到長度為N的子串,通過比較子串中相同數(shù)量占總數(shù)量的比重表示兩字符串之間的相似程度[9]。但該方法并不利于計算機理解,于是有學(xué)者提出以非重復(fù)的N-Gram分詞為基礎(chǔ)定義N-Gram距離概念,可用以下公式表述[10]:
一篇文章中有許多句子,而一個句子由各種詞語組成,需要將詞語從句子中區(qū)分出來,所以要用到基于N-Gram算法的模糊匹配技術(shù)。該算法較為全面,每條數(shù)據(jù)的出現(xiàn)都有一定概率,所有詞的出現(xiàn)都會影響其后的詞,但對之前的詞沒有影響,因而對于關(guān)鍵詞有更好的區(qū)分作用。
3代碼實現(xiàn)過程
3.1訓(xùn)練樣本數(shù)據(jù)處理
首先讀取樣本數(shù)據(jù),并使用MMAnalyzer的中文分詞功能對樣本數(shù)據(jù)進行分詞,分得的詞為原始數(shù)據(jù),包括各種重復(fù)的雙字詞、三字詞、四字詞等,然后使用TF-IDF算法計算其中詞語的TF及IDF值。但由于一篇文章中至少有上百個詞,如果人工逐詞尋找每個單詞的TF或IDF值,無疑非常浪費時間與精力,因此需要一個方法對分詞得到的詞進行排序、過濾。本文將詞語與TF或IDF值綁定存入HashMap中,取出hashMap中的TF值進行比較。提取并分詞關(guān)鍵代碼如下:
//定義一個空數(shù)組
String[]cutWordResult;
//使用MMAnalyzer中的方法分割字詞
MMAnalyzeranalyzer=newMMAnalyzer();
StringtempCutWordResult=analyzer.segment(text,"");
cutWordResult=tempCutWordResult.split("");
處理TF以及IDF值關(guān)鍵代碼如下:
privatestaticHashMap
外層HashMap的String存儲文件名字,內(nèi)層HashMap的String存儲得到的分詞詞語,F(xiàn)loat存儲該詞語對應(yīng)的TF值,從而通過文件名-詞語快速定位到TF值,程序流程如圖1所示。
TF值處理以及IDF值過濾部分流程如圖2所示。
3.2分析算法實現(xiàn)
該工具利用hashMap獲取學(xué)生分享的數(shù)據(jù)標題及評論,并且使用基于N-Gram的模糊匹配算法,將其分別分為單個字、雙字詞、三字詞以及四字詞放入hashMap中,并與過濾算法得到的list集合匹配。如果匹配成功,則相關(guān)性加1。本文通過設(shè)定某個值大小,判斷該篇文章與學(xué)科相關(guān)的準確度,若TF-IDF比值越高,則判斷該分享數(shù)據(jù)與學(xué)科越相關(guān)。偽代碼如下:
獲取分享的標題以及評論
利用split將其進行分詞并存入hashMap中
for(此hashMap的大?。﹞
for(list詞庫大小){
if(匹配成功){
計數(shù)器加1
}
}
}
4實驗結(jié)果
該工具的運行環(huán)境為Win10,采用Java作為編程語言,eclipse作為編寫工具。
4.1學(xué)科關(guān)鍵字提取
以一篇軟件工程文章、一篇體育新聞、一篇財經(jīng)新聞為例進行學(xué)科關(guān)鍵詞提取,運行結(jié)果如表1-表3所示。
可看出在第一篇文章中,“軟件工程”的TF值遙遙領(lǐng)先,可結(jié)合“學(xué)生”、“計算機”、“信息資源”等關(guān)鍵詞確定為軟件工程相關(guān)文章;第二篇文章傾向性很強,可通過“阿根廷”、“世界杯”、“進球”等關(guān)鍵詞確定為體育類文章;第三篇文章可通過“股”、“跌幅”、“跌?!钡汝P(guān)鍵詞確定為財經(jīng)類文章。
檢測的IDF值如表4所示。
由表4可以看出,“軟件工程”關(guān)鍵詞對于軟件工程學(xué)科的區(qū)分有著明顯效果,而關(guān)鍵詞“阿根廷”雖然TF值較高,但是IDF值較低,說明該詞尚不足以作為區(qū)分體育新聞學(xué)科的標準,當(dāng)然由于本文實驗條件所限,選取文章數(shù)量不是很多,可能存在誤差。
4.2分享數(shù)據(jù)檢驗
本文對3篇文章中的30條數(shù)據(jù)進行驗證,共檢測出24條數(shù)據(jù)符合當(dāng)前學(xué)科,6條數(shù)據(jù)不符合,準確率為80%,其中“向上”、“中”、“結(jié)合”、“超”等數(shù)據(jù)明顯不符合當(dāng)前學(xué)科。
由于影響準確率的因素主要為訓(xùn)練集樣本與學(xué)科相關(guān)度,以及判定數(shù)據(jù)符合與否的臨界值,因此為使結(jié)果更加準確,需嚴格篩選訓(xùn)練集樣本,并多次調(diào)整臨界值,以使最終判定結(jié)果達到最理想效果。
5結(jié)語
本文運用中文分詞、模糊匹配等相關(guān)算法實現(xiàn)對智學(xué)分享網(wǎng)站中學(xué)生分享數(shù)據(jù)的分類工作,從而一定程度上減輕了教師手動檢測的工作量。該工具已在智學(xué)分享網(wǎng)站部分課程中得到初步應(yīng)用,取得了良好效果。
參考文獻:
[1]王建.基于模式匹配的網(wǎng)路入侵檢測系統(tǒng)的研究與設(shè)計[D].武漢:武漢理工大學(xué),2010.
[2]李萍.基于改進詞語權(quán)重的文本分類方法研究[D].長春:東北師范大學(xué),2010.
[3]終小南.中文分詞算法總結(jié)[EB/OL].http://www.360doc.com/content/13/0909/16/13491968_313302194.shtml.
[4]路衛(wèi)杰.全文檢索lucene中文分詞的一些總結(jié)[EB/OL].http://blog.csdn.net/buptdavid.
[5]蔡小燕,寇應(yīng)展,沈巍.Nutch_0_9中JE中文分詞的實現(xiàn)[D].北京:北京航天大學(xué),2014.
[6]特依依.TFIDF算法java實現(xiàn)(TF/IDF選取高頻詞)[EB/OL].http://blog.csdn.net/earth3008/article/details/9200307.
[7]阮一峰.TF-IDF與余弦相似性的應(yīng)用[EB/OL].http://www.ruanyifeng.com/blog/2013/03/cosine_similarity.html.
[8]王曄,黃上騰.基于n-gram相鄰字的中文文本特征提取算法[C].Ncircs全國信息檢索與內(nèi)容安全學(xué)術(shù)會議,2004.
[9]葛昊.基于n-gram語法檢查系統(tǒng)的改進和實現(xiàn)[D].合肥:中國科學(xué)技術(shù)大學(xué),2014.
[10]白馬負金羈.自然語言處理中的N-Gram模型詳解[EB/OL].http://blog.csdn.net/baimafujinji/article/details/51281816.
(責(zé)任編輯:黃健)