99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀文本主題模型之潛在語(yǔ)義索引(LSI)
文本主題模型之潛在語(yǔ)義索引(LSI)
2017-12-22
收藏

文本主題模型之潛在語(yǔ)義索引(LSI)

文本挖掘中,主題模型是比較特殊的一塊,它的思想不同于我們常用的機(jī)器學(xué)習(xí)算法,因此這里我們需要專門來(lái)總結(jié)文本主題模型的算法。本文關(guān)注于潛在語(yǔ)義索引算法(LSI)的原理。

1. 文本主題模型的問題特點(diǎn)

在數(shù)據(jù)分析中,我們經(jīng)常會(huì)進(jìn)行監(jiān)督學(xué)習(xí)聚類算法,它可以對(duì)我們的特征數(shù)據(jù)進(jìn)行非監(jiān)督的聚類。而主題模型也是非監(jiān)督的算法,目的是得到文本按照主題的概率分布。從這個(gè)方面來(lái)說,主題模型和普通的聚類算法非常的類似。但是兩者其實(shí)還是有區(qū)別的。

聚類算法關(guān)注于從樣本特征的相似度方面將數(shù)據(jù)聚類。比如通過數(shù)據(jù)樣本之間的歐式距離,曼哈頓距離的大小聚類等。而主題模型,顧名思義,就是對(duì)文字中隱含主題的一種建模方法。比如從“人民的名義”和“達(dá)康書記”這兩個(gè)詞我們很容易發(fā)現(xiàn)對(duì)應(yīng)的文本有很大的主題相關(guān)度,但是如果通過詞特征來(lái)聚類的話則很難找出,因?yàn)?a href='/map/julei/' style='color:#000;font-size:inherit;'>聚類方法不能考慮到到隱含的主題這一塊。

那么如何找到隱含的主題呢?這個(gè)一個(gè)大問題。常用的方法一般都是基于統(tǒng)計(jì)學(xué)的生成方法。即假設(shè)以一定的概率選擇了一個(gè)主題,然后以一定的概率選擇當(dāng)前主題的詞。最后這些詞組成了我們當(dāng)前的文本。所有詞的統(tǒng)計(jì)概率分布可以從語(yǔ)料庫(kù)獲得,具體如何以“一定的概率選擇”,這就是各種具體的主題模型算法的任務(wù)了。

當(dāng)然還有一些不是基于統(tǒng)計(jì)的方法,比如我們下面講到的LSI。

2. 潛在語(yǔ)義索引(LSI)概述

潛在語(yǔ)義索引(Latent Semantic Indexing,以下簡(jiǎn)稱LSI),有的文章也叫Latent Semantic  Analysis(LSA)。其實(shí)是一個(gè)東西,后面我們統(tǒng)稱LSI,它是一種簡(jiǎn)單實(shí)用的主題模型。LSI是基于奇異值分解(SVD)的方法來(lái)得到文本的主題的。而SVD及其應(yīng)用我們?cè)谇懊娴奈恼乱捕啻沃v到,比如:奇異值分解(SVD)原理與在降維中的應(yīng)用和矩陣分解在協(xié)同過濾推薦算法中的應(yīng)用。如果大家對(duì)SVD還不熟悉,建議復(fù)習(xí)奇異值分解(SVD)原理與在降維中的應(yīng)用后再讀下面的內(nèi)容。

這里我們簡(jiǎn)要回顧下SVD:對(duì)于一個(gè)m×n的矩陣A,可以分解為下面三個(gè)矩陣:


Am×n=Um×mΣm×nVn×nT

有時(shí)為了降低矩陣的維度到k,SVD的分解可以近似的寫為:


Am×n≈Um×kΣk×kVk×nT

如果把上式用到我們的主題模型,則SVD可以這樣解釋:我們輸入的有m個(gè)文本,每個(gè)文本有n個(gè)詞。而Aij則對(duì)應(yīng)第i個(gè)文本的第j個(gè)詞的特征值,這里最常用的是基于預(yù)處理后的標(biāo)準(zhǔn)化TF-IDF值。k是我們假設(shè)的主題數(shù),一般要比文本數(shù)少。SVD分解后,Uil對(duì)應(yīng)第i個(gè)文本和第l個(gè)主題的相關(guān)度。Vjm對(duì)應(yīng)第j個(gè)詞和第m個(gè)詞義的相關(guān)度。Σlm對(duì)應(yīng)第l個(gè)主題和第m個(gè)詞義的相關(guān)度。

