天天看點

python 文本相似度_python實作的文本相似度算法(餘弦定理)

隻對漢字進行相似度分析,以單個字為向量,然後每個字在章節中出現的次數,便是以此字向量的值。現在我們假設:

章節1中出現的字為:Z1c1,Z1c2,Z1c3,Z1c4……Z1cn;它們在章節中的個數為:Z1n1,Z1n2,Z1n3……Z1nm;

章節2中出現的字為:Z2c1,Z2c2,Z2c3,Z2c4……Z2cn;它們在章節中的個數為:Z2n1,Z2n2,Z2n3……Z2nm;

其中,Z1c1和Z2c1表示兩個文本中同一個字,Z1n1和Z2n1是它們分别對應的個數,

最後我們的相似度可以這麼計算:

python 文本相似度_python實作的文本相似度算法(餘弦定理)

代碼如下:

#_*_encoding:utf-8_*_

import math

import time

#---------------------------------------------------------------

# 文本相似度計算

# 值0-1, 越靠近1越相似

#---------------------------------------------------------------

def Similarity(s1, s2):

'''

相似度計算,輸入必須為unicode編碼,且不為空

僅計算漢字

'''

#漢字U編碼 4E00-9FA5

tmp = {}

for i in s1:

a = ord(i)

if 0x4DFF

try:

tmp[a][0] = tmp[a][0] + 1

except:

tmp[a] = [1, 0]

for i in s2:

a = ord(i)

if 0x4DFF