国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于BBS-LDA的論壇主題挖掘

2020-01-15 03:23:12
浙江工業(yè)大學學報 2020年1期
關(guān)鍵詞:帖子語料文檔

(浙江工業(yè)大學 計算機科學與技術(shù)學院,浙江 杭州 310023)

如今,互聯(lián)網(wǎng)正飛速地發(fā)展,網(wǎng)絡(luò)已成為網(wǎng)民接收和傳播信息的主要途徑。通過網(wǎng)絡(luò),每個網(wǎng)民都可以在極短的時間內(nèi)了解到全國各地最新的事件,并實時地對這些事件發(fā)表自己的感想,也可以把自己了解到的事件分享給其他人。在這種形勢下,網(wǎng)絡(luò)文本的挖掘成了如今科學研究的一大熱點。如何從海量文本中提取出有價值的信息一直是一件很有挑戰(zhàn)的事情。文本不同于一般的數(shù)值型數(shù)據(jù),表示和處理都比較復(fù)雜。空間向量模型(Vector space model)把文本中的每個詞語映射到向量空間,這使得文本可以通過傳統(tǒng)的數(shù)值型數(shù)據(jù)挖掘算法來處理,不過對于海量數(shù)據(jù),會面臨維度災(zāi)難。TF-IDF[1]等方法利用了詞的詞頻信息和逆文檔頻信息,能夠快速提取文章的關(guān)鍵字,不過單純以詞頻度量詞的重要性不夠全面,而且不能夠處理同義詞的情況。近年來,主題模型在文本挖掘中得到了不錯的運用,其中最具有代表性的就是潛在狄利克雷分配(Latent Dirichlet allocation,LDA)。如今,已經(jīng)有許多針對不同語料特點改進的LDA模型被用在了情感分析、輿情控制和個性化推薦上。

對于論壇文本,因為其本身具有一些結(jié)構(gòu)化信息,使用原始的LDA模型并不能夠最大化地利用文本信息來挖掘主題。論壇里面可能會存在大量的短回復(fù)和水帖,短回復(fù)會造成詞的稀疏性,水帖會給主題挖掘帶來很多噪音,這些因素都極大地影響了LDA在論壇上的建模效果。針對論壇的這些特點,對LDA作出了改進。經(jīng)真實文本數(shù)據(jù)試驗證明,改進后的主題模型能夠提升在論壇語料上的主題挖掘能力。

1 相關(guān)工作

論壇文本因為有著天然的版塊區(qū)分,很適合針對性地挖掘一些信息。目前針對論壇文本的研究比較少,不過文本挖掘是一個比較經(jīng)典的研究問題,許多學者的研究都能夠很方便地應(yīng)用到論壇文本上。

文本摘要是文本挖掘中一個熱門的研究方向。通過多文檔摘要,可以從大量的文本中獲取相對比較重要的文本,這使得讀者能夠更加快捷地消化這些文本數(shù)據(jù)。Slamet等[2]通過TF-IDF獲取關(guān)鍵詞和詞權(quán)重,之后借助空間向量模型獲取文本之間的關(guān)系,以實現(xiàn)文本的自動摘要。劉端陽等[3]在TF-IDF的基礎(chǔ)上引入了語義詞典和詞匯鏈,能夠緩解自動摘要中同義詞冗余表達的缺點。余珊珊等[4]結(jié)合了中文的結(jié)構(gòu)特點,提出了iTextRank算法,在中文新聞的摘要上取得了不錯的效果。

對論壇進行文本摘要往往只能從大量論壇文本中抽取重要的內(nèi)容,并不能對主題進行區(qū)分。論壇的主題挖掘相對而言更加困難。潛在語義索引(Latent semantic indexing, LSI)[5]是一個可以挖掘文檔主題的方法,它是主題模型的雛形,LSI通過奇異值分解(SVD)的方法對文檔進行降維,把單詞空間映射到主題空間,通過它可以獲取最有可能代表文章主題的詞語,不過LSI計算比較復(fù)雜,而且不易針對文章的特點進行修改。Hofmann[6]提出了概率潛在語義分析(Probabilistic latent semantic analysis,PLSA),通過概率統(tǒng)計來獲取代表文檔主題的詞語,不過PLSA比較容易過擬合,泛化能力比較差。