也可以反過來(lái)解釋:我們輸入的有m個(gè)詞,對(duì)應(yīng)n個(gè)文本。而Aij則對(duì)應(yīng)第i個(gè)詞檔的第j個(gè)文本的特征值,這里最常用的是基于預(yù)處理后的標(biāo)準(zhǔn)化TF-IDF值。k是我們假設(shè)的主題數(shù),一般要比文本數(shù)少。SVD分解后,Uil對(duì)應(yīng)第i個(gè)詞和第l個(gè)詞義的相關(guān)度。Vjm對(duì)應(yīng)第j個(gè)文本和第m個(gè)主題的相關(guān)度。Σlm對(duì)應(yīng)第l個(gè)詞義和第m個(gè)主題的相關(guān)度。

這樣我們通過一次SVD,就可以得到文檔和主題的相關(guān)度,詞和詞義的相關(guān)度以及詞義和主題的相關(guān)度。

3. LSI簡(jiǎn)單實(shí)例

這里舉一個(gè)簡(jiǎn)單的LSI實(shí)例,假設(shè)我們有下面這個(gè)有10個(gè)詞三個(gè)文本的詞頻TF對(duì)應(yīng)矩陣如下:


這里我們沒有使用預(yù)處理,也沒有使用TF-IDF,在實(shí)際應(yīng)用中最好使用預(yù)處理后的TF-IDF值矩陣作為輸入。

我們假定對(duì)應(yīng)的主題數(shù)為2,則通過SVD降維后得到的三矩陣為:

從矩陣Uk我們可以看到詞和詞義之間的相關(guān)性。而從Vk可以看到3個(gè)文本和兩個(gè)主題的相關(guān)性。大家可以看到里面有負(fù)數(shù),所以這樣得到的相關(guān)度比較難解釋。

4. LSI用于文本相似度計(jì)算

在上面我們通過LSI得到的文本主題矩陣可以用于文本相似度計(jì)算。而計(jì)算方法一般是通過余弦相似度。比如對(duì)于上面的三文檔兩主題的例子。我們可以計(jì)算第一個(gè)文本和第二個(gè)文本的余弦相似度如下 :

sim(d1,d2)=(?0.4945)?(?0.6458)+(0.6492)?(?0.7194)(?0.4945)2+0.64922(?0.6458)2+(?0.7194)2

5. LSI主題模型總結(jié)

LSI是最早出現(xiàn)的主題模型了,它的算法原理很簡(jiǎn)單,一次奇異值分解就可以得到主題模型,同時(shí)解決詞義的問題,非常漂亮。但是LSI有很多不足,導(dǎo)致它在當(dāng)前實(shí)際的主題模型中已基本不再使用。

主要的問題有:

1) SVD計(jì)算非常的耗時(shí),尤其是我們的文本處理,詞和文本數(shù)都是非常大的,對(duì)于這樣的高維度矩陣做奇異值分解是非常難的。

2) 主題值的選取對(duì)結(jié)果的影響非常大,很難選擇合適的k值。

3) LSI得到的不是一個(gè)概率模型,缺乏統(tǒng)計(jì)基礎(chǔ),結(jié)果難以直觀的解釋。

對(duì)于問題1),主題模型非負(fù)矩陣分解(NMF)可以解決矩陣分解的速度問題。對(duì)于問題2),這是老大難了,大部分主題模型的主題的個(gè)數(shù)選取一般都是憑經(jīng)驗(yàn)的,較新的層次狄利克雷過程(HDP)可以自動(dòng)選擇主題個(gè)數(shù)。對(duì)于問題3),牛人們整出了pLSI(也叫pLSA)和隱含狄利克雷分布(LDA)這類基于概率分布主題模型來(lái)替代基于矩陣分解的主題模型。

回到LSI本身,對(duì)于一些規(guī)模較小的問題,如果想快速粗粒度的找出一些主題分布的關(guān)系,則LSI是比較好的一個(gè)選擇,其他時(shí)候,如果你需要使用主題模型,推薦使用LDA和HDP。


數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }