【发布时间】:2016-08-12 10:10:54
【问题描述】:
我正在尝试计算一组查询与每个查询的一组结果之间的相似性。我想使用 tfidf 分数和余弦相似度来做到这一点。我遇到的问题是我无法弄清楚如何使用两列(在熊猫数据框中)生成 tfidf 矩阵。我已经连接了两列,它工作正常,但使用起来很尴尬,因为它需要跟踪哪个查询属于哪个结果。我将如何一次计算两列的 tfidf 矩阵?我正在使用 pandas 和 sklearn。
以下是相关代码:
tf = TfidfVectorizer(analyzer='word', min_df = 0)
tfidf_matrix = tf.fit_transform(df_all['search_term'] + df_all['product_title']) # This line is the issue
feature_names = tf.get_feature_names()
我正在尝试将 df_all['search_term'] 和 df_all['product_title'] 作为参数传递给 tf.fit_transform。这显然不起作用,因为它只是将字符串连接在一起,这不允许我将 search_term 与 product_title 进行比较。另外,有没有更好的方法来解决这个问题?
【问题讨论】:
-
您需要在
df_all['search_term'] + " " + df_all['product_title']中添加一个空格,否则您可能会将产品的第一个单词与搜索的最后一个单词结合起来 -
你也不需要
analyzer=word,因为这是默认值 -
代码中的那一行不是我想要的,我希望将术语和产品分开,以便计算搜索和产品之间的余弦相似度。
-
我知道,我只是说,如果你想将它们组合在一起,你需要添加空间,将来某个时候你会需要这个
标签: python pandas scikit-learn tf-idf