路永和+彭燕虹+劉文秋
〔摘 要〕為提高中文文本分類科研與教學(xué)人員的工作效率,本文針對(duì)國(guó)內(nèi)現(xiàn)有中文文本分類系統(tǒng)的研發(fā)現(xiàn)狀,構(gòu)建一個(gè)包括預(yù)處理、特征選擇、權(quán)值計(jì)算、自動(dòng)分類和分類效果測(cè)評(píng)等文本分類全過(guò)程的管理平臺(tái)。開發(fā)過(guò)程中,本文使用系統(tǒng)集成思想和方法將自編軟件代碼與相關(guān)的開源軟件代碼進(jìn)行集成。經(jīng)測(cè)試,該系統(tǒng)實(shí)現(xiàn)了文本自動(dòng)分類過(guò)程的全部功能。
〔關(guān)鍵詞〕文本分類;MVC;語(yǔ)料庫(kù);訓(xùn)練集;測(cè)試集
DOI:10.3969/j.issn.1008-0821.2015.09.011
〔中圖分類號(hào)〕TP391 〔文獻(xiàn)標(biāo)識(shí)碼〕B 〔文章編號(hào)〕1008-0821(2015)09-0056-07
〔Abstract〕In order to improve the working efficiency of the people which are occupied in scientific research and teaching of Chinese text categorization and considering about the research and development status of the text categorization system in China,a management platform of text categorization for the whole process,including pre-processing,feature selection,weighting calculation,automatic classification and classification evaluation were built.In the process of the development,based on the principle and method of system integration,the coding of ourselves and the ones of the related open source software were integrated.After testing,the system implemented the whole functions of automatic text categorization.
〔Key words〕text classification;MVC;corpus;training set;testing set
文本分類是基于內(nèi)容的自動(dòng)文本信息管理,隨著網(wǎng)絡(luò)文本數(shù)量呈幾何級(jí)數(shù)增長(zhǎng),文本分類已成為處理和組織海量文本信息的關(guān)鍵技術(shù)[1]。文本分類就是將文本信息分到已定義好的一個(gè)或多個(gè)類中,從而幫助人們更好更快的檢索到有用信息,過(guò)濾掉無(wú)用信息。一般而言,文本分類分為以下5個(gè)環(huán)節(jié),包括:文本預(yù)處理、特征選擇、權(quán)值計(jì)算、分類算法、分類效果測(cè)評(píng)。當(dāng)前,文本分類技術(shù)被廣泛應(yīng)用于日常數(shù)據(jù)管理的各個(gè)方面[2-4],如瀏覽器的資源分層、垃圾短信郵件的過(guò)濾、敏感信息的預(yù)警、網(wǎng)絡(luò)輿情監(jiān)測(cè)[5]等。但由于文本分類流程的復(fù)雜性,需要撰寫大量的代碼,不僅耗時(shí)耗力、成本代價(jià)高昂,且造成了嚴(yán)重的代碼重復(fù),浪費(fèi)了研究者們的寶貴時(shí)間、延長(zhǎng)了科研進(jìn)度,使很多學(xué)者不能在第一時(shí)間完成自己的最新研究。對(duì)致力于學(xué)習(xí)文本分類技術(shù)的高校學(xué)生而言,由于文本分類過(guò)程的抽象復(fù)雜,他們很難學(xué)習(xí)到相應(yīng)知識(shí)內(nèi)核?;谏鲜鲈?,研發(fā)一個(gè)面向教學(xué)與科研的文本分類平臺(tái),實(shí)現(xiàn)數(shù)據(jù)集導(dǎo)入、訓(xùn)練集與測(cè)試集索引、特征選擇、權(quán)值計(jì)算、文本分類并提供可視化的界面,使得科研人員、高校學(xué)生甚至包括無(wú)技術(shù)背景的人員均能利用此文本分類系統(tǒng)進(jìn)行文本分類領(lǐng)域的相關(guān)研究與應(yīng)用。
1 系統(tǒng)需求分析
目前,國(guó)外已經(jīng)開發(fā)出了一些成熟的文本分類平臺(tái),如著名的IBM商用數(shù)據(jù)挖掘平臺(tái)IBM Intelligent Miner,是一款包含文本分類、預(yù)測(cè)、關(guān)聯(lián)規(guī)則產(chǎn)生等基礎(chǔ)研究成果在內(nèi)的可伸縮性平臺(tái)。該平臺(tái)提供了豐富的數(shù)據(jù)分析技術(shù)和算法集,具有大量易于開發(fā)者使用的編程接口,是市場(chǎng)上最強(qiáng)大的數(shù)據(jù)分析平臺(tái)之一[6]。但是作為商用挖掘工具,該平臺(tái)價(jià)格較高且不宜用于學(xué)術(shù)研究。斯坦福大學(xué)自然語(yǔ)言處理組提供了開源的Natural Language Toolkit(NLTK)平臺(tái)用于進(jìn)行分詞、詞性標(biāo)注、文本分類等工作[7],但NLTK只適用于Python語(yǔ)句且主要支持英文及其他一些拉丁語(yǔ)系,無(wú)法處理中文語(yǔ)料。Waikato大學(xué)研究的開源平臺(tái)Waikato Environment for Knowledge Analysis(WEKA),它包含對(duì)數(shù)據(jù)進(jìn)行預(yù)處理、關(guān)聯(lián)規(guī)則挖掘、分類、聚類等多種功能,并提供了易于交互的可視化界面[8]。Weka的源碼是公開的,因此使用者可以根據(jù)自身需要對(duì)Weka進(jìn)行二次開發(fā),拓展其功能或者整合到相應(yīng)的系統(tǒng)中。相比國(guó)外,國(guó)內(nèi)在文本分類平臺(tái)開發(fā)上發(fā)展較慢,主要是基于國(guó)外著名開源平臺(tái)進(jìn)行的二次開發(fā)。自主研制的相關(guān)平臺(tái)主要有復(fù)旦自然語(yǔ)言處理(FudanNLP,F(xiàn)NLP)、中科院漢語(yǔ)分詞系統(tǒng)(Institute of Computing Technology,Chinese Lexical Analysis System,ICTCLAS)以及譚松波的DRAP文本分類系統(tǒng)。FNLP主要包括了以下功能:文本分類、實(shí)體名識(shí)別、新聞聚類、詞性標(biāo)注、中文分詞、關(guān)鍵詞抽取、依存句法分析等。工具采用Java編寫,并提供了API的訪問(wèn)調(diào)用方式[9]。但此平臺(tái)初始化時(shí)間有點(diǎn)長(zhǎng),并且加載模型時(shí)占用內(nèi)存較大,在進(jìn)行語(yǔ)法分析時(shí)分析的結(jié)果也不是十分準(zhǔn)確。ICTCLAS主要包括以下功能:中文分詞、詞性標(biāo)注、命名實(shí)體識(shí)別、新詞識(shí)別,同時(shí)支持用戶詞典。目前,ICTCLAS30分詞速度單機(jī)996KB/s,分詞精度9845%,API不超過(guò)200KB,各種詞典數(shù)據(jù)壓縮后不到3M,是當(dāng)前世界上最好的漢語(yǔ)詞法分析器[10]。但是ICTCLAS并非完整的文本分類系統(tǒng),只包含了文本分類過(guò)程中文檔預(yù)處理環(huán)節(jié)的切分詞操作。DRAP文本分類系統(tǒng),支持中英文分類、中文最大匹配分詞、特征選擇、英文詞根還原、停用詞去除、雙語(yǔ)種分類和多線程分類,其中雙語(yǔ)種分類、多線程分類需要定制后才可使用[11]。但是該分類平臺(tái)并不能進(jìn)行特征選擇方法以及分類器的選擇,各個(gè)分類環(huán)節(jié)采取系統(tǒng)默認(rèn)設(shè)置,同時(shí)系統(tǒng)實(shí)用性不強(qiáng)、極易閃退。綜合而言,國(guó)內(nèi)尚未有成型且使用效果良好的文本分類系統(tǒng)平臺(tái),開發(fā)一個(gè)易于使用、功能簡(jiǎn)捷、操作簡(jiǎn)單的文本分類系統(tǒng),將為自動(dòng)文本分類技術(shù)的使用者提供極大的便利。endprint
基于此,本系統(tǒng)平臺(tái)搭建的主要目標(biāo)是為從事文本分類教學(xué)、科研的人員提供一個(gè)易于使用、功能簡(jiǎn)捷、對(duì)系統(tǒng)運(yùn)行環(huán)境要求不高、具有可視化功能的文本分類系統(tǒng)。為了達(dá)到此目標(biāo),系統(tǒng)的功能性需求包括:(1)提供可視化的使用界面,用戶只需點(diǎn)擊相應(yīng)按鈕,即可執(zhí)行所需的文本分類各個(gè)環(huán)節(jié)的操作,不再需要人為進(jìn)行代碼撰寫;(2)提供單篇文檔分類、多篇文檔分類兩個(gè)入口,以滿足不同需求;(3)提供各個(gè)環(huán)節(jié)的運(yùn)行結(jié)果,使得用戶能夠及時(shí)了解文本分類各個(gè)環(huán)節(jié)的運(yùn)行情況。同時(shí),系統(tǒng)需要滿足以下2個(gè)非功能需求,才能更好地服務(wù)于使用者,包括:(1)易使用性:系統(tǒng)具有良好的交互界面,界面功能描述清晰,步驟明確,用戶只要執(zhí)行選擇、確定操作,即可順利使用平臺(tái);(2)健壯性:系統(tǒng)平臺(tái)應(yīng)該可靠有效,即使出現(xiàn)系統(tǒng)故障或是用戶輸入、操作錯(cuò)誤或者其它異常,也能夠迅速捕獲并進(jìn)行處理。
2 系統(tǒng)構(gòu)建
21 系統(tǒng)總體架構(gòu)
本系統(tǒng)使用MVC三層架構(gòu)設(shè)計(jì),包括表示層、業(yè)務(wù)邏輯層以及數(shù)據(jù)訪問(wèn)層,開發(fā)語(yǔ)言采用Java,如圖1所示。
用戶通過(guò)表示層進(jìn)行界面操作。第一步:索引訓(xùn)練集、索引測(cè)試集以進(jìn)行文本預(yù)處理操作,通過(guò)用戶請(qǐng)求監(jiān)聽模塊訪問(wèn)業(yè)務(wù)邏輯層文本預(yù)處理模塊,調(diào)用文本預(yù)處理接口,運(yùn)行文本預(yù)處理各個(gè)環(huán)節(jié),包括ICTLAS分詞、去停用詞、Lucene特征詞索引以及統(tǒng)計(jì)詞頻,生成一個(gè)wordCount.txt文件(即詞頻統(tǒng)計(jì)文件)存儲(chǔ)于數(shù)據(jù)訪問(wèn)層中。第二步:用戶通過(guò)界面操作特征選擇環(huán)節(jié),包括選擇特征選擇方法以及輸入特征維數(shù),通過(guò)用戶請(qǐng)求監(jiān)聽模塊訪問(wèn)業(yè)務(wù)邏輯層特征選擇模塊,調(diào)用特征選擇接口,讀取wordCount.txt文件,運(yùn)行特征選擇業(yè)務(wù),生成特征選擇方法維數(shù)txt文件,存儲(chǔ)于數(shù)據(jù)訪問(wèn)層中。第三步:用戶通過(guò)界面選擇所需的權(quán)值計(jì)算方法以進(jìn)行權(quán)值計(jì)算操作,通過(guò)用戶請(qǐng)求監(jiān)聽模塊訪問(wèn)業(yè)務(wù)邏輯層權(quán)值計(jì)算模塊,調(diào)用權(quán)值計(jì)算接口,分別讀取各個(gè)特征選擇方法維數(shù)txt文件,運(yùn)行權(quán)值計(jì)算業(yè)務(wù),生成相應(yīng)TrainSet權(quán)值計(jì)算方法aff文件和TestSet權(quán)值計(jì)算方法aff文件,存儲(chǔ)于數(shù)據(jù)訪問(wèn)層中。第四步:用戶通過(guò)界面選擇所需的分類算法以進(jìn)行分類操作,通過(guò)用戶請(qǐng)求監(jiān)聽模塊訪問(wèn)業(yè)務(wù)邏輯層WEKA分類算法模塊,調(diào)用Weka分類算法接口,分別讀取成對(duì)的TrainSet權(quán)值計(jì)算方法aff文件和TestSet權(quán)值計(jì)算方法aff文件,運(yùn)行分類業(yè)務(wù)。第五步:第四步運(yùn)行分類業(yè)務(wù)后,直接訪問(wèn)業(yè)務(wù)邏輯層分類效果測(cè)評(píng)模塊,運(yùn)行分類效果測(cè)評(píng)業(yè)務(wù),包括單篇測(cè)試文檔分類結(jié)果(分類結(jié)果、實(shí)際類別),測(cè)試集分類結(jié)果(準(zhǔn)確率、宏平均值、微平均值),業(yè)務(wù)邏輯層運(yùn)行結(jié)果直接返回表示層,在用戶界面顯示分類效果測(cè)評(píng)(準(zhǔn)確率、宏平均值、微平均值)。
22 主要功能模塊
本系統(tǒng)主要功能大致可以分為四大模塊:表示模塊,用戶請(qǐng)求監(jiān)聽模塊、業(yè)務(wù)邏輯模塊和數(shù)據(jù)存儲(chǔ)模塊。
221 表示模塊,即系統(tǒng)平臺(tái)界面
表示模塊即文本分類系統(tǒng)的UI,負(fù)責(zé)接受用戶的請(qǐng)求并返回請(qǐng)求內(nèi)容,該模塊使用JFC技術(shù),界面中使用了Java Swing和Java AWT等UI組件。在Java Swing中,每一個(gè)組件都包含一個(gè)MVC模型,Model模塊決定組件的行為,View模塊決定組件的UI。以JButton為例,按鈕表面提示文字,如“特征選擇”按鈕,這部分就是View。而當(dāng)前按鈕是被鎖定的還是處于激活狀態(tài),如“按鈕是否能被點(diǎn)擊”,這部分就是Model。
222 用戶請(qǐng)求監(jiān)聽模塊
使用ActionListener接收表示層所發(fā)出的請(qǐng)求,對(duì)請(qǐng)求進(jìn)行相應(yīng)處理,并將處理后的結(jié)果返回給表示層。用戶請(qǐng)求監(jiān)聽模塊主要負(fù)責(zé)監(jiān)聽用戶的操作,并根據(jù)用戶的請(qǐng)求,更新文本分類子系統(tǒng)的配置信息。該模塊主要為表示層提供服務(wù),同時(shí)充當(dāng)表示層和業(yè)務(wù)邏輯層間溝通的橋梁,包括:監(jiān)聽用戶操作和控制輸入規(guī)范。因此,該模塊主要解決以下兩個(gè)問(wèn)題:①系統(tǒng)能夠精確地捕獲用戶的操作并可以為用戶提供即時(shí)反饋;同時(shí),在響應(yīng)用戶的請(qǐng)求過(guò)程中,需要保證不會(huì)錯(cuò)過(guò)用戶的其它操作。②系統(tǒng)接受的數(shù)據(jù)需要控制在一定的范圍內(nèi),同時(shí)保證數(shù)據(jù)是有效的輸入。對(duì)于規(guī)范要求以外的輸入,系統(tǒng)能夠正確地判斷出來(lái),并且以合理的方式處理。
223 業(yè)務(wù)邏輯模塊
本系統(tǒng)的業(yè)務(wù)邏輯模塊即文本分類的流程操作,包括:①文本預(yù)處理:ICTCLAS分詞、去停用詞、Luence建立索引和統(tǒng)計(jì)詞頻;②特征選擇:信息增益、卡方檢驗(yàn)和互信息;③權(quán)值計(jì)算:TF-IDF;④分類算法:K最近鄰算法、樸素貝葉斯算法、支持向量機(jī)算法和J48決策樹算法;⑤分類效果測(cè)評(píng):準(zhǔn)確率、宏平均F值和微平均F值。
224 數(shù)據(jù)存儲(chǔ)模塊
即包括系統(tǒng)所涉及的所有數(shù)據(jù)文件的安全持久存放。數(shù)據(jù)主要保存為txt格式和arff格式。其中:①txt格式:wordCount.txt主要的作用是保存詞頻統(tǒng)計(jì)的結(jié)果,如某文本出現(xiàn)在類別Ci中的頻次,出現(xiàn)在類別Ci的文本數(shù)量等。后續(xù)特征選擇模塊和特征權(quán)值計(jì)算模塊在使用特征詞的詞頻等數(shù)據(jù)能夠直接從這個(gè)文件中調(diào)取。特征選擇方法維數(shù)txt主要的作用是保存某一維數(shù)下采用某一特征選擇方法得到的特征詞;②arff格式的文件是Weka默認(rèn)的儲(chǔ)存數(shù)據(jù)集文件。每個(gè)ARFF文件對(duì)應(yīng)一個(gè)二維表格。表格的各行是數(shù)據(jù)集的各實(shí)例,各列是數(shù)據(jù)集的各個(gè)屬性。因?yàn)楸疚脑O(shè)計(jì)的文本分類系統(tǒng)平臺(tái)在分類算法模塊中調(diào)用Weka開源工具,所以特征權(quán)值計(jì)算模塊的最終輸出為arff格式文件,方便分類算法模塊的調(diào)用。
3 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
31 用戶請(qǐng)求監(jiān)聽子系統(tǒng)
用戶請(qǐng)求監(jiān)聽子系統(tǒng)主要基于GUI類。首先,GUI類繼承了JFrame類,同時(shí)實(shí)現(xiàn)了ActionListener接口,故其本身是一個(gè)具有監(jiān)聽事件行為的窗口。其次,GUI類作為用戶界面,是整個(gè)系統(tǒng)的入口。在GUI類的構(gòu)造過(guò)程中,將按鈕和文本框布局到GUI類上,并分別為它們?cè)O(shè)置對(duì)應(yīng)的監(jiān)聽事件。整個(gè)用戶界面設(shè)置的事件有5種:endprint
(1)分類算法的單選按鈕事件RadioListener1。該事件用于更新文本分類算法。當(dāng)用戶選擇了某種文本分類方法,那么用戶請(qǐng)求監(jiān)聽子系統(tǒng)就會(huì)把文本分類子系統(tǒng)的分類算法設(shè)置為對(duì)應(yīng)的值。
(2)特征選擇方法的單選按鈕事件RadioListener2。該事件用于更新特征選擇方法。當(dāng)用戶選擇了某種特征選擇方法,那么用戶請(qǐng)求監(jiān)聽子系統(tǒng)就會(huì)把文本分類子系統(tǒng)的特征選擇方法設(shè)置為對(duì)應(yīng)的值。
(3)權(quán)值計(jì)算方法的單選按鈕事件RadioListener3。該事件用于更新權(quán)值計(jì)算方法。當(dāng)用戶選擇了某種權(quán)值計(jì)算方法,那么用戶請(qǐng)求監(jiān)聽子系統(tǒng)就會(huì)把文本分類子系統(tǒng)的權(quán)值計(jì)算方法設(shè)置為對(duì)應(yīng)的值。
(4)特征維數(shù)文本框的內(nèi)容更新事件KeyAdapter。該事件用于檢測(cè)特征維數(shù)的有效性。如果用戶填寫的特征維數(shù)不在有效范圍內(nèi),那么系統(tǒng)就會(huì)提示特征維數(shù)無(wú)效。
(5)文本分類子系統(tǒng)激活事件GUI(GUI實(shí)現(xiàn)了ActionListener接口)。該事件主要用于執(zhí)行文本分類子系統(tǒng)的任務(wù),包括索引訓(xùn)練、特征選擇、權(quán)值計(jì)算和分類。
用戶請(qǐng)求監(jiān)聽子系統(tǒng)的類圖,如圖2所示,這里略去函數(shù)和屬性。
32 文本分類子系統(tǒng)
文本分類子系統(tǒng)包括文本預(yù)處理、特征選擇、權(quán)值計(jì)算、文本分類、文本分類效果測(cè)評(píng)等,系統(tǒng)流程圖,如圖3所示。
321 文本預(yù)處理
文本預(yù)處理是文本分類環(huán)節(jié)中重要的一環(huán)[12]。文本預(yù)處理的主要目的是抽取代表文本特征的元數(shù)據(jù)(特征項(xiàng)),一般包括去除標(biāo)記、去除停用詞以及在特定情況下進(jìn)行分詞處理等工作[13]。本系統(tǒng)中,文本預(yù)處理主要用于實(shí)現(xiàn)中文文本分詞、特征詞索引和特征詞詞頻統(tǒng)計(jì)。本文的文本預(yù)處理操作,通過(guò)將中科院分詞器ICTCLAS整合進(jìn)Lucene平臺(tái)完善了Lucene平臺(tái)對(duì)中文分詞的不足,在利用ICTCLAS進(jìn)行分詞后,用Lucene實(shí)現(xiàn)后續(xù)的去停用詞、建立索引、統(tǒng)計(jì)詞頻等文本預(yù)處理操作。為文本預(yù)處理設(shè)計(jì)的類包括:
GUI類:主要負(fù)責(zé)前臺(tái)界面展示和人機(jī)交互控制。
MainText類:主要設(shè)計(jì)文本分類全部流程的接口,包含文本預(yù)處理、特征選擇、文本分類的接口。
TermStatistic類:包含文本分詞、特征詞索引、特征詞詞頻統(tǒng)計(jì)操作接口。
ICTCLASAnalyzer類:主要實(shí)現(xiàn)中文文本的分詞操作。
Indexer類:將分詞后的單詞按照字典順序進(jìn)行索引操作,便于下一步詞頻統(tǒng)計(jì)。
WordFrequence類:利用分詞和索引的結(jié)果,統(tǒng)計(jì)特征詞詞頻,為下一步特征選擇和特征權(quán)值計(jì)算做數(shù)據(jù)準(zhǔn)備,運(yùn)行后生成wordCount.txt。
用戶選擇完訓(xùn)練集路徑后,用戶監(jiān)控系統(tǒng)把用戶的請(qǐng)求提交給業(yè)務(wù)邏輯層,MainTest類調(diào)用函數(shù)setTrainpath和getTestpath分別記錄訓(xùn)練集和測(cè)試集路徑。當(dāng)用戶點(diǎn)擊“索引訓(xùn)練集”按鈕后,用戶監(jiān)控系統(tǒng)把用戶的請(qǐng)求提交給業(yè)務(wù)邏輯層,MainTest類調(diào)用類TermStatistic對(duì)訓(xùn)練文檔和測(cè)試文檔進(jìn)行索引。索引完畢后,TermStatistic的對(duì)象調(diào)用WordFrequence類進(jìn)行詞頻統(tǒng)計(jì),統(tǒng)計(jì)后的結(jié)果保存到wordCount.txt文件上。
322 特征選擇
特征選擇用于從原有的特征中提取出少量的、具有代表性的特征,并替代原始特征集進(jìn)行文本分類。在文本分類中,特征選擇是一項(xiàng)很重要的工作,抽取到的特征項(xiàng)質(zhì)量的好壞直接影響到分類的效果[14]。本文的文本分類平臺(tái)中整合了經(jīng)典的特征選擇方法,包括信息增益IG、開方檢驗(yàn)CHI以及互信息MI。其中本文設(shè)計(jì)的平臺(tái)設(shè)置CHI作為特征選擇的默認(rèn)方法。為特征選擇設(shè)計(jì)的類包括:
GUI類:主要負(fù)責(zé)前臺(tái)界面展示和人機(jī)交互控制。
MainText類:主要設(shè)計(jì)文本分類全部流程的接口,包含文本預(yù)處理、特征選擇、文本分類的接口。
FeatureSelection類:特征選擇基類,在基類上派生具體的特征選擇類,如CHI-FS類。
Parameter類:保存訓(xùn)練文本集、測(cè)試文本集以及新生成特征詞及其詞頻文件的存放路徑。
Method類:主要包含詞頻以及CHI方法中所需參數(shù)。
用戶提交請(qǐng)求后,用戶監(jiān)控系統(tǒng)把用戶的請(qǐng)求提交給業(yè)務(wù)邏輯層,MainTest類通過(guò)函數(shù)setFSType()來(lái)設(shè)置用戶特征選擇的方法,在執(zhí)行特征選擇操作之前,先通過(guò)setFeatureNum函數(shù)獲取用戶設(shè)置的特征維數(shù),然后調(diào)用FeatureSelection()函數(shù)來(lái)執(zhí)行特征選擇操作。FeatureSelection()函數(shù)通過(guò)變量FSType確定調(diào)用哪個(gè)特征選擇方法類并生成一個(gè)實(shí)例。假設(shè)用戶使用默認(rèn)特征選擇方法CHI,將特征維數(shù)getFeatureNum()作為參數(shù)傳入其中。通過(guò)Method類下的getDocNumInC()函數(shù)獲取訓(xùn)練集中的文本數(shù),通過(guò)調(diào)用termCountSum()函數(shù)獲取預(yù)處理后的每個(gè)類別下的特征項(xiàng)。
323 權(quán)值計(jì)算
特征權(quán)值就是用來(lái)表示某個(gè)特征項(xiàng)分類能力的強(qiáng)弱。現(xiàn)行的很多分類算法都利用向量空間模型(Vector Space Model,VSM)來(lái)進(jìn)行文本表示,用特征項(xiàng)和特征權(quán)值來(lái)代表特征信息[15]。本文設(shè)計(jì)的平臺(tái)中設(shè)置TF-IDF作為權(quán)值計(jì)算的默認(rèn)方法。為權(quán)值計(jì)算設(shè)計(jì)的類包括:
GUI類:主要負(fù)責(zé)前臺(tái)界面展示和人機(jī)交互控制。
MainText類:主要設(shè)計(jì)文本分類全部流程的接口,包含文本預(yù)處理、特征選擇、文本分類的接口。
TermWeightCalculation類:特征權(quán)值計(jì)算基類,在基類上派生具體的特征權(quán)值計(jì)算類,如TFIDF類。endprint
Parameter類:保存文件路徑,具體包括:訓(xùn)練文本集、測(cè)試文本集、新生成特征詞、詞頻以及特征權(quán)值計(jì)算生成的文件。
用戶提交請(qǐng)求后,用戶監(jiān)控系統(tǒng)把用戶的請(qǐng)求提交給業(yè)務(wù)邏輯層,MainTest類通過(guò)函數(shù)setWeightType()來(lái)設(shè)置用戶權(quán)值計(jì)算的方法,然后調(diào)用TrainWeightCalculate()函數(shù)以及TestWeightCalculate()函數(shù)來(lái)分別執(zhí)行訓(xùn)練集以及測(cè)試集權(quán)值計(jì)算操作。TrainWeightCalculate()函數(shù)以及TestWeightCalculate()函數(shù)通過(guò)變量WeightType確定調(diào)用哪個(gè)特征權(quán)值計(jì)算方法類并生成一個(gè)實(shí)例。
324 分類算法與效果測(cè)評(píng)
文本分類算法是文本分類中的核心問(wèn)題,也稱為文本分類器或分類模型[13]。文本分類根據(jù)文本的特征和權(quán)值,將文本按照一定的分類規(guī)則自動(dòng)標(biāo)注文本類別的過(guò)程。作為一個(gè)文本分類系統(tǒng)平臺(tái),應(yīng)整合多種經(jīng)典的算法,供平臺(tái)使用者進(jìn)行實(shí)驗(yàn)對(duì)比。由于Weka已經(jīng)涵蓋了大部分的分類算法,本文介紹的平臺(tái)上的分類算法是調(diào)用Weka的分類算法,其中包括KNN算法、樸素貝葉斯算法、支持向量機(jī)(SVM)算法和J48決策樹算法。其中本文設(shè)計(jì)的平臺(tái)設(shè)置KNN為默認(rèn)的分類算法。為分類算法設(shè)計(jì)的類包括:
GUI類:主要負(fù)責(zé)前臺(tái)界面展示和人機(jī)交互控制。
MainText類:主要設(shè)計(jì)文本分類全部流程的接口,包含文本預(yù)處理、特征選擇、文本分類的接口。
WekaClassifier類:整合了Weka開源平臺(tái)中大部分文本分類方法的類接口,調(diào)用Weka中的類IBk、LibSVM、J48、NaiveBayes,并根據(jù)Weka中的分類算法返回的結(jié)果生成分類器。
Classifier類:分類算法基類,在基類上派生具體的分類算法類,如KNN類、SVM類、J48類以及BAYS類。
ArffLoader類:讀取訓(xùn)練文件和測(cè)試文件。
ArrayList類:輸出每一個(gè)測(cè)試語(yǔ)料的文本分類測(cè)評(píng)結(jié)果,包括分類結(jié)果和實(shí)際類別。
用戶提交請(qǐng)求后,用戶監(jiān)控系統(tǒng)把用戶的請(qǐng)求提交給業(yè)務(wù)邏輯層,MainTest類通過(guò)函數(shù)setClassifierType()來(lái)設(shè)置用戶分類算法,然后在wekaClassifier類中調(diào)用Classify()函數(shù)來(lái)執(zhí)行分類算法操作。Classify()函數(shù)通過(guò)變量type確定調(diào)用哪個(gè)分類算法并生成一個(gè)實(shí)例。通過(guò)ArffLoader類下的getDataSet()函數(shù)獲取訓(xùn)練集及測(cè)試集文件,通過(guò)各個(gè)實(shí)例類的buildClassifier()函數(shù)進(jìn)行分類訓(xùn)練,通過(guò)調(diào)用classifyInstance()函數(shù)及classValue()函數(shù)獲取分類后的每個(gè)測(cè)試語(yǔ)料的分類結(jié)果,通過(guò)ArrayList類循環(huán)輸出分類結(jié)果。
4 系統(tǒng)功能測(cè)試
采用復(fù)旦中文分類語(yǔ)料庫(kù)作為系統(tǒng)測(cè)試的語(yǔ)料庫(kù),選取其中的9個(gè)類別,包括Agriculture、Art、Computer、Economy、Environment、History、Politics、Space以及Sports。各個(gè)類別均有400個(gè)文本,按1∶1隨機(jī)分配,訓(xùn)練集與測(cè)試集各為200個(gè),數(shù)據(jù)集共有3 600個(gè)文本。本文設(shè)計(jì)的文本分類系統(tǒng)可在“中大極天智能信息處理實(shí)驗(yàn)室”[16]上下載,安裝后可對(duì)平臺(tái)的各項(xiàng)功能進(jìn)行測(cè)試。
41 文本預(yù)處理
索引訓(xùn)練集和測(cè)試集過(guò)程中,系統(tǒng)會(huì)對(duì)訓(xùn)練語(yǔ)料和測(cè)試語(yǔ)料進(jìn)行分詞、去停用詞、索引和統(tǒng)計(jì)操作。具體操作包括:對(duì)每個(gè)文檔進(jìn)行切分詞操作,并對(duì)每個(gè)特征項(xiàng)評(píng)估其詞性,從而便于在去停用詞階段排除某些詞性的特征項(xiàng)。在進(jìn)行分詞處理后,對(duì)訓(xùn)練文本集建立索引,便于后續(xù)進(jìn)行詞頻統(tǒng)計(jì)等工作。索引結(jié)束后系統(tǒng)會(huì)輸出建立索引所花費(fèi)的時(shí)間。針對(duì)復(fù)旦中文分類語(yǔ)料庫(kù),1 800篇訓(xùn)練文檔,共花費(fèi)了127 910毫秒來(lái)建立索引;1 800篇測(cè)試文檔,共花費(fèi)了237 385毫秒來(lái)建立索引。
42 特征選擇
任意選擇平臺(tái)上一種經(jīng)典的特征選擇方法,輸入特征維數(shù)然后點(diǎn)擊“特征選擇”按鈕,后臺(tái)運(yùn)行特征選擇操作,在系統(tǒng)平臺(tái)結(jié)果區(qū)會(huì)出現(xiàn)經(jīng)過(guò)特征選擇后被選出的特征項(xiàng)列表。以特征維數(shù)600為例,分別利用CHI、IG、MI進(jìn)行特征選擇操作,得到前20個(gè)特征詞如表1所示。
觀察各個(gè)特征選擇方法得到的前20個(gè)特征詞可知:CHI、IG得到的特征詞較為類似,而MI與CHI、IG的特征詞差別較大。
43 權(quán)值計(jì)算
選擇權(quán)值計(jì)算方法,進(jìn)行“訓(xùn)練集權(quán)值計(jì)算”和“測(cè)試集權(quán)值計(jì)算”,運(yùn)行完成后生成相應(yīng)的訓(xùn)練集與測(cè)試集的arff格式文件,以供分類算法環(huán)節(jié)使用。以特征維數(shù)為600的CHI特征選擇方法為例,利用TF-IDF進(jìn)行特征權(quán)值計(jì)算,得到TrainSetTFIDF.arff和TestSetTFIDF.arff,分別包含了各個(gè)訓(xùn)練文本和測(cè)試文本的向量空間,如圖4所示。
44 分類算法與效果測(cè)評(píng)
任意選擇分類算法進(jìn)行文本分類操作,在系統(tǒng)平臺(tái)結(jié)果區(qū)會(huì)輸出各個(gè)測(cè)試文檔的分類情況,包括分類結(jié)果以及實(shí)際類別;界面右側(cè)會(huì)輸出各個(gè)類別的分類效果,包括精度、召回率和F1測(cè)度;界面下端會(huì)輸出整體數(shù)據(jù)集分類效果,包括準(zhǔn)確率、宏平均以及微平均?;谔卣骶S數(shù)為600的CHI特征選擇方法以及TF-IDF特征權(quán)值計(jì)算方法,分別利用K鄰近算法(KNN)、支持向量機(jī)(SVM)、決策樹(J48)、貝葉斯算法(BAYS)進(jìn)行分類操作,得到各個(gè)類別的分類效果(見表2)和數(shù)據(jù)集整體分類效果(見表3)。
由表2及表3可知,對(duì)于復(fù)旦中文分類語(yǔ)料庫(kù)的9個(gè)類別而言,J48決策樹分類算法的分類效果明顯優(yōu)于KNN、SVM、BAYS 3種算法,各個(gè)類別分類精度分布于[086,098]之間,召回率分布于[086,097]之間,F(xiàn)1測(cè)度分布于[086,097]之間,均達(dá)到較好的分類效果;對(duì)于整體分類效果,其分類準(zhǔn)確率高達(dá)930556%,宏平均值為09302,微平均值為09306。其它3種分類算法的分類效果相對(duì)較差。整體分類效果BAYS優(yōu)于KNN、SVM,SVM最差。不同的語(yǔ)料庫(kù),應(yīng)用不同的分類算法得到的分類效果會(huì)有差別,對(duì)于復(fù)旦中文分類語(yǔ)料庫(kù)而言,其可能更適合利用決策樹分類算法進(jìn)行文本分類。endprint
5 結(jié) 語(yǔ)
隨著文本分類領(lǐng)域的深入研究和應(yīng)用,越來(lái)越多的應(yīng)用者不得不進(jìn)行文本分類技術(shù)相關(guān)代碼的撰寫,耗費(fèi)了大量的人力物力。本文針對(duì)此種問(wèn)題,開發(fā)了文本分類系統(tǒng)平臺(tái)。基于java開源組件,整合中科院分詞器ICTCLAS、Lucene平臺(tái)以及WEKA源碼,對(duì)文本分類系統(tǒng)進(jìn)行設(shè)計(jì)和開發(fā),不僅實(shí)現(xiàn)了文本分類各個(gè)流程的操作,還向用戶提供了一個(gè)可視化操作界面。該系統(tǒng)具有可拓展性,且操作簡(jiǎn)單,用戶無(wú)需了解平臺(tái)代碼即可自行傳入數(shù)據(jù)集文件,點(diǎn)擊相應(yīng)的文本分類環(huán)節(jié)即可完成相應(yīng)操作。
除了已實(shí)現(xiàn)的功能外,系統(tǒng)平臺(tái)還存在一些有待完善和擴(kuò)展的地方,主要包括以下方面:
(1)將文本分類流程進(jìn)一步細(xì)化,為用戶帶來(lái)更多的靈活性??蓪⑽谋绢A(yù)處理操作細(xì)分為分詞、去停用詞和統(tǒng)計(jì)詞頻等方式。分詞可以提供多種分詞器,去停用詞可以使用去停用詞表和詞性篩選兩種方式,給予用戶更多的選擇。
(2)搭建Web端平臺(tái)界面,采用B/S模式提供服務(wù),提供擴(kuò)展接口,用戶可將自己設(shè)計(jì)的特征選擇方法、特征權(quán)重計(jì)算方法以及分類算法等嵌入平臺(tái),進(jìn)行對(duì)比實(shí)驗(yàn),有助于同行交流,了解最新的算法改進(jìn)研究及進(jìn)展。
(3)在現(xiàn)有系統(tǒng)UI的基礎(chǔ)上,進(jìn)一步優(yōu)化用戶界面,在保證平臺(tái)實(shí)用性的同時(shí),使平臺(tái)更具美觀性、吸引更多用戶。
(4)支持多種語(yǔ)言,將平臺(tái)推向國(guó)際化。
參考文獻(xiàn)
[1]蘇新寧.信息檢索理論與技術(shù)[M].北京:科學(xué)技術(shù)文獻(xiàn)出版社,2004:273-307.
[2]Elsayed E,Eldahshan K,Tawfeek S.Automatic evaluation technique for certain types of open questions in semantic learning systems[J].Human-centric Computing and Information Sciences,2013,3(1):1-15.
[3]Sarkar K.Automatic single document text summarization using key concepts in documents[J].Journal of information processing systems,2013,9(4):602-620.
[4]Guo X,Sun H,Zhou T,et al.SAW Classification Algorithm for Chinese Text Classification[J].Sustainability,2015,7(3):2338-2352.
[5]馬海兵,畢久陽(yáng),郭新順.文本分類方法在網(wǎng)絡(luò)輿情分析系統(tǒng)中的應(yīng)用研究[J].情報(bào)科學(xué),2015,33(5):97-101.
[6]Cabena P,Choi H H,Kim I S,et al.Intelligent Miner for Data Applications Guide[J].IBM RedBook SG24-5252-00,1999.
[7]Bird S.NLTK:the natural language toolkit[C]∥Proceedings of the COLING/ACL on Interactive presentation sessions.Association for Computational Linguistics,2006:69-72.
[8]陳慧萍,林莉莉,王建東,等.WEKA數(shù)據(jù)挖掘平臺(tái)及其二次開發(fā)[J].計(jì)算機(jī)工程與應(yīng)用,2009,44(19):76-79.
[9]Qiu X,Zhang Q,Huang X.FudanNLP:A Toolkit for Chinese Natural Language Processing[C]∥ACL(Conference System Demonstrations),2013:49-54.
[10]NLPIR漢語(yǔ)分詞系統(tǒng)[EB/OL].http:∥ictclas.nlpir.org,2015-05-24.
[11]DRAP文本分類系統(tǒng)簡(jiǎn)介[EB/OL].http:∥www.searchforum.org.cn/tansongbo/software.htm,2015-05-24.
[12]Uysal AK,Gunal S.The impact of preprocessing on text classification[J].Information Processing & Management,2014,50(1):104-112.
[13]肖可,奉國(guó)和.1999-2008年國(guó)內(nèi)文本分類研究文獻(xiàn)計(jì)量分析[J].情報(bào)學(xué)報(bào),2010,29(4):679-687.
[14]鄭偉,呂建新,張建偉.文本分類中特征預(yù)抽取方法研究[J].情報(bào)科學(xué),2011,29(1):86-88,92.
[15]Salton G,Buckley B.Term-weighting Approaches inAutomatic Text Retrieval[J].Information Processing & Management,1998,24(5):513-523.
[16]中大極天智能信息處理實(shí)驗(yàn)室[EB/OL].http:∥iipl.sysu.edu.cn/,2015-05-24.
(本文責(zé)任編輯:郭沫含)endprint