Neil Zhu,簡書ID Not_GOD甸鸟,University AI 創(chuàng)始人 & Chief Scientist,致力于推進(jìn)世界人工智能化進(jìn)程。制定并實施 UAI 中長期增長戰(zhàn)略和目標(biāo)励稳,帶領(lǐng)團(tuán)隊快速成長為人工智能領(lǐng)域最專業(yè)的力量。
作為行業(yè)領(lǐng)導(dǎo)者囱井,他和UAI一起在2014年創(chuàng)建了TASA(中國最早的人工智能社團(tuán)), DL Center(深度學(xué)習(xí)知識中心全球價值網(wǎng)絡(luò))驹尼,AI growth(行業(yè)智庫培訓(xùn))等,為中國的人工智能人才建設(shè)輸送了大量的血液和養(yǎng)分庞呕。此外新翎,他還參與或者舉辦過各類國際性的人工智能峰會和活動,產(chǎn)生了巨大的影響力住练,書寫了60萬字的人工智能精品技術(shù)內(nèi)容地啰,生產(chǎn)翻譯了全球第一本深度學(xué)習(xí)入門書《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》,生產(chǎn)的內(nèi)容被大量的專業(yè)垂直公眾號和媒體轉(zhuǎn)載與連載澎羞。曾經(jīng)受邀為國內(nèi)頂尖大學(xué)制定人工智能學(xué)習(xí)規(guī)劃和教授人工智能前沿課程髓绽,均受學(xué)生和老師好評。
Cosine similarity
image
由于在索引中的數(shù)據(jù)結(jié)構(gòu)是倒排索引妆绞,其結(jié)構(gòu)如下:
倒排索引(<word doc_i1 doc_i2 doc_ik ...>
)
舉例如下:
Word occurrence@DocID........
cat 6@Doc1 3@Doc2 4@Doc3... etc
Hot 9@Doc1 2@Doc3 10@Doc5... etc
倒排索引是MapReduce的關(guān)鍵部分顺呕。我們需要解決的問題是將兩個文檔向量(也就是將要進(jìn)行比較的文檔)輸入到reducer中。
我們要考慮的是<Doc1, Doc3>
的相似性括饶。如何獲得他們對應(yīng)的向量并傳給reducer株茶?
相當(dāng)簡單~
Mapper的輸出應(yīng)該是這樣的:
Key:<Document_one, Document_two> Value:<occurrence, occurrence>
所以對上面的兩個文檔,<Doc1, Doc3>
對應(yīng)第一個word cat
將是:
Key:<doc1, doc3> Value:<6, 3>
通過這樣的方法图焰,在reducer中启盛,你們會有這些值的一個list,對兩個文檔中出現(xiàn)的word的向量技羔,這就可以在reducer中計算相似度了僵闯。
當(dāng)然,也可以將occurrence
改稱TF
或者TF-IDF
向量或者其他什么東西藤滥。這里的關(guān)鍵就是要得到正確的KEY-VALUE鳖粟。
在reducer這兒,你可以獲得:
Key: <doc1, doc3> Value: [<6, 4>, <9, 2>]
因此拙绊,余弦相似度可以直接通過doc1 (6, 9)
和doc3 (4, 2)
點乘獲得:
(6*4)+(9*2)... etc for larger vectors
分母部分可以這樣計算:
sqrt(6^2 + 9^2) * sqrt(4^2 + 2^2) * ...
你可以在reducer中進(jìn)行這個計算向图,因為你有兩個文檔的向量泳秀。當(dāng)然在你的值計算完后,你可以以任何方式從reducer中輸出他們