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可用於儲存細粒度資訊如單個屬...