2017-06-15 8 views
0

J'ai suivi le code sur ce link pour trouver la mesure de similarité entre l'entrée X et Y:Comment trouver la mesure de similarité entre deux phrases en utilisant le simple coefficient de correspondance?

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] 

Cependant, il suppose que l'entrée X et Y doivent être N1 * M et N2 * M matrices dimensions respectivement. Je suis confus à la façon de convertir mes entrées qui sont des phrases de longueur variable dans le format d'entrée requis.

En outre, je serais reconnaissant si quelqu'un pourrait me suggérer une autre méthode pour trouver la même chose.

+0

pouvez-vous poster des exemples de données? –

Répondre

0

Que diriez-vous ceci:

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

Bien sûr, cette approche suppose que les deux tables ont une ou plusieurs colonnes en commun. vous pouvez également supprimer des colonnes de la plus grande des données arbitrairement, mais je ne recommanderais pas cela sans connaître votre cas d'utilisation