Blei等[7]在PLSA的基礎(chǔ)上加上了先驗,提出了潛在狄利克雷分布模型(Latent Dirichlet allocation, LDA),一定程度上克服了PLSA泛化能力差的問題。LDA是一種針對離散數(shù)據(jù)的概率生成模型,也是一種由文檔、主題、詞組成的3 層貝葉斯概率模型。LDA采用了詞袋(Bag of words)的方式來描述文本,這種方式把獨立的文檔轉(zhuǎn)化成了一個個詞頻向量,從而使文本信息便于建模。詞袋法沒有考慮文檔中詞的順序信息,大大降低了問題的復(fù)雜性。

對某些語料直接應(yīng)用LDA效果不是很好,比如短文本,其原因是短文本中每個文本所含的信息量太少,詞袋間詞共現(xiàn)數(shù)太少,模型生成會遇到數(shù)據(jù)稀疏問題。有人提出了一些有效的解決方案。最簡單的方式就是把短文本拼接成長文本,Hong等[8]發(fā)現(xiàn),通過把短的Tweet文本拼接成長的文本,以長文本來訓練主題模型能夠獲取更高質(zhì)量的主題。Zhao等[9]在分析Twitter的時候,認為在大多數(shù)情況下,一條Tweet只包含一個主題,以此提出了Twitter-LDA,經(jīng)過測試,Twitter-LDA在挖掘主題的準確性上比原始的LDA提升了31%。Balikas等[10]在分析文本的時候采用了和Twitter-LDA類似的方法,在提出的Sentense LDA中,把同一個句子中的詞語歸到同一個主題。結(jié)果表明用詞袋來表示文本會丟失詞在文本段(句子或者詞組)的共現(xiàn)信息。Yan等[11]用一個新的主題模型BTM(Biterm topic model)來處理短文本,BTM直接對共現(xiàn)詞對(biterms)進行建模,通過匯聚語料中的共現(xiàn)詞實現(xiàn)對短語建模的目的,解決了詞在文檔層面共現(xiàn)的稀疏性問題。BTM被廣泛用在短信、微博等短文本主題挖掘上[12]。

根據(jù)語料的結(jié)構(gòu)和特點對主題模型進行合理改進,不僅能夠讓主題模型學習新的東西,也能夠提升主題模型的挖掘效果。Rosen-zvi等[13]提出的ATM(Author topic model)把作者信息加入到LDA,這使得模型不僅能夠從文本中挖掘主題,也能夠?qū)W習某個作者經(jīng)常寫哪些主題的文章。Lin等[14]提出了JST(Joint sentiment/Topic model)模型,JST模型在LDA模型的基礎(chǔ)上加了一層情感層,通過新增的情感層,JST能夠同時挖掘文本的主題信息和情感信息。JST被用在了電影評論上,對文本的情感分類取得了不錯的效果。Xiong等[15]提出的WSTM(Word-pair sentiment-topic model)在BTM上加入了情感層,克服了JST面對短文本效果不佳的問題。Lim等[16]通過把好友關(guān)系、主題標簽、關(guān)注和被關(guān)注信息整合到LDA中,構(gòu)建出TN(Twitter-network topic model)模型。TN模型被實驗證實能夠更有效地挖掘主題和用戶信息,被用于用戶推薦。

結(jié)合文本特點對主題建模已經(jīng)成了主流的趨勢。論壇語料最大的特點就是存在很多水帖。如果直接對論壇文本進行建模,可能達不到比較理想的效果。筆者利用論壇帖子的用戶特征,在對主題建模的同時,能夠發(fā)現(xiàn)論壇語料的無意義回復(fù)以及回復(fù)中的背景詞,更加有效地挖掘論壇主題。

2 論壇主題挖掘

2.1 論壇主題挖掘難點分析

論壇一般分版塊,每個版塊有一個大主題,比如經(jīng)濟、體育等。用戶發(fā)帖時,一般會先根據(jù)自己想發(fā)的內(nèi)容,選擇一個版塊進行發(fā)帖。帖子的主題和版塊的主題相關(guān)。對于論壇的主題挖掘,主要研究的是同一個版塊內(nèi)的主題挖掘,這樣不可避免會遇到主題相似的問題。

論壇的每個帖子包含正文和別人對帖子的一系列回復(fù)。對于一個帖子的正文和所有回復(fù),其主題分布一致,通用的主題模型并不會考慮論壇的這些特征。

論壇文本的更新非常迅速,用戶一般喜歡用比較簡單的語言描述一件事情,很少有長篇大論,所以論壇的回復(fù)一般都比較短。直接使用LDA對短文本進行分析會遇到數(shù)據(jù)稀疏的問題,導致挖掘效果不好。

論壇的口語化現(xiàn)象比較嚴重,文本中濫用標點、錯別字現(xiàn)象比較普遍,而且有些板塊(比如金融)會存在很多專有名詞,所以對于不同的論壇版塊,應(yīng)該做不同的預(yù)處理??梢园岩恍┏S玫谋磉_整理出來,加入到分詞工具的詞典里,提高分詞準確性,這一步很難做到無監(jiān)督。

論壇中存在著部分的水帖和推廣貼,這會給主題的挖掘帶來很大的噪聲。如果有一個人經(jīng)常發(fā)無意義的帖子,那么這個人新發(fā)的帖子極有可能也是無意義的??梢栽谥黝}模型中引入用戶的信息,提高主題挖掘的準確性。

2.2 BBS-LDA

根據(jù)2.1節(jié)的分析,筆者提出了BBS-LDA模型。BBS-LDA的圖模型見圖1,圖模型中所用到的符號含義見表1。

圖1 BBS-LDA的圖模型Fig.1 BBS-LDA graphical model

表1 BBS-LDA的參數(shù)含義Table 1 Parameter meaning of BBS-LDA

該模型和LDA模型一樣屬于生成模型,它假設(shè)語料是根據(jù)一定的概率分布生成的,可以據(jù)此對文本數(shù)據(jù)進行建模,得到變量之間的條件概率分布,這在此模型中具體指每個詞屬于不同主題的概率分布。圖模型表示的語料的生成過程為

1) 對于每個主題k∈[1,K]

采樣其詞分布φk~Dirichlet (β)

2) 采樣無意義的詞分布φr~Dirichlet (βr)

3) 采樣背景詞分布φb~Dirichlet (βb)

4) 對于每個用戶u∈[1,U]

采樣標記變量分布πu~Beta (γ)

采樣標記變量分布ηu~Beta (λ)

5) 對于每個帖子p∈[1,P]

采樣其主題分布θp~Dirichlet (α)

對于帖子中的每個句子s∈[1,Sp]

采樣標記變量rp,s~Bernoulli (πu)

如果rp,s=1

采樣該句子的主題zp,s~Multinomial (θp)

對于每個詞w∈[1,Ns]

采樣標記變量tp,s,w~Bernoulli (ηu)

如果tp,s,w=0

采樣詞w~Multinomial (φb)

否則如果rp,s=0

采樣詞w~Multinomial (φr)

否則

采樣詞w~Multinomial (φzp,s)

對比原始LDA,BBS-LDA主要有3點與之不同。第1點是以句子為單位,每個句子的主題只采樣一次,每個帖子中的句子具有相同的主題分布,這樣的做法考慮了論壇文本的結(jié)構(gòu)特性,并且可以緩解單條回復(fù)字數(shù)少導致的稀疏性問題。第2點是句子中的詞分為兩部分,一部分屬于背景詞,一部分屬于主題詞。這個做法與Twitter-LDA的做法差不多,唯一的不同是在Twitter-LDA中,η對于所有文本都是相同的,而在BBS-LDA中,對于每個用戶,η都是不同的,因為不同的人,寫作習慣是不同的。通過這樣的做法,可以對文本中的背景詞進行建模,增加模型在相同版塊不同主題的區(qū)分能力。第3點是增加了一個標記變量r來識別句子是否有主題,這個想法是受文獻[17]啟發(fā)得到的,同樣的,對于每個不同的用戶,π的值是不同的,因為有的用戶可能會經(jīng)?;厮械挠脩舭l(fā)的回復(fù)可能基本上都是和主題相關(guān)的。

2.3 BBS-LDA的參數(shù)估計

LDA主題模型的參數(shù)都比較復(fù)雜,不能夠被精確算出,一般使用一些近似的方法估計得到。最常用的方法有變分推理(Variational inference)和塌陷吉布斯采樣(Collapsed Gibbs sampling)[18]。筆者使用塌陷吉布斯采樣估計模型中的參數(shù)。

1) 首先,需要推導每個句子屬于對應(yīng)主題的概率。為了簡化這個問題,可以先忽略句子中的背景詞,因為背景詞與主題無關(guān)。根據(jù)模型的生成過程,整個文本集的生成概率為

(1)

展開式(1)第3項,即

(2)

(3)

(4)

把式(3,4)代入式(2)之后,可以得到

(5)

同理,可以得到

(6)

(7)

(8)

在采樣過程中,對于一個句子,先采樣r,然后根據(jù)r判斷句子是不是有意義的,如果有意義,則從以α為參數(shù)的Dirichlet分布中再采樣z,否則句子直接屬于無意義主題,無意義主題記為zr,則此時P(zr|r=0)=1,則有

(9)

所以,整個文本集生成的概率為

(10)

由此,可以開始采樣第p個帖子中第s個句子所對應(yīng)的標記變量rp,s和句子的主題zp,s。當rp,s=1時,句子主題為k的概率計算為

(11)

rp,s=0的概率計算為

(12)

式中:C表示當前采樣句子中無意義詞的個數(shù);C(v)表示當前采樣句子中的詞v屬于無意義詞的個數(shù)。

之后,對句子中的每個詞進行采樣(單詞計為x,單詞的序號為i)。

2) 現(xiàn)在考慮文本集的時候不忽略背景詞,則文本集的生成概率為

(13)

因為此時句子的主題已采樣,所以式(13)中的前兩項與單詞是否是背景詞的概率無關(guān),把它記為(*)。

與式(5)的推導相同,可以得到

(14)

(15)

將式(5,8,14,15)代入式(13),可得

(16)

詞x屬于背景詞的概率為

(17)

如果該單詞所在的句子對應(yīng)的標志變量rp,s=1,且zp,s=k,同理可得

(18)

如果該單詞所在的句子對應(yīng)的標志變量rp,s=0,同理可得

(19)

等采樣收斂之后,因為Dirichlet分布和多項分布共軛,各個隱藏變量的估計值為

(20)

(21)

(22)

2.4 垃圾回復(fù)識別

直接使用模型對文檔進行建模,在辨別回復(fù)是否為有意義的回復(fù)上準確度不是很高。識別部分比較明顯的垃圾回復(fù)能夠為模型提供部分監(jiān)督信息,有利于更好地對文本進行建模。在模型參數(shù)估計的過程中,如果該條回復(fù)已經(jīng)根據(jù)監(jiān)督信息被標記為無意義的回復(fù),則直接把該條回復(fù)對應(yīng)的標記變量r賦值為1。如果該條回復(fù)沒有被標記,則需要通過采樣算法來決定r的值。根據(jù)觀察發(fā)現(xiàn),論壇的垃圾回復(fù)主要有兩種:第一種是一些過短回復(fù),基本不包含什么語義,只是為了頂貼或者水帖而發(fā)表的回復(fù);第二種是推廣。

對于第一種垃圾回復(fù),其文本中一般會包含一些高頻率詞,比如說“頂”“紫薯補丁”。所以篩選了字數(shù)小于10的一些回復(fù),經(jīng)分詞之后統(tǒng)計高頻詞,經(jīng)篩選形成一份詞典。對于新的文本數(shù)據(jù),可以通過以下方式判斷是否為這一類垃圾回復(fù):首先對文本進行分詞,根據(jù)回復(fù)的詞數(shù)篩選出過短回復(fù);之后判斷該回復(fù)中是否包含詞典中的高頻詞,如果是,則該條回復(fù)為垃圾回復(fù)。

