這系列文章會以連載形式呈現(xiàn)嫩絮,后面會不定時更新秽澳,旨在和大家一起分享學習相關的算法泻骤。
關于各個產品中的算法漆羔,像 CSDN 等技術博客都有介紹,總結下來有以下幾點:
- 代碼形式
- 解釋的層面和角度偏技術
- 缺乏實例
這就是我寫這系列文章的動機狱掂,希望通過實例和通俗易懂的語言來解釋算法的邏輯和具體的應用演痒。
本文的結構如下:
- 余弦相似度的數(shù)學表達式
- 公式解讀
- 應用實例
- 優(yōu)缺點
數(shù)學表達式
假設平面存在向量 a 和向量 b,由向量的點積公式可得倆向量的夾角:
將向量 a趋惨、b 賦予坐標嫡霞,如:a(x1,y1),b(x2,y2),代入上面公式每辟,得到:
將向量 a敏沉、b 由平面推廣到多維空間上(有相關論文已經證明推廣到多維空間集侯,公式仍然成立),得到:
公式解讀
數(shù)學上曾撤,這些公式很好理解,只是簡單的代換轉化晕粪,那么余弦相似度是怎么引用到產品上的呢挤悉?這里有個思維的轉換:我們先把文本當作是一個向量,里面出現(xiàn)的詞頻數(shù)量當作上述公式中多維向量的坐標巫湘。運用上面的公式就可以算出兩個文本的相似程度装悲;具體我們看一下下面的例子。
應用實例
例 文本1:“產品經理”尚氛;文本2:“數(shù)據(jù)產品經理和項目經理”诀诊,現(xiàn)在用上面的公式計算文本1和文本2的相似度。
我們首先將文本1和文本2進行分詞(關于分詞阅嘶,后面的文章會介紹)属瓣,文本1分詞后:“產品/經理”载迄;文本2分詞后:“數(shù)據(jù)/產品/經理/和/項目/經理”。分詞完成后抡蛙,將分好的詞形成并集得到{數(shù)據(jù)护昧,產品,經理粗截,和惋耙,項目}。我們把文本1和文本2分別命名為向量 A 和向量 B 熊昌,接下來計算 A绽榛、B 的坐標;并集中的詞一共有5個浴捆,那么這5個詞分別在文本1和文本2中出現(xiàn)了多少次很容易得出來蒜田,形成以下這個表格
將這些詞在文本中出現(xiàn)的次數(shù)定義為該向量的坐標就有:
A(0,1选泻,1冲粤,0,0)
B(1页眯,1梯捕,2,1窝撵,1)
那么傀顾,代入上面的公式為
如果一模一樣為100%的話,那么75%這個數(shù)值就可以來衡量文本1和文本2的相似度碌奉,其實通過字面意思短曾,我們也可以判斷兩個文本是很相似的,無論數(shù)據(jù)產品經理赐劣、產品經理嫉拐、項目經理在某些環(huán)境下,其實就是同一個人??魁兼。
優(yōu)缺點
在分析優(yōu)缺點的時候婉徘,我們先看一看余弦相似度的應用場景:
- 文本本身對字或者詞的順序不敏感,可以應用咐汞。比喻“蛋炒飯”和“飯炒蛋”盖呼、“王者榮耀”和“榮耀王者”等等。
- 篇幅大化撕,字數(shù)多的文本几晤,一篇文章,一篇論文植阴,一本小說等等锌仅,可以應用章钾。如果兩篇文章的相似度很高,就說明兩篇文章的用詞很多是重復的热芹,存在抄襲行為贱傀;還記得大學時候編造論文字數(shù)的日子嗎,經常會自己去驗重伊脓,對的沒錯府寒,就是用這個原理啦!报腔!
優(yōu)點:
- 操作簡單株搔,不需要很復雜的處理,分詞后得出詞頻纯蛾,就可以計算
- 短文本纤房,長文本都可以使用
- 軟文、新聞翻诉、論文等領域都可以使用炮姨,日頭條,*云音樂等等推薦應用運用了這種思維碰煌。
缺點:
- 對順序敏感的文本不適用舒岸。像年號等等,如:“二零一八年”和“二一零八年”芦圾;“數(shù)據(jù)產品”和“產品數(shù)據(jù)”等似度是100%蛾派,其實字面意思看得出,這兩個文本表達的意思完全不同个少。
- 重復字詞較多的文本洪乍。如某個領導對你說:“產品!數(shù)據(jù)數(shù)據(jù)據(jù)數(shù)據(jù)數(shù)據(jù)夜焦!”和“產品產品產品產品壳澳!數(shù)據(jù)!”兩個文本的交集就是其并集糊探,相似度為100%,但是表達的測重點是不一樣的河闰。
一個算法只是一個模型科平,需要人工運營團隊不斷完善,因為不結合環(huán)境以及語義只靠算法判斷相似性對用戶是不負責任的行為姜性。