У меня есть данные, которые выглядят следующим образом ...
+-----------+--------------------+
| searchterm| title|
+-----------+--------------------+
|red ball |A big red ball |
|red ball |A small blue ball |
|... |... |
+-----------+--------------------+
Я пытаюсь найти косинусное сходство между столбцом searchterm и столбцом заголовка в Scala.Я могу маркировать каждый столбец без проблем, но большинство реализаций сходства, которые я обнаружил в Интернете, работают по строкам, а не по столбцам, то есть они сравнивают «большой красный шар» с «маленьким синим шаром», а не с перекрестным сравнением столбцов.Я действительно хочу.Есть идеи?Я очень новичок в Scala, но это то, как я бы делал это на Python.
def get_text_cosine_similarity(row):
# Form TF-IDF matrix
text_arr = row[['searchterm', 'title']].values
tfidf_vectorizer = TfidfVectorizer()
tfidf_matrix = tfidf_vectorizer.fit_transform(text_arr)
# Get cosine similarity 'score', assuming keyword is at index 0
similarity_scores = cosine_similarity(tfidf_matrix[0], tfidf_matrix)
return pd.Series(similarity_scores[0][1:])
df[['title_cs']] = df.apply(get_text_cosine_similarity, axis=1)
Использование sklearn.metrics.pairwise.cosine_similarity
и sklearn.feature_extraction.text.TfidfVectorizer