程元堃 蔣 言 程 光
(1.武漢郵電科學(xué)研究院 武漢 430074)(2.南京烽火軟件科技有限公司 南京 210019)(3.東南大學(xué)計算機(jī)科學(xué)與工程學(xué)院 南京 210019)
互聯(lián)網(wǎng)時代的來臨伴隨著信息量的急速增長,作為信息的載體,互聯(lián)網(wǎng)上每時每刻都在產(chǎn)生大量主題各異的文本,且數(shù)據(jù)量巨大。網(wǎng)站主題分類能夠自動地將這些龐大的網(wǎng)站文本按照指定的類別進(jìn)行規(guī)范化的梳理,而對于訪問這些海量信息的人來說,了解信息的類別可以幫助人們更好地了解自身閱讀的偏好。
目前,國內(nèi)外對文本分類的研究十分關(guān)注,文本處理呈現(xiàn)的方式和分類器算法的選擇一直是文本分類的兩大技術(shù)難點(diǎn)及熱點(diǎn)[1]。當(dāng)前使用最廣泛文本呈現(xiàn)方法幾乎都是基于詞袋法(Bag-of-Word,BOW)。詞袋法將文本看成是若干個詞的集合,不考慮其中詞的順序和語法、句法、語義等要素,假定文本中每個詞的出現(xiàn)都是獨(dú)立的,不依賴其他詞是否出現(xiàn)。它將一篇文本表示成為與訓(xùn)練文本單詞維度相同的向量,向量中每個位置對應(yīng)的值即是該位置對應(yīng)的詞在文本中出現(xiàn)的次數(shù),并且伴隨著新單詞的增加,向量的維度也會相應(yīng)增加。雖然詞袋法在傳統(tǒng)的分類器上分類效果不錯,比如:回歸模型、KNN、樸素貝葉斯分類、決策樹、支持向量機(jī)(SVM)等,但它依然不可避免地存在幾個主要問題:1)維度較高,容易造成“維度災(zāi)難”,而且如果單詞在訓(xùn)練集中沒有出現(xiàn),則該單詞在測試集中出現(xiàn)時就無法成為該文本的特征詞;2)訓(xùn)練生成的文本向量非常稀疏,不利于進(jìn)行一些自然語言處理任務(wù);3)詞袋法僅僅就是將文本看作若干詞的集合,沒有語義方面的關(guān)系,詞與詞之間看作是相互獨(dú)立的[3~4]。
隨著近年來深度學(xué)習(xí)的發(fā)展,基于神經(jīng)網(wǎng)絡(luò)模型的特征詞抽取,即“詞向量”代表文本的方式越來越受到學(xué)術(shù)界的關(guān)注。Distributed representation最早由Hinton在1986年提出[5]。其基本思想是通過訓(xùn)練將每個詞映射成K維實(shí)數(shù)向量(K一般為模型中的超參數(shù)),通過詞之間的距離(比如cosine相似度、歐氏距離等)來判斷它們之間的語義相似度,而word2vec使用的就是這種Distributed representation的詞向量表示方式[6~8]。將詞向量應(yīng)用于自然語言處理非常成功,已被廣泛應(yīng)用于詞性分析、找相似詞、關(guān)鍵詞聚類與分類等。
一個中心主題突出的網(wǎng)站內(nèi)容由很多語義相似的詞構(gòu)成,基于此,如何將能表示詞語語義的詞向量應(yīng)用在網(wǎng)站主題類別的判斷上是技術(shù)難點(diǎn)。本文提出一種基于word2vec的網(wǎng)站主題分類方法,將詞語之間語義相似度轉(zhuǎn)化為詞向量的空間距離,并在此基礎(chǔ)上根據(jù)文本間的相似距離進(jìn)行分類。
整體方案分為訓(xùn)練和測試、調(diào)參兩個過程,具體實(shí)現(xiàn)過程中考慮到文本本身會存在語義相交的情況,需要對文本進(jìn)行邊界點(diǎn)過濾的數(shù)據(jù)預(yù)處理,本文采用DBSCAN聚類算法進(jìn)行噪音點(diǎn)去噪。詳細(xì)流程如圖1所示。
圖1 基于word2vec的主題分類過程
本文提出基于word2vec的網(wǎng)站主題分類的方法實(shí)現(xiàn)步驟如下:
1)基于維基百科中文語料庫,使用word2vec訓(xùn)練得到詞向量模型model。
2)定義網(wǎng)站主題分類的八大類別,列舉各主題特征詞樣本,在1)中獲取與特征詞相似度較高的詞作為補(bǔ)充,擴(kuò)充各主題特征詞。
3)計算各個主題特征詞的向量均值,將其作為各主題的中心詞向量,并對各主題中心詞向量進(jìn)行評估,保證主題之間余弦相似度不要太高,否則重復(fù)2)對特征詞進(jìn)行調(diào)整。
定義1 主題i的關(guān)鍵詞集合為Ci={w1,w2,…,wn},其中wk(1≤k≤n)表示代表i類主題的某個關(guān)鍵詞,在model中獲取每個特征詞的詞向量viwk=(,,…,),其中K表示語料庫中詞映射到空間向量的維度,因此,可以得到每個主題樣本的詞向量集合:
得到一個(n*K)的矩陣:
計算向量均值,得到主題i的中心詞向量:
4)對于待測網(wǎng)站文本,分詞后在model中獲取每個詞的詞向量;采用余弦相似度作為距離評估方法,使用DBSCAN聚類算法對分詞結(jié)果進(jìn)行去噪處理,得到質(zhì)量提升的特征詞集合。
5)針對每個主題的中心詞向量,計算它與特征詞集合中每個詞的詞向量的余弦相似度,最終結(jié)果取平均,作為該網(wǎng)站與各主題的余弦相似度,最終取余弦相似度最大的類別作為該網(wǎng)站的所屬主題。
定義2 待測網(wǎng)站文本內(nèi)容經(jīng)4)去噪處理后表示為T={t1,t2,…,tm},其中tj為文本中某詞,獲取其詞向量vtj={y1,y2,…,yK},計算詞和主題i中心詞向量VVi的余弦相似度,有
據(jù)此,得到該待測網(wǎng)站與主題i的余弦相似度:
最后,取max(dis(CiT))時i的值作為待測網(wǎng)站T最終的所屬分類主題。
在維基百科數(shù)據(jù)源上下載中文版本維基百科數(shù)據(jù),數(shù)據(jù)格式為XML。利用gensim里的維基百科處理類WikiCorpus,通過get_texts將維基里的每篇文章轉(zhuǎn)換化一行文本,并且去掉了標(biāo)點(diǎn)符號等內(nèi)容。處理后會發(fā)現(xiàn)文本存在中文繁簡體情況,本文采用GitHub上的開源中文繁簡體轉(zhuǎn)換項(xiàng)目OpenCC,該項(xiàng)目翻譯準(zhǔn)確,使用方便。將文本中的繁體字轉(zhuǎn)化為簡體字后,最后對文本進(jìn)行分詞。采用jieba分詞系統(tǒng),結(jié)巴分詞基于Trie樹結(jié)構(gòu)實(shí)現(xiàn)高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構(gòu)成的有向無環(huán)圖(DAG),采用了動態(tài)規(guī)劃查找最大概率路徑,找出基于詞頻的最大切分組合,對于未登錄詞,采用了基于漢字成詞能力的HMM模型,使用了Viterbi算法[9]。由于中文和英文不同,單獨(dú)的字大多數(shù)并不能獨(dú)立表達(dá)意思,因此分詞過程中需過濾篩選出詞長大于等于2的詞。
NLP中有兩種常見的詞的表示方法,分別是One-hot Representation和Distributed Representati-on。One-hot Representation把每個詞表示為一個很長的向量,這個向量的維度就是詞表的大小,其中絕大多數(shù)為0,只有一個維度的值為1,這個維度就代表了當(dāng)前的詞。但是在Deep Learning中一般用到的詞向量并不是上述的One-hot Representatio-n,而是用后者表示的一種低維實(shí)數(shù)向量,這種方法的優(yōu)勢在于讓語義上相關(guān)或者相似的詞,在距離上更近了,而且也不會造成“維度災(zāi)難”。
Word2vec使用Distributed Representation的詞向量表示,包含CBOW(Continuous bag-of-words,連續(xù)詞袋模型)和Skip-Gram兩種模型。Word2vec通過訓(xùn)練,把文本內(nèi)容的處理簡化為K維向量空間中的向量運(yùn)算,而向量空間上的相似度可以用來表示文本語義上的相似度。如圖2所示通過PCA降維在二維空間中展示詞向量分布及其語義之間的距離關(guān)系。
本文采用基于Hierarchical Softmax算法的CBOW模型。由圖3可見,模型包含三層:輸入層、投影層和輸出層。CBOW模型是在已知當(dāng)前詞wt的上下文wt-2,wt-1,wt+1,wt+2的前提下預(yù)測當(dāng)前詞wt。
圖2 二維空間中的詞向量
圖3 CB OW模型
已知基于神經(jīng)網(wǎng)絡(luò)的語言模型的目標(biāo)函數(shù)通常取為如下對數(shù)似然函數(shù):
其中的關(guān)鍵是條件概率函數(shù) p(w|Context(w))的構(gòu)造。Hierarchical Softmax的基本思想是對于詞典D中的任意詞w,Huffman樹中必存在一條從根結(jié)點(diǎn)到詞w對應(yīng)結(jié)點(diǎn)的路徑Pw(且這條路徑是唯一的)。路徑Pw上存在lw-1個分支,將每個分支看做一次二分類,每一次分類就產(chǎn)生一個概率,將這些概率乘起來,就是所需的 p(w|Context(w))。因此CBOW的優(yōu)化目標(biāo)函數(shù)為
利用隨機(jī)梯度上升法對其進(jìn)行優(yōu)化。
網(wǎng)站文本經(jīng)分詞后得到一個表征該文本的詞列表,每個詞在model中有對應(yīng)的詞向量,其中部分詞與詞之間語義上存在偏差較大的情況,此時以余弦距離作為評估標(biāo)準(zhǔn),對詞列表中的每個詞采用DBSCAN算法對詞向量進(jìn)行聚類,得到能夠有效表達(dá)與網(wǎng)站文本語義相近的詞向量聚類結(jié)果[10~13],這樣有利于提高網(wǎng)站文本的特征詞質(zhì)量,然后再計算與各主題中心詞向量的余弦相似度,為得到良好的分類模型性能奠定基礎(chǔ)。
以體育主題為例,文本“即將于15日前往浙江參加世界女籃聯(lián)賽中國站比賽的中國女籃進(jìn)行了公開訓(xùn)練課,小區(qū)發(fā)生群毆?!狈衷~聚類前后結(jié)果如表1所示。
表1 DBSCAN聚類效果
從表1可看出聚類前后剔除了部分語義和體育主題偏差較大的詞:15、小區(qū)、群毆、浙江,余下詞作為特征詞可以較好地表征文本的主題。
根據(jù)定義的八大主題通過網(wǎng)絡(luò)爬蟲技術(shù)獲取搜狗新聞相應(yīng)的文本數(shù)據(jù),經(jīng)過處理后得到各個主題的文檔數(shù)據(jù);按照方案設(shè)計的步驟,列舉各主題特征詞樣本,結(jié)合詞向量model中相似度較高的詞進(jìn)一步擴(kuò)充主題特征詞,相關(guān)數(shù)據(jù)情況如表2和表3所示。
表2 測試主題網(wǎng)站
本文基于word2vec和DBSCAN聚類算法對測試網(wǎng)站文本進(jìn)行實(shí)驗(yàn),其中DBSCAN聚類算法中存在半徑Eps和MinPts(在半徑Eps內(nèi)含有點(diǎn)數(shù)目的閾值)兩個參數(shù)需要根據(jù)分類結(jié)果的正確率進(jìn)行調(diào)參。
MinPts分別設(shè)置為3和自適應(yīng)值 int(log2(len(-text_list))),len(text_list)是文本分詞后詞列表的長度。
繪制MinPts兩種取值情況下分類結(jié)果正確率隨Eps變化趨勢,分別如圖4和圖5所示,由圖4和圖5可知,當(dāng)MinPts自適應(yīng)取值時的分類效果明顯好于取固定值的時候,且在Eps=0.88時,分類正確率達(dá)到了90.6%。
表3 網(wǎng)站主題特征詞
圖4 MinPts=3
圖5 MinPts=int(log2(len(text_list)))
本文基于word2vec的詞向量模型實(shí)現(xiàn)了網(wǎng)站主題分類,預(yù)先定義了八大主題,通過詞頻統(tǒng)計和計算詞中心向量的方法確定各主題的特征詞及其詞向量,即各主題的中心詞向量;采用DBSCAN聚類算法對待測網(wǎng)站進(jìn)行去噪處理,提升了網(wǎng)站文本的數(shù)據(jù)質(zhì)量,最后以余弦距離作為評估標(biāo)準(zhǔn)確定待測網(wǎng)站在給定主題中的分類結(jié)果,最終分類效果較好,正確率達(dá)到了90.6%。
相較傳統(tǒng)的貝葉斯、支持向量機(jī)(SVM)等分類器模型,該方案有效避免了數(shù)據(jù)稀疏以及詞與詞之間缺乏語義關(guān)聯(lián)造成的建模困難等問題,同時擴(kuò)充和篩選的特征詞如何更好地表征網(wǎng)站主題,這值得繼續(xù)研究。