2017-06-15 167 views
0

我已經下面就本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 * MN2 * M維矩陣。我很困惑如何將可變長度句子的輸入轉換爲所需的輸入格式。

另外,如果有人可以建議我找一些其他方法來找到相同的東西,我將不勝感激。

+0

您可以發佈一些示例數據嗎? –

回答

0

如何:

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') 

當然,這種方法假定兩個表有共同的一個或多個列。您也可以任意刪除較大數據框中的列,但如果不知道您的使用案例,我不會推薦此列。

相關問題