У меня есть pd.DataFrame (named df_sim)
, как указано ниже (это только образец)
Редактировать
Type Sent
icro soft student advantage why should i connect to vpn
Microsoft Student Advantage why should i connect to vpn
the V P N why should i connect to vpn
the V PN why should i connect to vpn
my laundry bucks why should i connect to vpn
CSI why should i connect to vpn
Моя цель - найти наиболее похожие 'Наберите 'из предоставленного' Отправлено '.Я выполняю косинусное сходство и необходимые коды следующие.
df_sim['Type'] = df_sim['Type'].apply(lambda x : re.sub('[^A-Za-z0-9]',' ',x))
vect = TfIdfVectorizer()
vect.fit(df['Type'] +" " +df['Sent'])
A = vect.transform(df['Type'])
B = vect.transform(df['Sent'])
sim = paired_cosine_distances(A,B) #from from sklearn.metrics.pairwise
import paired_cosine_distances
y = df_sim.iloc[np.argmin(sim)]['Type']
Я ожидал, что np.argmin(sim)
будет 2 или 3, и, таким образом, y будет 'the V PN' or 'the V P N'
.Вместо этого я получаю np.argmin (sim) равным 5, а y - CSI. С этим у меня есть два вопроса:
Должен ли я вообще использовать косинус-подобие?может ли регулярное выражение, как материал будет делать необходимое?
Почему я не получаю правильную фразу в столбце «Тип».Во многих случаях вышеупомянутая техника работает, но здесь это не так.Почему?