【问题标题】:How to find similarity measure between two sentences using Simple Matching Coefficient?如何使用简单匹配系数找到两个句子之间的相似性度量?
【发布时间】: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 * MN2 * M 维矩阵。我对如何将可变长度句子的输入转换为所需的输入格式感到困惑。

另外,如果有人能建议我一些其他方法来找到相同的东西,我将不胜感激。

【问题讨论】:

  • 你能发布一些示例数据吗?

标签: python matching similarity sentence-similarity


【解决方案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')

当然,这种方法假定两个表有一个或多个共同的列。您也可以从较大的数据框中任意删除列,但如果不了解您的用例,我不建议这样做

【讨论】:

    猜你喜欢
    • 2014-01-05
    • 2016-12-14
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多