使用余弦相似度比较 Pandas 数据帧的多列之间的文本

问题描述

我希望使用余弦相似度来计算 Pandas 数据框的列之间的相似度。我将 6 个文本列分为 2 个部分,前 3 列是第一部分 [textA、textB、textC],其余在第二部分 [text1、text2、text3]。 我必须将 sec1 中的每一列与 sec2 的所有列进行比较,并根据通过创建单独的列找到或未找到的匹配项返回匹配项、相似性分数和真假。

试图通过使用下面的代码来实现这一点,但无法完成它如何矢量化列和计算相似度,有人可以在这方面指导我,

count_vectorizer = TfidfVectorizer(stop_words='english')
sparse_matrix = count_vectorizer.fit_transform(data[[]])

doc_term_matrix = sparse_matrix.todense()
df = pd.DataFrame(doc_term_matrix,columns=count_vectorizer.get_feature_names(),index=[data.iloc[0:,:]])

list_1 = ['Text A','Text B','Text C' ]
list_2 = ['Text 1','Text 2','Text 3']

list_entity = []
list_best_name = []

for col in df.columns:
#print(col)

    for col1 in list_1:
        if col1 in col:
            first_list.append(col)
        
    for col2 in list_2:
        if col2 in col:
            next_list.append(col)
first_list,next_list

def lets_match(x):

    for text1 in next_list:
        for text2 in first_list:
            try:
                if x[text1] in x[text2]:
                    return True
            except:
                continue
    return False
df['output'] = df.apply(lets_match,axis =1)
print(df)

期望输出如以下数据的最后 3 列。

以下是csv格式的数据,

Text A,Text B,Text C,Text 1,Text 2,Text 3,Match,Similirity score,Result
SIDdis JEWELS INDIA LLP,SANJAY SHRESTHA,[FINANCIAL DEPARTMENT,HOTEL TAJ TASHI,BHUTAN],MEGA INTERNATIONAL COMMERCIAL BANK,[LION LIMITED,FLAT/RMA5,9/F SILVERCORP INTERNATIONAL TOWER],0.53,TRUE
T BANK LIMITED,PUNJAB NATIONAL BANK,KINGXIN INTERNATIONAL TradE CO,PUNJAB BANK,[SILVERCORP INTERNATIONAL TOWER,HONG KONG],0.67,FALSE
MEGA INTERNATIONAL COMMERCIAL BANK,9/F CORP INTERNATIONAL TOWER],SIDdis JEWELS INDIA LLP,France,[MCC COMPLEX BUILDING,OPPOSITE TO HOTEL TAJ TASHI],FALSE
SIDdis JEWELS INDIA LLP,Italy,Anil Kumar,[CORP INTERNATIONAL TOWER,0.34,TRUE
BABA DAWOO COMMERCIAL VEHICLES,Syrian arab Republic,[CORP NATIONAL TOWER,T BANK LIMITED,Syria,0.95,UAE,Neerav Modi,0.83,FALSE
ANDANI GLOBAL PTE LTD,north Korea,NTS (ASIA PACIFIC) PTE LTD,TRUE
KINGXIN INTERNATIONAL TradE CO,ADANI GLOBAL FZE,FALSE
AMIAN DIAMONDS NV,Vijay Malya,AMIAN DIAMONDS NV,TRUE
AMIAN DIAMONDS NV,Mohammad Ali,9/F CORP NATIONAL TOWER],ANDANI GLOBAL FZE,Ali Mohammad,TRUE
NET ELECTRONICS L L C,Iran,TRUE
GEGA INTERNATIONAL COMMERCIAL BANK,Rajendra Nagar,[CORP INTERNATIONAL,CORP INTERNATIONAL,HONG KONG,TRUE

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)