【发布时间】:2017-11-17 13:40:43
【问题描述】:
我一直在关注link 上的代码来查找输入 X 和 Y 之间的相似性度量:
def similarity(X, Y, method):
X = np.mat(X)
Y = np.mat(Y)
N1, M = np.shape(X)
N2, M = np.shape(Y)
method = method[:3].lower()
if method=='smc': # SMC
X,Y = binarize(X,Y);
sim = ((X*Y.T)+((1-X)*(1-Y).T))/M
return sim
def binarize(X,Y=None):
''' Force binary representation of the matrix, according to X>median(X) '''
if Y==None:
X = np.matrix(X)
Xmedians = np.ones((np.shape(X)[0],1)) * np.median(X,0)
Xflags = X>Xmedians
X[Xflags] = 1; X[~Xflags] = 0
return X
else:
X = np.matrix(X); Y = np.matrix(Y);
XYmedian= np.median(np.bmat('X; Y'),0)
Xmedians = np.ones((np.shape(X)[0],1)) * XYmedian
Xflags = X>Xmedians
X[Xflags] = 1; X[~Xflags] = 0
Ymedians = np.ones((np.shape(Y)[0],1)) * XYmedian
Yflags = Y>Ymedians
Y[Yflags] = 1; Y[~Yflags] = 0
return [X,Y]
但是,它假设输入 X 和 Y 应该是N1 * M
和N2 * M 维矩阵。我对如何将可变长度句子的输入转换为所需的输入格式感到困惑。
另外,如果有人能建议我一些其他方法来找到相同的东西,我将不胜感激。
【问题讨论】:
-
你能发布一些示例数据吗?
标签: python matching similarity sentence-similarity