本發(fā)明屬于大數(shù)據(jù)文本分析技術(shù)領(lǐng)域,具體涉及一種通過(guò)CHI算法提取每類文本的特征詞、TFIDF算法實(shí)現(xiàn)文本的向量化表示以及樸素貝葉斯方法訓(xùn)練分類的海量長(zhǎng)文本數(shù)據(jù)分類的分析模型的實(shí)現(xiàn)方法。
背景技術(shù):
當(dāng)今時(shí)代,是一個(gè)信息技術(shù)飛速發(fā)展的時(shí)代。隨著信息技術(shù)的發(fā)展,科學(xué)知識(shí)也在短時(shí)間內(nèi)發(fā)生了急劇的、爆炸性的增長(zhǎng),每天都有大量的信息在產(chǎn)生,全世界每年出版圖書50萬(wàn)種,每一分鐘就有一種新書出版。平均每天發(fā)表的包含新知識(shí)的論文為1.3到1.4萬(wàn)篇;登記的發(fā)明創(chuàng)造專利每年超過(guò)30萬(wàn)件,平均每天有800-900件專利問(wèn)世。進(jìn)二十年來(lái),每年形成的文件資料的頁(yè)數(shù)都在數(shù)以億計(jì)的增加。同時(shí),伴隨著Internet的迅猛發(fā)展,網(wǎng)站和網(wǎng)頁(yè)數(shù)也在迅速增長(zhǎng),大約每年翻一番。據(jù)估計(jì),目前全世界網(wǎng)頁(yè)數(shù)已高達(dá)2000億,而Google宣稱其已索引250億網(wǎng)頁(yè)。從這些統(tǒng)計(jì)數(shù)字可以看出,我們被淹沒(méi)在一個(gè)多么浩大的信息海洋中!然而人們?cè)絹?lái)越感覺(jué)無(wú)法快速找到需要的知識(shí)。這就是所謂的“信息是豐富的,知識(shí)是貧乏的”。
針對(duì)目前網(wǎng)絡(luò)信息大部分都是以文本形式存在的狀況,自動(dòng)文本分類技術(shù)作為處理和組織大量文本的關(guān)鍵技術(shù),受到了廣泛關(guān)注。目前的對(duì)于文本分類的工具,有兩個(gè)大的方向:第一個(gè)方向是基于語(yǔ)義的,在分類算法的初期階段,語(yǔ)義算法得到了許多研究者的青睞,在進(jìn)行分類時(shí)充分考慮了一些語(yǔ)言中的語(yǔ)法結(jié)構(gòu),比如詞語(yǔ)之間的位置關(guān)系,進(jìn)行語(yǔ)句之間的相似度比較從而得到某個(gè)未知類別文章的類別,但是這類算法比較缺乏堅(jiān)實(shí)的理論基礎(chǔ),不存在明確的評(píng)價(jià)標(biāo)準(zhǔn)且在實(shí)際應(yīng)用的過(guò)程中表現(xiàn)越來(lái)越不能滿足實(shí)際需求。因此,近些年,大部分的關(guān)于文本分類的研究是基于統(tǒng)計(jì)的分類算法研究,基于統(tǒng)計(jì)的分類算法大多具有嚴(yán)密的理論證明,并且在實(shí)際應(yīng)用時(shí)的效果明顯優(yōu)于語(yǔ)義的算法。但是目前基于統(tǒng)計(jì)的分類算法也存在一些問(wèn)題,大部分的統(tǒng)計(jì)分類模型的通用性比不好,只能在一些特定的情況下表現(xiàn)出來(lái)較為優(yōu)秀的性能,并不通用;另外現(xiàn)在的統(tǒng)計(jì)分類分析模型大部分都是基于單個(gè)處理機(jī)的,這樣模型對(duì)于目前的海量數(shù)據(jù)來(lái)講,是扼需解決的一個(gè)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)統(tǒng)計(jì)分類模型的這兩個(gè)問(wèn)題,本發(fā)明提供了相應(yīng)的解決方法來(lái)應(yīng)對(duì)目前的實(shí)際分類的需求,提出采用一種通過(guò)CHI算法提取每類文本的特征詞,并通過(guò)計(jì)算所有類別的特征詞集的集合交運(yùn)算得到后續(xù)文本分類的詞向量空間,可以一方面有效降低文本分類時(shí)每篇文章的詞向量空間的維度,降低文本分類計(jì)算的時(shí)間復(fù)雜度,提升算法效率,滿足大數(shù)據(jù)背景下海量長(zhǎng)文本分類時(shí)的性能需求。同時(shí)又可以最大程度地減少由于降低向量空間維度數(shù)而造成分類準(zhǔn)確性降低。TFIDF算法實(shí)現(xiàn)文本的向量化表示以及樸素貝葉斯方法訓(xùn)練分類的方法,不僅能夠高效快速的對(duì)訓(xùn)練樣本進(jìn)行特征選取,也能夠準(zhǔn)確的對(duì)待分類文本進(jìn)行分類。
根據(jù)本發(fā)明的第一個(gè)方面,提出了一種新的基于VSM的統(tǒng)計(jì)分類模型,將文本進(jìn)行向量化表示。因?yàn)橹苯訉?duì)自然語(yǔ)言進(jìn)行處理的情況過(guò)于復(fù)雜,很難用具體的算法確定文本之間的相關(guān)關(guān)系,不僅算法的設(shè)計(jì)上會(huì)是十分復(fù)雜,而且文本的處理時(shí)間上也會(huì)是一種災(zāi)難。本發(fā)明提出的這種基于VSM的統(tǒng)計(jì)分類模型,不僅能夠從形式上大大簡(jiǎn)化對(duì)于自然語(yǔ)言的處理難度,還能提高對(duì)文本整體分類效率,保證很好的適用于海量文本數(shù)據(jù)的處理需求。在VSM的框架之下,本發(fā)明采用了特征選擇、文本的向量化表示、基于統(tǒng)計(jì)的分類算法相結(jié)合的框架體系結(jié)構(gòu),能夠很好的解決海量文本數(shù)據(jù)分類的問(wèn)題。其中特征選擇過(guò)程,通過(guò)引入了改進(jìn)后的CHI算法首選對(duì)訓(xùn)練集樣本進(jìn)行計(jì)算,得到訓(xùn)練樣本中每類文本的N個(gè)代表性關(guān)鍵詞。再通過(guò)對(duì)所有類別文本各自的N個(gè)代表性關(guān)鍵詞進(jìn)行集合交集運(yùn)算,最終得到低維度高可代表性的特征向量空間。本發(fā)明提出的向量空間模型簡(jiǎn)化了對(duì)長(zhǎng)文本的處理過(guò)程,大大節(jié)省了文本占用的空間資源,同時(shí)也能夠?qū)⒈疚闹g的關(guān)系量化的表示,較好的節(jié)約了文本的處理時(shí)間;文本的向量化過(guò)程和基于統(tǒng)計(jì)的分類算法過(guò)程均采用了分布式處理框架來(lái)完成,spark分布式計(jì)算框架適應(yīng)目前的對(duì)于海量文本的處理的時(shí)間效率的需求。并且本模型中的每一步所采用的具體的算法設(shè)計(jì)具有很好的通用性,高效性。
本發(fā)明的第二方面,本發(fā)明采用基于HanLP自然語(yǔ)言處理工具中的標(biāo)準(zhǔn)分詞器進(jìn)行分詞,HanLP工具的標(biāo)準(zhǔn)分詞器相比于NLP分詞工具來(lái)說(shuō),分詞準(zhǔn)確率高;相較于IK分詞工具該分詞器不僅具有更高的準(zhǔn)確性,而且還能夠支持詞性標(biāo)注功能,相比CRF分詞工具而言,在分詞性能上而言,更突出了明顯的優(yōu)勢(shì)。并且本發(fā)明在原有HanLP自然語(yǔ)言處理包的基礎(chǔ)上,擴(kuò)展了多個(gè)詞典,使得分詞效果無(wú)論從準(zhǔn)確性還是性能方面都有了較大的提高。
本發(fā)明的第三個(gè)方面,采用是基于CHI卡方檢驗(yàn)的特征選擇算法,并進(jìn)行了算法的優(yōu)化。原始CHI的計(jì)算公式是基于文檔頻率(即某個(gè)詞語(yǔ)在文本分類訓(xùn)練集中的文檔出現(xiàn)頻率)計(jì)算CHI值,選出每個(gè)類別下的最高的N個(gè)值,進(jìn)行特征選擇。但是在經(jīng)過(guò)CHI算法選擇出來(lái)的詞語(yǔ),經(jīng)過(guò)人工檢查,發(fā)現(xiàn)在某些類別中,會(huì)出現(xiàn)一些對(duì)特征詞所在類別代表性不是很強(qiáng)的詞,這類詞不僅不會(huì)對(duì)文本分類帶來(lái)貢獻(xiàn),還會(huì)降低文本分類的準(zhǔn)確率,因此本發(fā)明對(duì)原始的CHI特征選擇算法進(jìn)行了改進(jìn),將其改造為基于詞頻的CHI值進(jìn)行計(jì)算,特征選擇結(jié)果經(jīng)過(guò)人工識(shí)別,詞語(yǔ)的代表性大大提高,并且在之后的測(cè)試中,分類的正確率相比于原始的CHI算法提高了大約3%。
本發(fā)明的第四個(gè)階段對(duì)于文本的向量化的表示和分類算法均采用基于spark的分布式框架體系結(jié)構(gòu)。spark分布式計(jì)算框架適應(yīng)目前的對(duì)于海量文本的處理的時(shí)間效率的需求。并且本模型中的每一步所采用的具體的算法設(shè)計(jì)具有很好的通用性,高效性。因此本發(fā)明采用了目前在業(yè)界廣泛認(rèn)可的spark并行計(jì)算處理工具,來(lái)解決問(wèn)題目前的單機(jī)串行處理方式速度極慢的問(wèn)題。
本發(fā)明的第五個(gè)方面,在特征選擇過(guò)程和之后的文本向量化的表示過(guò)程中,進(jìn)行了優(yōu)化。一般的分類模型在特征選擇的功能中,一般都會(huì)進(jìn)行詞性過(guò)濾的功能,一般大部分的分類模型都是采用了只保留名詞的方法,即選擇出來(lái)的特征詞都是名詞,并且在之后的應(yīng)用TFIDF文本向量化的過(guò)程中,并沒(méi)有詞性過(guò)濾這一過(guò)程。本發(fā)明對(duì)于這兩個(gè)功能進(jìn)行了優(yōu)化。首先是,文本的特征詞過(guò)濾過(guò)程,采用了保留名詞+動(dòng)詞+形容詞的方法。其次,在文本的向量化表示過(guò)程中同樣采用了只保留名詞+動(dòng)詞+形容詞的方法。經(jīng)過(guò)之后的實(shí)際測(cè)試過(guò)程中發(fā)現(xiàn),這樣的處理方式提高了分類的準(zhǔn)確率。
本發(fā)明的優(yōu)點(diǎn)在于:
總之,本發(fā)明提出的支持海量長(zhǎng)文本數(shù)據(jù)分類的分析模型能夠在準(zhǔn)確性和性能上都達(dá)到一個(gè)較高的水平。本發(fā)明在訓(xùn)練語(yǔ)料庫(kù)充足的情況下能夠有效的對(duì)未知類別文本進(jìn)行準(zhǔn)確、高效的類別劃分。本發(fā)明采用HanLP分詞工具中的標(biāo)準(zhǔn)分詞能夠準(zhǔn)確的將訓(xùn)練文本數(shù)據(jù)、待分類文本數(shù)據(jù)進(jìn)行有效的分詞,并采用改進(jìn)的CHI算法準(zhǔn)確的為每一類文本選取其所屬特征詞,并通過(guò)計(jì)算所有類別的特征詞集的集合交運(yùn)算得到后續(xù)文本分類的詞向量空間,可以一方面有效降低文本分類時(shí)每篇文章的詞向量空間的維度,降低文本分類計(jì)算的時(shí)間復(fù)雜度,提升算法效率,滿足大數(shù)據(jù)背景下海量長(zhǎng)文本分類時(shí)的性能需求。同時(shí)又可以最大程度地減少由于降低向量空間維度數(shù)而造成分類準(zhǔn)確性降低。這為文本分類奠定了良好的基礎(chǔ);采用TFIDF算法能夠有效消除文本與向量之間的屏障,很好的將每一文本進(jìn)行了向量化的表示,最后,采用較為經(jīng)典的樸素貝葉斯分類算法,能夠準(zhǔn)確的將文本進(jìn)行較好的訓(xùn)練,實(shí)現(xiàn)長(zhǎng)文本的準(zhǔn)確的分類。通過(guò)本發(fā)明提出的支持海量長(zhǎng)文本數(shù)據(jù)分類的分析模型,在長(zhǎng)文本分類、信息檢索、書籍統(tǒng)計(jì)、輿情分詞等領(lǐng)域具有廣泛的應(yīng)用前景。
附圖說(shuō)明
圖1為本發(fā)明的分類模型的訓(xùn)練流程;
圖2為本發(fā)明的分類模型的測(cè)試流程;
具體實(shí)施方式
下面將結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明。
本發(fā)明提供一種支持海量長(zhǎng)文本數(shù)據(jù)分類的分析模型及其實(shí)現(xiàn)方法,所述分析模型采用了基于統(tǒng)計(jì)的文本分類算法,該文本分類算法中采用向量空間模型(VSM),對(duì)CHI算法中提取的類別特征詞根據(jù)TFIDF算法實(shí)現(xiàn)文本的向量化表示,采用樸素貝葉斯方法對(duì)語(yǔ)料庫(kù)進(jìn)行訓(xùn)練,實(shí)現(xiàn)了海量長(zhǎng)文本數(shù)據(jù)分類的分析模型。
所述的分析模型通過(guò)如下步驟實(shí)現(xiàn):
第一步,建立基于VSM的統(tǒng)計(jì)分類模型,將文本進(jìn)行向量化表示。
因?yàn)橹苯訉?duì)自然語(yǔ)言進(jìn)行處理的情況過(guò)于復(fù)雜,很難用具體的算法確定文本之間的相關(guān)關(guān)系,不僅算法的設(shè)計(jì)上會(huì)是十分復(fù)雜,而且文本的處理時(shí)間上也會(huì)是一種災(zāi)難。本發(fā)明提出的這種基于VSM的統(tǒng)計(jì)分類模型,不僅能夠從形式上大大簡(jiǎn)化對(duì)于自然語(yǔ)言的處理難度,還能提高對(duì)文本整體分類效率,保證很好的適用于海量文本數(shù)據(jù)的處理需求。在VSM的框架之下,本發(fā)明采用了特征選擇、文本的向量化表示、基于統(tǒng)計(jì)的分類算法相結(jié)合的框架體系結(jié)構(gòu),能夠很好的解決海量文本數(shù)據(jù)分類的問(wèn)題。其中特征選擇過(guò)程,簡(jiǎn)化了對(duì)長(zhǎng)文本的處理過(guò)程,大大節(jié)省了文本占用的空間資源,同時(shí)也能夠?qū)⒈疚闹g的關(guān)系量化的表示,較好的節(jié)約了文本的處理時(shí)間;文本的向量化過(guò)程和基于統(tǒng)計(jì)的分類算法過(guò)程均采用了分布式處理框架來(lái)完成,spark分布式計(jì)算框架適應(yīng)目前的對(duì)于海量文本的處理的時(shí)間效率的需求。并且所述的基于VSM的統(tǒng)計(jì)分類模型中的每一步所采用的具體的算法設(shè)計(jì)具有很好的通用性,高效性。
在本發(fā)明所設(shè)計(jì)的分類模型中,文本的向量空間通過(guò)計(jì)算訓(xùn)練文本每類的代表性特征詞來(lái)獲得。分類模型所使用的文本向量空間等于所有類別訓(xùn)練文本基于CHI算法得到的特征詞的集合交集?;诟倪M(jìn)后的CHI算法保證了每類文本特征詞的代表性,從而最大限度地降低了由于文本特征向量維度降低而導(dǎo)致分類準(zhǔn)確性降低。同時(shí)達(dá)到了對(duì)向量空間維度降維作用,使文本分類過(guò)程性能大大提升。
第二步,采用基于HanLP自然語(yǔ)言處理工具中的標(biāo)準(zhǔn)分詞器進(jìn)行分詞。
HanLP自然語(yǔ)言處理工具的標(biāo)準(zhǔn)分詞器相比于NLP分詞工具來(lái)說(shuō),分詞準(zhǔn)確率高;相較于IK分詞工具該標(biāo)準(zhǔn)分詞器不僅具有更高的準(zhǔn)確性,而且還能夠支持詞性標(biāo)注功能,相比CRF分詞工具而言,在分詞性能上而言,更突出了明顯的優(yōu)勢(shì)。并且本發(fā)明在原有HanLP自然語(yǔ)言處理包的基礎(chǔ)上,擴(kuò)展了多個(gè)詞典,使得分詞效果無(wú)論從準(zhǔn)確性還是性能方面都有了較大的提高。
第三步,采用基于CHI卡方檢驗(yàn)的特征選擇算法,并進(jìn)行了算法的優(yōu)化。
原始CHI的計(jì)算公式是基于文檔頻率(即某個(gè)詞語(yǔ)在文本分類訓(xùn)練集中的文檔出現(xiàn)頻率)計(jì)算CHI值,選出每個(gè)類別下的最高的N個(gè)值,進(jìn)行特征選擇。但是在經(jīng)過(guò)CHI算法選擇出來(lái)的詞語(yǔ),經(jīng)過(guò)人工檢查,發(fā)現(xiàn)在某些類別中,會(huì)出現(xiàn)一些對(duì)特征詞所在類別代表性不是很強(qiáng)的詞,這類詞不僅不會(huì)對(duì)文本分類帶來(lái)貢獻(xiàn),還會(huì)降低文本分類的準(zhǔn)確率,因此本發(fā)明對(duì)原始的CHI特征選擇算法進(jìn)行了改進(jìn),將其改造為基于詞頻的CHI值進(jìn)行計(jì)算,特征選擇結(jié)果經(jīng)過(guò)人工識(shí)別,詞語(yǔ)的代表性大大提高,并且在之后的測(cè)試中,分類的正確率相比于原始的CHI算法提高了大約3%。
第四步,對(duì)于文本的向量化的表示和分類算法均采用基于spark的分布式框架體系結(jié)構(gòu)。spark分布式計(jì)算框架適應(yīng)目前的對(duì)于海量文本的處理的時(shí)間效率的需求。并且本模型中的每一步所采用的具體的算法設(shè)計(jì)具有很好的通用性,高效性。因此本發(fā)明采用了目前在業(yè)界廣泛認(rèn)可的spark并行計(jì)算處理工具,來(lái)解決問(wèn)題目前的單機(jī)串行處理方式速度極慢的問(wèn)題。
第五步,在特征選擇過(guò)程和之后的文本向量化的表示過(guò)程中,進(jìn)行了優(yōu)化。一般的分類模型在特征選擇的功能中,一般都會(huì)進(jìn)行詞性過(guò)濾的功能,一般大部分的分類模型都是采用了只保留名詞的方法,即選擇出來(lái)的特征詞都是名詞,并且在之后的應(yīng)用TFIDF文本向量化的過(guò)程中,并沒(méi)有詞性過(guò)濾這一過(guò)程。本發(fā)明對(duì)于這兩個(gè)功能進(jìn)行了優(yōu)化。首先是,文本的特征詞過(guò)濾過(guò)程,采用了保留名詞+動(dòng)詞+形容詞的方法。其次,在文本的向量化表示過(guò)程中同樣采用了只保留名詞+動(dòng)詞+形容詞的方法。經(jīng)過(guò)之后的實(shí)際測(cè)試過(guò)程中發(fā)現(xiàn),這樣的處理方式提高了分類的準(zhǔn)確率。
以下將給出本發(fā)明分析模型的具體實(shí)施過(guò)程的一個(gè)實(shí)例。
首先,給出CHI算法的配置文件中的內(nèi)容。
#待處理文本的統(tǒng)一編碼格式
processor.common.charset=UTF-8
#分詞器類名稱:
processor.document.analyzer.class=com.scistor.scitextminner.featureextractor.analyzer.HanLPAnalyzer
#停用詞詞表存放路徑
processor.document.analyzer.stopwords.dir=/mnt/sdg1/document_analysis/stopwords
#分詞結(jié)果中的過(guò)濾類的名稱
processor.document.filter.classes=com.scistor.scitextminner.featureextractor.filter.LexicalCategoryFilter,com.scistor.scitextminner.featureextractor.filter.SingleWordTermFilter,com.scistor.scitextminner.featureextractor.filter.StopwordsTermFilter#需要保留的詞性的列表
processor.document.filter.kept.lexical.categories=n,nh,nhm,nhd,nf,gi,gg,nmc,nit,ntcf,nto,ntu,nts,nm,nb,nba,nbc,nbp,gbc,gb,gc,gp,gm,zg,v,vd,vn,vx,vi,vl,vg,a,ad,an,z
#,vn,ns,nt
#每一類所要選出來(lái)的詞的個(gè)數(shù)
processor.each.label.kept.term.count=3000
#每一類的CHI的詞的列表的存放路徑
procesor.dataset.label.chi.term.vector.file=/mnt/sdg1/document_analysis/mergedCHIvector/labelCHIword.txt
#將每一列的CHI詞合并后的文件的存放路徑
processor.dataset.chi.term.vector.file=/mnt/sdg1/document_analysis/mergedCHIvector/mergedCHI.txt
#保留訓(xùn)練文本的擴(kuò)展名
processor.dataset.file.extension=.txt
#用于存放文本分類的數(shù)字代表類別文件的存放路徑
processor.dataset.label.vector.file=/mnt/sdg1/document_analysis/labelID/labelID.txt
#用于存放訓(xùn)練文本的路徑
processor.dataset.train.input.root.dir=/mnt/sdg1/document_analysis/train12007
修改完配置文件中的內(nèi)容后,就可以執(zhí)行CHI的選詞過(guò)程。
接下來(lái)是對(duì)于文本的訓(xùn)練與預(yù)測(cè)實(shí)施過(guò)程,如圖1、圖2所示。
#這是之前CHI生成的詞語(yǔ)的txt
processor.dataset.chi.term.vector.file=/mnt/sdg1/document_analysis/mergedCHI.txt
#這是詞性列表,只計(jì)算名詞,形容詞,動(dòng)詞
processor.document.filter.kept.lexical.categories=n,nh,nhm,nhd,nf,gi,gg,nmc,nit,ntcf,nto,ntu,nts,nm,nb,nba,nbc,nbp,gbc,gb,gc,gp,gm,zg,v,vd,vn,vx,vi,vl,vg,a,ad,an,z
#這是HDFS上的一個(gè)路徑,程序運(yùn)行中間會(huì)用到
processor.dataset.predict.dir=/tmp/zhang/predict/
#這是訓(xùn)練語(yǔ)料庫(kù)的路徑,HDFS
processor.dataset.train.input.root.train.dir=/tmp/zhang/train1
#這是測(cè)試語(yǔ)料庫(kù)的路徑,HDFS
processor.dataset.test.input.root.test.dir=/tmp/zhang/test1
#這是預(yù)測(cè)結(jié)果的TXT,每一行表示一個(gè)文本,每行兩列,第一列表示原始類別,第二列表示最終類別,這兩列都是數(shù)字
processor.dataset.test.predict.txt.file=/mnt/sdg1/document_analysis/predict/predictresult.txt
#這是上面文件加了一個(gè)測(cè)試預(yù)料庫(kù)的文件的路徑的預(yù)測(cè)結(jié)果文件
processor.dataset.test.predict.path.txt.file=/mnt/sdg1/document_analysis/predict/predictresultcocpath.txt
#這是預(yù)測(cè)文件的數(shù)字所表示的文件類別
processor.dataset.label.txt.file=/mnt/sdg1/document_analysis/predict/labelID.txt
配置完之后就可以進(jìn)行文本分類的訓(xùn)練與預(yù)測(cè)過(guò)程。
應(yīng)該注意到并理解,在不脫離后附的權(quán)利要求所要求的本發(fā)明的精神和范圍的情況下,能夠?qū)ι鲜鲈敿?xì)描述的本發(fā)明做出各種修改和改進(jìn)。因此,要求保護(hù)的技術(shù)方案的范圍不受所給出的任何特定示范教導(dǎo)的限制。