LSA LSI原理以及實踐

2021-09-12 02:52:25 字數 1404 閱讀 8310

lsa(latent semantic analysis)潛在語義分析也可以稱為 lsi(latent semantic index)

該方法和傳統向量空間模型一樣使用向量來表示詞(iterms)和文件(documents),並通過向量間(一般通過余弦相似度來刻畫)的關係來表示詞和文件之間的相似度

三個矩陣有非常清楚的物理含義。第乙個矩陣

u 中的每一行表示意思相關的一類詞(可以將維度理解成特徵數,每個詞在各個特徵中的數值),其中的每個非零元素表示這類詞中每個詞的重要性(或者說相關性),數值越大越相關。最後乙個矩陣

v d 

x 上面的敘述可能看起來比較迷,可以看一下乙個具體的例項:

這個圖有點走形,不過應該能看懂,圖中一共有

10篇文章,選擇代表詞

11個,矩陣中的數字代表橫座標中的詞對應的縱座標中的文章**現的詞頻,對這個矩陣進行

svd分解:

這樣看起來理解起來比較容易理解

lsa的優點:

1. lsa

可以在低維空間刻畫同義詞,同義詞會對應著相似或相同的主題;

2. 降維可以去掉部門雜訊,使特徵更魯棒;

3. 充分利用冗餘資料(是指詞頻嗎)

4. 無監督

/完全自動化

5. 與語言無關

6. 能解決一意多詞問題

lsa的缺點:

1. 無法解決一詞多義的問題

2. svd

的優化目標基於

l-2 norm 

或者frobenius norm的,這相當於隱含了對資料的高斯分布假設。而

term 

出現的次數是非負的,這明顯不符合

gaussian 

假設,而更接近

multi-nomial 

分布;3.

對於count vectors 

而言,歐式距離表達是不合適的(重建時會產生負數);

4. 特徵向量的方向沒有對應的物理解釋;

5. svd

的計算複雜度很高,而且當有新的文件來到時,若要更新模型需重新訓練;

6. 維數的選擇是

ad-hoc

的;本文的內容大部分抄錄: 

Char RNN原理介紹以及文字生成實踐

char rnn,字元級迴圈神經網路,出自於andrej karpathy寫的the unreasonable effectiveness of recurrent neural networks。眾所周知,rnn非常擅長處理序列問題。序列資料前後有很強的關聯性,而rnn通過每個單元權重與偏置的共享...

Android執行緒池的原理以及專案中實踐

首先執行緒這個概念就不多講了,相信大家都比較熟悉,一般在處理耗時任務的時候我們習慣 newthread 來建立乙個子執行緒去處理,但是當任務多的時候不可能每乙個任務都去建立乙個任務,會造成系統頻繁的建立和銷毀,占用大量的資源造成介面的卡頓,甚至可能會出現記憶體異常的問題,所以為了解決這個問題我們需要...

configmap原理和實踐

原理 kubernetes通過configmap來實現對容器中應用的配置管理,configmap api資源儲存配置資料的鍵值對,可以在pods中使用或者可以用於儲存系統元件的配置資料。簡單的說也就是,configmap是kubernetes的一種資源,configmap可用於儲存細粒度資訊如單個屬...