王遠(yuǎn)志 ,張海坤,高海標(biāo),陸文成
(1.中國科學(xué)院合肥智能機(jī)械研究所,安徽合肥230031;2.安慶師范大學(xué)計(jì)算機(jī)與信息學(xué)院,安徽安慶246133)
伴隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展及互聯(lián)網(wǎng)應(yīng)用規(guī)模的爆發(fā)式增長,網(wǎng)絡(luò)已成為人們?nèi)粘I钪行畔鞑ズ徒涣鞯男旅浇?。?jù)相關(guān)統(tǒng)計(jì),目前我國微博用戶注冊(cè)數(shù)量已超過5億,互聯(lián)網(wǎng)中的文檔、數(shù)據(jù)信息量以爆炸式的趨勢(shì)增長,中文微博數(shù)據(jù)量呈指數(shù)增長。如何從這些海量的非結(jié)構(gòu)化的文本中抽取真正需要的、有用的信息,日益成為研究的焦點(diǎn)。實(shí)體關(guān)系提取正是信息抽取中的重要任務(wù),對(duì)信息過濾、篇章理解、問答系統(tǒng)、機(jī)器翻譯等有重要的意義。通過實(shí)體關(guān)系提取能夠?qū)⑽⒉┯脩暨B接成一個(gè)社會(huì)網(wǎng)絡(luò),在一定程度上促進(jìn)了現(xiàn)實(shí)社會(huì)關(guān)系向網(wǎng)絡(luò)社會(huì)關(guān)系的轉(zhuǎn)化進(jìn)程,同時(shí)對(duì)網(wǎng)絡(luò)知識(shí)挖掘、網(wǎng)絡(luò)信息行為研究以及知識(shí)管理的發(fā)展起到重大的作用。針對(duì)微博的短文本分類可用于個(gè)性化推薦、輿情分析等領(lǐng)域。
近年來,中文文本分類受到學(xué)術(shù)界的關(guān)注。文本相似度計(jì)算作為文本分類過程中的核心之一,經(jīng)過眾多學(xué)者的探索研究已經(jīng)取得了豐碩的成果。畢海濱等提出了一種基于詞匯語義的文本特征提取方法,采用基于特征向量的機(jī)器學(xué)習(xí)算法支持向量機(jī)(SVM)進(jìn)行實(shí)體關(guān)系抽取實(shí)驗(yàn),該方法明顯提高關(guān)系抽取性能[1];王蘭成等結(jié)合情感本體構(gòu)建和基于HowNet與主題領(lǐng)域語料的情感概念選擇方法對(duì)Web文本進(jìn)行傾向性分析[2],實(shí)驗(yàn)表明,該方法有效地提高了分類的準(zhǔn)確率和召回率;甘麗新等將不同實(shí)體各自的依存句法關(guān)系進(jìn)行兩兩組合,再將組合特征和動(dòng)詞特征加入到基于特征關(guān)系抽取中[3];劉懷亮等利用TFIDF算法計(jì)算特征詞項(xiàng)權(quán)值,并借助知網(wǎng)分析詞頻間的語義關(guān)系,提出一種基于知網(wǎng)語義相似度的文本相似度加權(quán)算法,該方法能夠有效提升中文文本分類的精度[4];閆紅等在計(jì)算句子相似度時(shí)考慮了詞語定義的關(guān)系義原與待比較的詞的某個(gè)義原相等的情況,并加大關(guān)系義原的權(quán)重來計(jì)算句子相似度[5],但該方法未考慮詞性對(duì)句子相似度的影響;薛竹君等在解析微博文本語法的基礎(chǔ)上,結(jié)合實(shí)體關(guān)系的定義和形式化表示,提出了采用關(guān)系網(wǎng)絡(luò)有向圖模型的方法來反映文本之間的結(jié)構(gòu)關(guān)系,較好地表達(dá)了文本的語義信息[6];陽小蘭等提出一種將HowNet語義庫和BTM主題模型進(jìn)行線性組合的相似度計(jì)算方法[7];在構(gòu)建興趣網(wǎng)絡(luò)方面,施佺等以云計(jì)算平臺(tái)為基礎(chǔ),利用Mapreduce框架對(duì)Digg新聞網(wǎng)站的評(píng)論進(jìn)行關(guān)系提取,獲得用戶的興趣關(guān)系網(wǎng)絡(luò)[8]。傳統(tǒng)的計(jì)算文本相似度的方式是利用向量空間模型表示文本,然后用余弦相似度來表示文本間的相似性,但是該方法忽略詞語語義對(duì)相似度的影響。對(duì)微博等短文本而言,由于含有的詞語少,這導(dǎo)致其向量空間模型的表示十分稀疏,因此可提供的信息也很匱乏,使得傳統(tǒng)的方式不能很好反映文本間的相似性。本文對(duì)新浪微博用戶共同興趣網(wǎng)絡(luò)進(jìn)行探究,針對(duì)測(cè)試集中關(guān)鍵詞的不同詞性給予關(guān)鍵詞不同的權(quán)重系數(shù),結(jié)合知網(wǎng)詞匯語義相似度計(jì)算用戶之間的共同興趣強(qiáng)度,用共同興趣強(qiáng)度作為用戶相似性的衡量標(biāo)準(zhǔn),最終構(gòu)建目標(biāo)網(wǎng)絡(luò)。
知網(wǎng)是以“概念”屬性之間的關(guān)系為基本內(nèi)容的一個(gè)知識(shí)網(wǎng)絡(luò)[9],它有兩個(gè)主要概念:“概念”和“義原”?!案拍睢笔菍?duì)詞匯語義的一種描述,每個(gè)詞可以表達(dá)為幾個(gè)概念?!案拍睢笔怯靡环N“義原”表達(dá)式來描述的,“義原”是知網(wǎng)中用來描述一個(gè)詞語的最小意義單位。本文采用張瀘寅等定義的義原相似度計(jì)算公式[10]:
其中,Dis(p1,p2)表示義原p1和p2在義原層次體系中路徑長度,若兩個(gè)義原不在同一棵層次樹中,Dis(p1,p2)設(shè)為固定值20;d(p1)和d(p2)指義原深度,分別表示義原p1和p2在整個(gè)義原層次體系中所處的層數(shù)位置。在計(jì)算過程中,將任何義原或具體詞與空值的相似度和義原與具體詞的相似度設(shè)定為兩個(gè)較小的常數(shù)δ和γ,并規(guī)定兩個(gè)相同具體詞的相似度為1,否則為0。
詞語W1和W2的相似度是指這兩個(gè)詞在不同的上下文中可以互相替換使用且不改變文本的句法語義結(jié)構(gòu)的程度[9],用Sim(W1,W2)表示。如果給定詞語W1有m個(gè)概念:D11,D12,…,D1m,詞語W2有n個(gè)概念:D21,D22,…,D2n,則定義詞語W1和W2的相似度為這些概念之間的最大相似度值[11-15]:
其中,D1i,D2j分別表示 W1,W2的第 i個(gè)和第 j個(gè)概念,Sim(D1i,D2j)表示兩個(gè)詞語的概念相似度。
知網(wǎng)中義原之間最主要的關(guān)系是上下位關(guān)系。只考慮義原間上下位關(guān)系,將基本義原組成一個(gè)樹狀義原層次關(guān)系,語義相似度的計(jì)算便是基于這種層次關(guān)系。劉群等提出的先分再合的思想,將概念的義項(xiàng)描述式分為第一基本義原描述式、其他基本義原描述式、關(guān)系義原描述式和符號(hào)義原描述式[9]。概念的相似度就可以通過這4個(gè)部分相似度加權(quán)求和得到。假設(shè)有兩個(gè)概念D1和D2,這兩個(gè)概念的4個(gè)部分相似度計(jì)算方法如下:
(1)第一基本義原描述式相似度:概念的第一基本義原描述式只有一個(gè)基本義原,可直接采用(1)式計(jì)算,記為Sim1(D1,D2);
(2)其他基本義原描述式相似度由多個(gè)基本義原組成,將兩個(gè)概念描述表達(dá)式中的所有其他基本義原看成兩個(gè)集合中的元素并任意配對(duì),計(jì)算出所有可能配對(duì)的義原的相似度,取出相似度最大的一對(duì),得到兩個(gè)新的集合。對(duì)新集合重復(fù)上述方法,直到集合為空。
假設(shè)兩個(gè)概念D1,D2的其他基本義原表達(dá)式分別為 V1={p11,p12,…,p1m}和 V2={p21,p22,…,p2n},|V1|和|V2|表示概念擁有的其他基本義原數(shù),則其他基本義原相似度的計(jì)算算法如下:
輸入:兩個(gè)概念的其他基本義原描述式
輸出:兩個(gè)概念的其他基本義原相似度
令Size=max{|V1|,|V2|};num=0.0;
while(|V1|>0 or|V2|>0){
求出兩個(gè)集合所有組合中相似度最大的一組義原 p1i∈V1和p2j∈V2;
(3)關(guān)系義原描述式相似度計(jì)算方法與(2)類似,不同點(diǎn)是先把關(guān)系義原相同的描述式分為一組,然后計(jì)算描述式的基本義原之間的相似度作為關(guān)系義原描述式的相似度,記為Sim3(D1,D2)。若關(guān)系義原不同,其相似度取較小常數(shù)。
(4)符號(hào)義原描述式相似度的計(jì)算與(3)類似,只在符號(hào)相同時(shí)計(jì)算相似度,記為Sim4(D1,D2)。
通過上述4個(gè)部分相似度的加權(quán)求和計(jì)算概念相似度為
其中,βi(1≤i≤4)表示各部分的權(quán)值,β1+β2+β3+β4=1,且β1>β2>β3>β4。
本文的共同興趣網(wǎng)絡(luò)用無向圖G(I,S)表示,其中I表示微博用戶節(jié)點(diǎn),S表示用戶之間的笛卡爾積。共同興趣網(wǎng)絡(luò)的構(gòu)建主要是通過用戶之間的共同興趣強(qiáng)度的比較,若該值大于等于參數(shù)θ,就在用戶節(jié)點(diǎn)之間添加一個(gè)邊。閾值θ根據(jù)文本相似度值選定,使得用戶類別鑒定的準(zhǔn)確率最大。用戶相似度計(jì)算過程中,不同詞性的關(guān)鍵詞對(duì)文本的貢獻(xiàn)度是不同的。如果不同詞性的關(guān)鍵詞給定相同的權(quán)重系數(shù),使得文本分類的準(zhǔn)確性降低。針對(duì)興趣而言,名詞的表征能力最強(qiáng),動(dòng)詞次之,其他詞性可忽略不計(jì)。本文在預(yù)處理階段根據(jù)詞性對(duì)特征詞進(jìn)行了篩選,只保留名詞和動(dòng)詞。這里以兩個(gè)微博用戶A和B為例,假設(shè)A和B的特征詞集合分別為(W11,W12,…,W1m)和(W21,W21,…,W2n),則微博用戶共同興趣網(wǎng)絡(luò)構(gòu)建步驟如下:
輸入:微博用戶文本特征詞集
輸出:微博用戶興趣網(wǎng)絡(luò)
Step1:對(duì)A、B中特征詞兩兩組合;
Step2:計(jì)算所有組合的詞語相似度并取出相似度最大的組合;
Step3:去除A、B集合中上述最大相似度組合所對(duì)應(yīng)的特征詞,計(jì)算兩集合剩下的特征詞兩兩組合的相似度;
Step4:重復(fù)Step2,直至A中特征詞為空;Step5:根據(jù)詞性對(duì)所有取出的特征詞組合的相似度加權(quán)求和計(jì)算用戶共同興趣強(qiáng)度;
Step6:根據(jù)共同興趣強(qiáng)度判斷用戶是否具有共同興趣,對(duì)用戶進(jìn)行分類,進(jìn)而構(gòu)建興趣網(wǎng)絡(luò)。
上述算法中用戶共同興趣強(qiáng)度為:
式中,IND(A,B)表示用戶共同興趣強(qiáng)度,其值越大反映用戶間的興趣相似程度越高;max[Sim(W1i,W2j)]表示計(jì)算文本A中的特征詞W1i與文本B中特征詞相似度的最大值,1≤i≤m,ρ為權(quán)重系數(shù),且0<τ<μ<1。對(duì)于μ和τ依據(jù)不同詞性的特征詞對(duì)文本信息表征能力不同的規(guī)則設(shè)定權(quán)值[14],μ和τ分別從0.6和0.3開始取值且權(quán)值系數(shù)增大的步長為0.1,并以0<τ<μ<1為約束條件,分別計(jì)算兩權(quán)重系數(shù)不同取值所對(duì)應(yīng)的微博用戶文本相似度值。
文本預(yù)處理的主要目的就是對(duì)原始非結(jié)構(gòu)化或半結(jié)構(gòu)化文本中的一些雜亂和噪音數(shù)據(jù)信息進(jìn)行初步的過濾和規(guī)范化處理,得到較為“純凈”的文本。這一階段步驟為
(1)采用Python編寫一個(gè)網(wǎng)絡(luò)爬蟲程序來獲取新浪微博網(wǎng)站上用戶的微博數(shù)據(jù),將這些微博文本數(shù)據(jù)存入用戶名命名的文件目錄中,并運(yùn)用正則表達(dá)式去除文本中的表情符號(hào)、發(fā)表人附的超鏈接、轉(zhuǎn)發(fā)標(biāo)簽和日期標(biāo)簽等噪音。
(2)中文文本中的詞是連續(xù)書寫的形式,一句話中的詞與詞之間沒有空格分隔,故而采用詞語作為特征必須先將連續(xù)的字符串分成一個(gè)個(gè)詞語。本文采用中科院分詞系統(tǒng)(NLPIR)對(duì)文本進(jìn)行分詞處理并進(jìn)行詞性標(biāo)注。
(3)根據(jù)詞性對(duì)文本詞語篩選,只保留名詞和動(dòng)詞。利用哈工大停用詞表去除分詞后的文本停用詞。
(4)選擇特征詞。統(tǒng)計(jì)文本中各詞詞頻,降序排序并去除詞頻較小的詞語,最終得到文本數(shù)據(jù)格式為((W1,verb,w1),(W2,verb,w2),…,(Wn,verb,wi)),其中,Wi表示該用戶的特征詞,verb表示該特征詞的詞性,wi為該詞的詞頻。具體實(shí)驗(yàn)流程如圖1所示。
圖1 實(shí)驗(yàn)流程圖
本文實(shí)驗(yàn)以Windows系統(tǒng)為平臺(tái),以Pycharm作為實(shí)驗(yàn)環(huán)境。實(shí)驗(yàn)數(shù)據(jù)采用Python編寫的爬蟲程序從新浪微博網(wǎng)站上爬取得400個(gè)用戶的所有微博,分為軍事、健身、財(cái)經(jīng)、旅游4個(gè)類別,每個(gè)類別100個(gè)實(shí)體。從這4個(gè)類別中各選取80個(gè)用戶共計(jì)320個(gè)作為類別鑒定集,其余80個(gè)用戶作為待確定類別集。實(shí)驗(yàn)各參數(shù)設(shè)置為α=1.6,β1=0.5,β2=0.2,β3=0.17,β4=0.13,δ=γ=0.2,λ=2.0,θ=0.8,μ=0.9,τ=0.7。表1為采用文獻(xiàn)[5]中的方法和本文方法計(jì)算軍事待定類別用戶集與4個(gè)類別鑒定集相似度的結(jié)果。
表1 用戶相似度計(jì)算結(jié)果對(duì)比
本文采用用戶類別判定的準(zhǔn)確率P作為實(shí)驗(yàn)評(píng)價(jià)指標(biāo),式中,a表示真正屬于該類別并且判斷為屬于該類別的用戶數(shù),b表示本不屬于該類別卻被誤判為該類別的用戶數(shù)。用文獻(xiàn)[5]方法和本文方法對(duì)4個(gè)類別所有用戶鑒定類別的準(zhǔn)確率對(duì)比如圖2所示。圖2表明,在判定用戶類別時(shí),相對(duì)于文獻(xiàn)[5]算法,本文算法類別判定的準(zhǔn)確率有所改善。圖3為4個(gè)類別所有用戶共同興趣網(wǎng)絡(luò),圖4是從圖3中提取的軍事類別用戶共同興趣網(wǎng)絡(luò)。節(jié)點(diǎn)M、E、F、T分別表示軍事、健身、財(cái)經(jīng)、旅游4個(gè)類別,數(shù)字節(jié)點(diǎn)表示用戶編號(hào)。
圖2 準(zhǔn)確率對(duì)比
圖3 所有待定類用戶共同興趣網(wǎng)絡(luò)
圖4 軍事待定類用戶共同興趣網(wǎng)絡(luò)
面對(duì)海量中文數(shù)據(jù),關(guān)系提取不僅能提高文本分類的精度,而且對(duì)社會(huì)網(wǎng)絡(luò)構(gòu)建起到了有效的推動(dòng)作用。本文針對(duì)微博用戶興趣,提出一種結(jié)合詞性的用戶相似度計(jì)算方法構(gòu)建興趣網(wǎng)絡(luò)。實(shí)驗(yàn)表明,這種方法為興趣網(wǎng)絡(luò)提取提供了一種新的思路。但在計(jì)算詞語相似度時(shí),未考慮知網(wǎng)未收錄詞對(duì)相似度的影響,只將其值設(shè)為-2,可能導(dǎo)致在選取最大詞語相似度時(shí)存在誤差。筆者接下來會(huì)對(duì)知網(wǎng)未收錄詞和構(gòu)建得到的興趣網(wǎng)絡(luò)做進(jìn)一步探究。