基於tf-idf矩陣計算皮爾遜相關係數以查看哪些術語與其他術語結合發生是否有意義?它在數學上是否正確?基於tf-idf值計算相關性?
我的輸出是一個相關矩陣,每個單元的每個單元都有相關係數。
- -------字詞1字詞2 TERM3
- 詞條2
- 詞條2
- 詞條2
基於tf-idf矩陣計算皮爾遜相關係數以查看哪些術語與其他術語結合發生是否有意義?它在數學上是否正確?基於tf-idf值計算相關性?
我的輸出是一個相關矩陣,每個單元的每個單元都有相關係數。
這取決於你的 '發生在與其它術語組合' 的定義。爲了澄清這一點:
當做皮爾遜平均相關時,idf是無關緊要的。同一項的所有tf值將乘以產生最終tf-idf的相同idf值。 PMC在輸入的縮放方面是不變的,所以idf在這裏被取消。因此,在你提出的想法中所有重要的東西都是tf。如果你甚至沒有計算idf,你可以節省一些計算,但是如果你這樣做的話,它不會傷害很多。
現在介紹tf的用法。讓我們舉一個例子來弄清楚你可能需要什麼:
可以這麼說TermA
出現在Document1
很常見,有一點在Document2
。另一方面,TermB
出現在Document1
有點經常在Document2
。你會說這兩個術語是否一起出現?它們出現在同一份文件中,但頻率不同。如果您使用tf-idf的PMC,那麼結果將會是,它們不會共現(因爲頻率的差異)。
此時您還應該注意,PMC的值從-1變爲1。即你可以有獨立的詞(PMC = 1)和PMC = 1的詞(PMC = 1)。這是否適合您正在建模的域?如果沒有,只需在PMC中加1。
另一種方法是使用餘弦相似性,這與PMC非常相似,但具有一些不同的特徵。在其他一些情況下,您可能只對實際共同感興趣,而不關心頻率。
所有這些方法都是「正確的」。更重要的問題是,哪些方法最適合您正在建模的問題。在許多情況下,這不能從理論上確定,但只有通過嘗試不同的選擇並測試哪一個最適合您的問題領域。
EDIT(約下面的評論一些言論):
餘弦相似性並真正幫助,但你必須有不同的看法在這種情況下。您當然可以爲文檔中的術語生成術語頻率向量,然後計算這些文檔術語 - 頻率向量的餘弦相似度。你正確地指出,這會給你的帖子相似性。但這不是我的意思。如果您有完整的詞頻矩陣,則還可以生成矢量,這些矢量描述了單個詞語在每個文檔中該詞彙出現的頻率。您也可以計算這些向量的餘弦相似度。這會給你基於文檔共同性的術語的相似性。
想想這樣(但首先我們需要一些符號):
讓f_{i,j}
表示的時間期限i
出現在文件j
(請注意,我在這裏忽略了以色列國防軍,數量,因爲它只會在處理條款而不是文檔時取消)。還讓F=(f_{i,j})_{i=1...N,j=1...M}
表示整個文檔項矩陣(術語以行和列的形式出現)。然後最後我們將調用|F|_c
矩陣F
,其中每個列根據l^2
標準和|F|_r
標準化,其中每個行根據l^2
標準規範化。當然,像往常一樣,A^T
表示A
的轉置。在這種情況下,你必須爲
(|F|_r)*(|F|_r)^T
基於方面的所有文檔之間的正常餘弦距離這會給你一個MxM
矩陣,它描述了文檔的相似性。
如果要計算術語相似度相反,你會簡單地計算
(|F|_c)^T*(|F|_c)
它給你一個NxN
矩陣描述基於文檔中共同出現次數術語相似。
請注意,PMC的計算基本上是相同的,只是在應用於每個矩陣乘法中的行和列的歸一化類型方面不同。
現在你的其他文章,你說你想知道如果termA
出現在文檔中,termB
也出現在同一個文檔中的可能性有多大。或正式說出p(termB | termA)
其中p(termX)
表示termX
出現在文檔中的概率。這是一個不同的野獸完全,但同樣很簡單的計算:
1. Count the number of documents in which `termA` appears (call it num_termA)
2. Count the number of documents in which both `termA` and `termB` appear (call it num_termA_termB)
then p(termB | termA)=num_termA_termB/num_termA
這是共同occurenct的可能性的實際工作中的統計指標。請注意,最有可能的關係p(termB | termA) == p(termA | termB)
不會成立,因此這種共同發生的測量方法根本無法用於通過MDS進行聚類,這很可能(無雙關聯)。
我的建議是嘗試PMC和餘弦相似性(正如你上面看到的,它們只在標準化方面有所不同,所以它們應該快速地實現兩者),然後檢查聚類後哪一個看起來更好。
還有一些更高級的技術用於基於一組文檔對主題進行聚類。術語文檔矩陣的主成分分析(PCA)或非負矩陣因子分析也經常使用(請參閱潛在語義分析或LSA瞭解更多信息)。然而,這可能是對你的用例矯枉過正,這些技術要難得多。 PMC和餘弦相似性具有絕對的好處,即死亡簡單易行(餘弦相似性更簡單一些,因爲歸一化更容易),因此很難出錯。
我試圖創建關於特定品牌的熱門話題及其關係(它們是否一起出現)的二維地圖。我有大約2500個社交媒體/網絡帖子(來自臉書,推特,董事會等)。我用標記,filtern(停用詞)和阻止帖子。然後我計算所有文件(帖子)/條款的tf-idf值。我用這個值來計算相關矩陣。相關矩陣被用來做一個多重縮放。輸出是所有主題(術語)的「映射」。一起發生的話題比不在一起發生的話題更接近。 – user1341610 2012-04-18 17:05:18
在我看來,餘弦相似性不適合我的方法,因爲它計算整個文章/文檔的相似度。我需要的是衡量術語是否相互關聯。就像如果有人在他的文章中寫道,他很可能也寫了XZ。 – user1341610 2012-04-18 17:38:16
@ user1341610:看看我的編輯,我希望我能清楚這一點。 – LiKao 2012-04-18 22:10:43