句子相似度--余弦相似度算法的实现
- 1、余弦相似度
余弦距離,也稱為余弦相似度,是用向量空間中兩個(gè)向量夾角的余弦值作為衡量?jī)蓚€(gè)個(gè)體間差異的大小的度量。余弦值越接近1,就表明夾角越接近0度,也就是兩個(gè)向量越相似,這就叫"余弦相似性"。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
上圖兩個(gè)向量a,b的夾角很小可以說(shuō)a向量和b向量有很高的的相似性,極端情況下,a和b向量完全重合。如下圖:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
如上圖可以認(rèn)為a和b向量是相等的,也即a,b向量代表的文本是完全相似的,或者說(shuō)是相等的。如果a和b向量夾角較大,或者反方向,可以說(shuō)a向量和b向量有很低的的相似性,或者說(shuō)a和b向量代表的文本基本不相似。
向量a和向量b的夾角 的余弦計(jì)算如下:
? ? ??
擴(kuò)展,如果向量a和b不是二維而是n維,上述余弦的計(jì)算法仍然正確。假定a和b是兩個(gè)n維向量,a是? ,b是? ,則a與b的夾角 的余弦等于:
?
- 2、如下舉例說(shuō)明利用余弦計(jì)算句子相似度
句子A:這只皮靴號(hào)碼大了。那只號(hào)碼合適
句子B:這只皮靴號(hào)碼不小,那只更合適
怎樣計(jì)算上面兩句話的相似程度?
基本思路是:如果這兩句話的用詞越相似,它們的內(nèi)容就應(yīng)該越相似。因此,可以從詞頻入手,計(jì)算它們的相似程度。
第一步,分詞。
句子A:這只/皮靴/號(hào)碼/大了。那只/號(hào)碼/合適。
句子B:這只/皮靴/號(hào)碼/不/小,那只/更/合適。
第二步,列出所有的詞。
這只,皮靴,號(hào)碼,大了。那只,合適,不,小,更
第三步,計(jì)算詞頻。(下面程序用的jieba分詞工具所以結(jié)果不一樣但不影響計(jì)算)
句子A:這只1,皮靴1,號(hào)碼2,大了1。那只1,合適1,不0,小0,更0
句子B:這只1,皮靴1,號(hào)碼1,大了0。那只1,合適1,不1,小1,更1
第四步,寫(xiě)出詞頻向量。
句子A:(1,1,2,1,1,1,0,0,0)
句子B:(1,1,1,0,1,1,1,1,1)
第五步,利用上述公式計(jì)算
- 3、python代碼實(shí)現(xiàn)
- 4、運(yùn)行結(jié)果
轉(zhuǎn)載于:https://www.cnblogs.com/Jm-15/p/9406425.html
總結(jié)
以上是生活随笔為你收集整理的句子相似度--余弦相似度算法的实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何运行vue项目(维护他人的项目)
- 下一篇: Aho-Corasick automat