對于第二種推廣類型的回復(fù),也有一個特點,就是不經(jīng)過大幅度修改直接重復(fù)粘貼,且多為同一個人發(fā)出。對于這些水帖,可以在數(shù)據(jù)庫中對每個用戶的回復(fù)進行遍歷(爬取語料的時候保留用戶信息),查找文本中相似度比較高的回復(fù),并對這些回復(fù)進行標記。計算語句的相似度主要有基于相同詞的方法、基于向量空間的方法和基于局部敏感哈希(LSH)的方法[19]。筆者使用Simhash[20]來查找重復(fù)回復(fù),它是一種典型的基于局部敏感哈希的算法,計算效率較高,更適合處理大規(guī)模文本。對于每個用戶的所有發(fā)言,使用Simhash計算它們的哈希值,然后遍歷,尋找相似度高于一定閾值的發(fā)言,如果這些彼此相似的發(fā)言數(shù)量大于這個閾值,則標記為垃圾回復(fù)。需要注意的是,在這里尋找相似回復(fù)的范圍是一個用戶的所有回復(fù),而不是所有用戶,因為在一個帖子中,可能會出現(xiàn)多個用戶因為共鳴等原因發(fā)出相似的發(fā)言,而這些發(fā)言并不一定是垃圾回復(fù)。

3 實驗與分析

3.1 數(shù)據(jù)準備

3.1.1 數(shù)據(jù)采集

為了驗證BBS-LDA的主題挖掘能力,筆者爬取了天涯論壇的百姓聲音版塊的帖子作為實驗數(shù)據(jù)。同一個版塊的不同主題可能會含有很多共用詞語,這樣的數(shù)據(jù)能夠很好地區(qū)分不同主題模型對于挖掘相同版塊近似主題的能力。筆者爬取了2018年1—6月的所有帖子,爬取的內(nèi)容見表2。

表2 爬蟲爬取的內(nèi)容Table 2 Content we crawl through the crawler

3.1.2 數(shù)據(jù)預(yù)處理

首先,對文本進行分詞。中文分詞主要有基于詞典匹配[21]的方法和基于統(tǒng)計的方法。筆者使用了開源的Jieba分詞,它結(jié)合了詞典和隱馬爾科夫模型,分詞準確度較高。分詞后根據(jù)詞的詞性保留動詞、名詞、形容詞等重要詞性的詞,刪除了數(shù)詞、介詞、量詞等不包含語義信息的詞。

分詞后對詞語進行去停用詞操作。停用詞是一些對語義沒幫助的詞。對于中文,現(xiàn)在已經(jīng)有比較全的停用詞庫,比如“哈工大停用詞詞庫”“百度停用詞表”,筆者對這些停用詞庫進行了整合,并做了去重的工作。

之后,使用2.4節(jié)的方法進行垃圾回復(fù)的標記。對長度低于10的回復(fù)分詞之后進行了統(tǒng)計,高頻詞見表3(只列出前8項)。

表3 短回復(fù)高頻詞列表Table 3 High frequency word list of short response

從表3中可以憑經(jīng)驗分辨出哪些詞大概率是水貼,哪些詞和板塊的大背景切合。經(jīng)過篩選,把腐敗、貪官等詞移除,構(gòu)建出一個詞典,根據(jù)這個詞典把所有大概率可能是水帖的短回復(fù)做好標記。隨后,通過Simhash找到每個用戶發(fā)表的相似帖子,把重復(fù)數(shù)高于5的重復(fù)帖子標記為無意義回復(fù)。最后,統(tǒng)計各個詞語的詞頻,把低于5的低頻詞刪除,去除低頻詞有助于提高主題模型的效率。預(yù)處理之后數(shù)據(jù)的統(tǒng)計信息見表4,以下實驗都是基于這些數(shù)據(jù)完成的。

表4 數(shù)據(jù)的統(tǒng)計信息Table 4 Data statistics

3.2 實驗結(jié)果

本次實驗將BBS-LDA和下面兩種主題模型進行對比。模型所用的語料相同,均為上述處理后的語料。不過不同模型對應(yīng)的輸入不同,所以對于不同模型,需要在語料格式上做一些改動。

1) LDA:原始的LDA,因為LDA對于短文本效果不太好,這里把每個帖子的正文和回復(fù)拼成一起,當成一個單獨的文檔來進行實驗。

2) Twitter-LDA:原始的Twitter-LDA是以用戶作為聚簇,把每個用戶的發(fā)言作為一個文檔,用戶發(fā)的每條Tweet中的所有詞主題相同。這里以帖子作為聚簇,每個帖子的所有回復(fù)作為一個文檔,每條回復(fù)中的所有詞主題相同。

