Как найти меру сходства между двумя предложениями, используя простой коэффициент соответствия?
Я следовал за кодом по этой ссылке, чтобы найти меру сходства между входами 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
размерные матрицы соответственно. Я запутался в том, как преобразовать мой ввод, представляющий собой предложения переменной длины, в требуемый формат ввода.
Кроме того, я был бы признателен, если бы кто-то мог предложить мне другой способ найти то же самое.
1 ответ
Как насчет этого:
import pandas as pd
df1=pd... #I'd like to see how you generate your data
df2=pd...
cols_common=list(set(df1.columns).intersection(df2.columns))
df1=df1[cols_common]
df2=df2[cols_common]
result=similarity(df1,df2,'smc')
Конечно, этот подход предполагает, что две таблицы имеют один или несколько общих столбцов. Вы также можете произвольно удалять столбцы из большего информационного блока, но я бы не рекомендовал это, не зная вашего варианта использования