def GS_kernel_precomp_P(str1, str2, psiDict, sigmaPos, sigmaAA, L, P):
len_str1 = len(str1)
len_str2 = len(str2)
A = np.zeros((len_str1, len_str2))
for i in xrange(len_str1):
for j in xrange(len_str2):
try:
A[i, j] = psiDict[str1[i], str2[j]]
except:
if str1[i] != str2[j]:
A[i, j] = 4.0
A /= -2.0 * (sigmaAA ** 2.0)
A = np.exp(A)
B = np.zeros((len_str1, len_str2))
for i in xrange(len_str1):
for j in xrange(len_str2):
tmp = 1.0
for l in xrange(L):
if i + l < len_str1 and j + l < len_str2:
tmp *= A[i + l, j + l]
B[i, j] += tmp
return np.sum(P * B)
评论列表
文章目录