主題模型的效果一般可以使用困惑度(Perplexity)來進行評估。困惑度常用來度量概率圖模型的性能,它的值代表著預(yù)測數(shù)據(jù)時的不確定度。困惑度越小,就代表著模型的效果越好。困惑度的計算公式為

(23)

式中:Nd代表第d個文檔所包含的詞數(shù);p(wd)代表文檔d生成的概率。

隨著迭代次數(shù)的增加,不同主題模型在同一個測試數(shù)據(jù)集上的困惑度變化如圖2所示。

圖2 不同模型困惑度隨迭代次數(shù)的變化Fig.2 The perplexity of different models changes with the number of iterations

從圖2中可以看到:3 個模型隨著迭代次數(shù)的增加,困惑度都逐漸降低,迭代500 次之后模型已經(jīng)收斂,BBS-LDA的困惑度比Twitter-LDA和原始LDA的困惑度都低,說明BBS-LDA有更好的泛化能力。

主題相似度可以度量主題模型對于不同主題的區(qū)分能力,它也是主題模型的一個常用的評估手段。一般用KL散度來度量主題間的相似程度。KL距離越大,代表兩個主題間的相似度越小,不同主題間的區(qū)分度更加好。

主題k1和k2的KL距離的計算公式為

(24)

因為KL距離不是對稱的,所以這里計算兩個主題之間距離的時候?qū)烧叩腒L距離取平均,即

Distance (k1,k2)=(KL(k1,k2)+
KL(k2,k1))/2

(25)

在模型收斂之后分別計算模型的兩兩主題間的平均距離,結(jié)果如表5所示。

表5 不同模型主題間的平均距離Table 5 Average distance between different model topics

最后,直觀地對3 個主題模型挖掘的主題進行對比(隨機抽取了5 個主題),結(jié)果如表6所示。

表6 不同主題模型關(guān)鍵字對比Table 6 Keyword comparison between different topic models

從表6可以看到:3 個模型都能夠比較好地挖掘文章的主題。其中,BBS-LDA因為綜合考慮了論壇的結(jié)構(gòu)特性和用戶的信息,關(guān)鍵詞質(zhì)量最高。同時,BBS-LDA還在一定程度上識別了背景詞和一些無意義的回復(fù),這個是很有意義的。

4 結(jié) 論

論壇是人們獲取和發(fā)布信息的主要途徑之一,挖掘論壇的文本信息對于輿情監(jiān)控、市場調(diào)研等有著重要的意義。根據(jù)論壇的一系列特點,基于LDA提出了新的BBS-LDA主題模型,并通過Gibbs sampling對模型進行推導。經(jīng)過實際論壇語料試驗表明:BBS-LDA不僅具有良好的主題挖掘能力,還能夠在一定程度上識別文章的無意義回復(fù)和背景詞。下一步工作將研究如何把時間和BBS-LDA結(jié)合在一起,讓該主題模型能挖掘出更多信息,更實用。

猜你喜歡
帖子語料文檔
有人一聲不吭向你扔了個文檔
基于語料調(diào)查的“連……都(也)……”出現(xiàn)的語義背景分析
暴力老媽
基于RI碼計算的Word復(fù)制文檔鑒別
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
華語電影作為真實語料在翻譯教學中的應(yīng)用
《苗防備覽》中的湘西語料
國內(nèi)外語用學實證研究比較:語料類型與收集方法
不讓他人隨意下載Google文檔
電腦迷(2012年4期)2012-04-29 06:12:13
情事圈點
女性天地(2012年11期)2012-04-29 00:44:03
阳曲县| 肃南| 满洲里市| 长泰县| 安图县| 临城县| 两当县| 奉化市| 株洲市| 通州区| 洪江市| 五常市| 宁强县| 灵璧县| 安化县| 都江堰市| 河间市| 满城县| 甘南县| 莒南县| 抚州市| 宁国市| 房产| 丁青县| 贞丰县| 海伦市| 沁水县| 米泉市| 姚安县| 双牌县| 和林格尔县| 永定县| 台东县| 曲靖市| 崇义县| 镇沅| 绥芬河市| 佛冈县| 新津县| 望谟县| 驻马店市|