時間:2014-03-19 編輯整理:早檢測網(wǎng) 來源:早檢測網(wǎng)
目前,已經(jīng)通過CALIS認(rèn)證的四套學(xué)位論文提交與發(fā)布系統(tǒng),其基本功能大致相同,都具有6大功能模塊:論文提交模塊、論文審核與編目模塊、文檔標(biāo)準(zhǔn)化制作模塊、論文發(fā)布與檢索模塊、論文回溯制作模塊和服務(wù)器管理模塊。這四個系統(tǒng)均可以良好地完成論文提交和發(fā)布功能,但在論文內(nèi)容的深度處理上無相應(yīng)的功能。很多高校采用這四套學(xué)位論文提交與發(fā)布系統(tǒng),如果在系統(tǒng)中實現(xiàn)論文相似性的分析,則可以很大程度上提高學(xué)生論文的質(zhì)量,督促導(dǎo)師對學(xué)生論文的指導(dǎo)。國內(nèi)已有獨立的論文相似度檢測產(chǎn)品出現(xiàn),如ROST和CNKIAMLC,其中ROST從公布的文檔看,是通過自動將文檔切割為多個50到200字(可自定義)的小文本進(jìn)行比對,而CNKIAMLC是采用整句和整段的對比方法[1]。本文從文本相似度研究入手,采用VSM模型和ICTCLAS智能分詞系統(tǒng)實現(xiàn)基于詞語級別的對比方法,探討論文相似度計算在論文發(fā)布系統(tǒng)中的應(yīng)用。
1.1 系統(tǒng)設(shè)計思路 漢語的書面表達(dá)方式是以漢字為最小單位,但在自然語言理解中詞是表達(dá)語義的基本單位,詞可以獨立活動,是有意義的語言成分。若干詞構(gòu)成了一篇完整的論文,剔除論文中虛詞,統(tǒng)計有實際意義的詞形成該篇文章的數(shù)字水印。采用統(tǒng)計學(xué)的方法比較兩篇論文的數(shù)字水印,即可計算出論文的相似程度。由于論文包含有題名、摘要、章節(jié)內(nèi)容和參考文獻(xiàn)等組成部分,可分別形成論文中各個部分的數(shù)字水印,從而實現(xiàn)論文的深度比較。在寫文章時人們總是習(xí)慣在文章的特定位置表述比較重要的信息,例如:標(biāo)題是全文內(nèi)容的高度概括,每一段的主體句常常在段首或段尾,同時由于論文本身允許部分內(nèi)容的引用,基于詞語級別的處理可以采用核心詞共現(xiàn)的方法來進(jìn)行比較,則更具靈活性。
1.2 文本相似度計算 文本相似度計算是指利用計算機(jī)自動計算文本間的相似度,文本相似度是表示兩個或多個文本之間匹配程度的一個度量參數(shù),相似度越大表明文件相似程度越高。在自然語言處理領(lǐng)域,在統(tǒng)計學(xué)的方法中文本的表示主要采用VSM模型,這種方法認(rèn)為每篇文本都包含一些用概念詞表達(dá)的揭示其內(nèi)容的獨立屬性。這些概念屬性構(gòu)成了文章的主體,同時這些屬性可以看成一個維數(shù),文本可以表示成這些維數(shù)的集合。對需要比較相似度的文本進(jìn)行分析,根據(jù)文本中的詞語將文本映射為n維空間向量,然后通過比較向量間的余弦系數(shù)確定文本間的相似度,余弦值越大其相似度越高,計算公式為:
其中,T、T.分別為待比較的兩個文本的特征向量,Ti、Ti.分別為向量的第i維,n為特征向量的維數(shù)。
1.3 中文分詞算法 要對論文進(jìn)行文本相似度計算,首先必須對論文進(jìn)行分詞。分詞的準(zhǔn)確性決定了論文相似性計算的準(zhǔn)確性。目前的中文分詞算法歸納起來主要有兩大類:一類是由字典匹配法和基于頻度的方法組成,此類方法相對具體、實用;另一類是模擬人類的閱讀過程,但由于中文的語法、語義相當(dāng)復(fù)雜,受開發(fā)人員主觀判斷影響較大,所以效果并不如前一種理想,只在某一領(lǐng)域適用?,F(xiàn)在常用的中文分詞算法有逐詞遍歷法、二次掃描法和基于詞頻統(tǒng)計的分詞法等。目前,由中國科學(xué)院計算技術(shù)研究所研制的漢語詞法分析系統(tǒng)ICTCLAS[3]是在中文分詞領(lǐng)域較為先進(jìn)的系統(tǒng),已經(jīng)向國內(nèi)外的企業(yè)和學(xué)術(shù)機(jī)構(gòu)頒發(fā)了50,000多份授權(quán),在ICTCLAS的眾多版本中提供了開源的ICTCLAS版本,可從http://ictclas.org/Download.html下載使用。使用ICTCLAS對需要比較的文本進(jìn)行預(yù)處理,將文本進(jìn)行分詞。
1.4 OLE自動化 應(yīng)用程序間互相通信的方法有多種:OLE對象鏈接與嵌入、DDE動態(tài)數(shù)據(jù)交換等。當(dāng)前OLE技術(shù)已經(jīng)逐步取代了DDE技術(shù),OLE已經(jīng)成為應(yīng)用程序間共享對象的工業(yè)標(biāo)準(zhǔn)。目前,論文提交方式大都采用Word文檔方式提交,Word文檔本身是帶格式的文件,除了可以在可視環(huán)境下進(jìn)行文檔編輯處理,還可以利用Word提供的OLEAutomation[4]自動化程序接口即COM組件對象模型,采用VC++等編程語言實現(xiàn)Word文檔操作的自動化。Word中有一百多個可以使用的對象,所有這些對象都可以通過OLE自動化來訪問,例如利用該COM組件中TablesOfContents類的pTablesOfContents方法可以提取論文的目錄,可按提取的目錄自動查找論文中的相關(guān)內(nèi)容,實現(xiàn)對論文各部分的相似性比較,如摘要、論文內(nèi)容和參考文獻(xiàn)的比較。
由于目前的論文提交均是通過WEB方式提交服務(wù)器,服務(wù)器端收集了所有論文的Word文檔。因此,可在服務(wù)器端直接運行論文相似性分析的程序,可利用夜間服務(wù)器的閑暇時間定時運行,減少對論文發(fā)布系統(tǒng)的干擾。在設(shè)計中筆者采用了VisualC++編寫.
2.1 論文處理模塊 論文處理模塊的作用是利用OLE自動化技術(shù),對上傳的Word文檔依據(jù)論文目錄自動提取摘要、論文正文和參考文獻(xiàn)文本內(nèi)容。VisualC++完全支持OLE2.0的OLE自動化,可以用VisualC++編寫自動化控制器來操縱MSWord[5]。在VisualC++工程的類型庫加載Word的類型庫文件,對于Word2003默認(rèn)路徑是\ProgramFiles\M-icrosoftOffice\OFFICE11\MSWORD.OLB,部分代碼如下:
voidCWordproDlg::OnWord()
{
,
//構(gòu)建Word應(yīng)用程序?qū)ο?/span>
-ApplicationobjWord;
,,
//讀取總頁數(shù)和有頁腳標(biāo)注的頁數(shù)
Rangerng=testDoc.Range(covOptional,covOptional);
rng.SetRange(rng.GetEnd()-1,rng.GetEnd());
rng.Select();
intpageCount1=((LPVARIANT)COleVariant(Selection(objWord.
GetSelection()).GetInformation(1)))->lVal;
intpageCount2=((LPVARIANT)COleVariant(Selection(ob-j
Word.GetSelection()).GetInformation(4)))->lVal;
//TTT獲得目錄內(nèi)容
Rangeprange(pTableOfContents.GetRange());
TTT=prange.GetText();
//lCount獲得目錄條數(shù)
HyperlinkspHyperlinks(prange.GetHyperlinks());
lCount=pHyperlinks.GetCount();
,,
2.2 分詞處理模塊 該模塊是對論文處理模塊中提取的文本進(jìn)行自動分詞,并將分詞后的詞組存入分詞數(shù)據(jù)庫中,形成本篇文章的數(shù)字指紋。分詞模塊的設(shè)計上采用了中國科學(xué)院計算技術(shù)研究所ICTCLAS開源包中的WindowsCAPI版本來實現(xiàn),在工程中調(diào)用ICTCLAS30.dll動態(tài)鏈接庫即可。部分代碼如下:
#include/ICTCLAS30.h0//引用ICTCLAS30頭文件
......
intmain(intargc,char*argv[])
{
//依據(jù)配置文件和數(shù)據(jù)目錄初始化ICTCLAS
ICTCLAS
Init();//對輸入的文件進(jìn)行分詞并且輸出文本文件
ICTCLAS
FileProcess(m
edit1.GetWindowText(ch1,10),/d:\\
test\\output.txt0);
//釋放ICTCLAS模塊所占用資源,退出ICTCLAS
ICTCLAS-Exit();
//遍歷output.txt文件的內(nèi)容將詞組存入分詞數(shù)據(jù)庫
......
}
2.3 VSM計算模塊 VSM計算模塊是讀取分詞數(shù)據(jù)庫中的文檔分詞,依據(jù)第二節(jié)介紹的VSM文本相似度算法來計算兩篇論文的相似度,并把計算結(jié)果存入計算結(jié)果數(shù)據(jù)庫,部分代碼如下:
publicdoubleSimilarity(stringtext1,stringtext2)
Dictionary<string,int>.KeyCollectionkeys2=dictionary2.Keys;
foreach(stringkeyinkeys2)
{
dictionary2.TryGetValue(key,outtemp2);
denominator2+=temp2*temp2;
}
//計算text1和text2的文本相似度
similarity=numerator/(Math.Sqrt(denominator1*
denominator2));
......
2.4 WEB發(fā)布模塊WEB發(fā)布模塊是論文相似 度的WEB頁面查詢系統(tǒng),它基于相似度計算結(jié)果的數(shù)據(jù)庫。WEB發(fā)布模塊可實現(xiàn)在線查詢論文的相似度計算結(jié)果數(shù)據(jù)。例如采用PHP語言的GD圖形函數(shù)庫,可以實現(xiàn)在線的圖形統(tǒng)計功能。
3.1 論文格式的規(guī)范化 由于需要對論文的各個部分如:標(biāo)題、摘要、各個章節(jié)內(nèi)容進(jìn)行分別對比計算,因此論文處理模塊必須通過論文的目錄來實現(xiàn)對論文內(nèi)容的定位,采用Word的自動化接口讀取目錄的相關(guān)內(nèi)容。論文的目錄必須是采用Word的自動目錄功能生成,因此可在讀者通過WEB頁面上傳論文處,采用VBS腳本檢查上傳的論文是否存在由Word自動目錄功能生成的論文目錄,對于檢查不存在的可自動跳轉(zhuǎn)到幫助頁面教作者如何利用Word生成自動目錄。
3.2 分詞的精準(zhǔn)度 模型中的分詞模塊是采用ICTCLAS的開源API實現(xiàn),分詞具有一定的局限性。在實際使用中可采用ICTCLAS的行業(yè)版來實現(xiàn)分詞,可以依據(jù)電子、物理、化工等行業(yè)詞典來提高分詞的精準(zhǔn)性。同時,可依據(jù)本校專業(yè)特點收集相關(guān)專業(yè)的特征詞庫建立特征詞典,在ICTCLAS的API中調(diào)用特征詞典將會更加具有針對性。
3.3 相似度計算的優(yōu)化 構(gòu)成論文文本的詞的數(shù)量非常之大,導(dǎo)致了表示論文文本的向量空間的維數(shù)也相當(dāng)多,甚至可以達(dá)到幾萬維,文本相似度計算的復(fù)雜度將會隨著特征向量的維數(shù)的增加而快速增大。同時,有噪聲或高相關(guān)性特征項的增加實際上會降低系統(tǒng)的性能。因此,對論文文本特征向量降維既可提高系統(tǒng)的效率,加快運行速度,還能提高運算精度。可采用常用降維方法中的特征選取法,依據(jù)ICTCLAS的行業(yè)詞典和用戶自己建立的特征詞典降維。
筆者利用MSOLE自動化技術(shù)、ICTCLAS的分詞技術(shù)和成熟的VSM相似度計算模型構(gòu)建了論文相似性計算的原型模型,在實際測試中發(fā)現(xiàn),要實現(xiàn)更加精準(zhǔn)的相似度計算很大程度上依賴相似度算法上的優(yōu)化,今后文本相似度計算過渡到基于語義理解的方法上將會有更加準(zhǔn)確的計算結(jié)果。
劉翔 施干衛(wèi) 丁祖榮