【问题标题】:How can I easily change tf-idf similarity dataframe using apply如何使用 apply 轻松更改 tf-idf 相似性数据框
【发布时间】:2019-09-02 07:47:48
【问题描述】:

我正在使用 Python 3。
我在做TF_IDF,记录了80%以上的结果。
但是对于太慢了。因为形状是 51,336 x 51,336。
如何在不使用 for 语句的情况下更快地创建数据帧。
现在需要 50 分钟。
我想做一个这样的数据框。

[column_0],[column_1],[相似度]
索引[0]、列[0]、值
索引[0]、列[1]、值
索引[0]、列[2]、值
....
索引[100],列[51334],值
索引[100],列[51335],值
索引[100],列[51336],值
...
索引[51336],列[51335],值
索引[51336],列[51336],值

cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)
indices = pd.Series(df.index, index=df['index_name'])
tfidf_matrix = tf.fit_transform(df['text'])
similarity = pd.DataFrame(columns=['a', 'b', 'similarity'])

for n in range(len(cosine_sim)):
    for i in list(enumerate(cosine_sim[n])):
        if i[1] > 0.8 and i[1] < 0.99:
            similarity = similarity.append({'column_0': indices.index[n],'column_1': indices.index[i[0]],'similarity': i[1]},ignore_index=True)

【问题讨论】:

    标签: python-3.x pandas dataframe apply tf-idf


    【解决方案1】:

    如果您考虑并行化作业,不幸的是,无法并行化/分配对这些矢量化器所需词汇的访问。 因此,您为此选择了替代黑客。通过使用 hashvectorizer。 这个 scikit 文档很好地提供了一个使用这个矢量化器批量训练分类器的例子。 https://scikit-learn.org/stable/auto_examples/applications/plot_out_of_core_classification.html.

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2010-12-31
      • 2017-10-05
      • 1970-01-01
      • 2017-01-04
      • 2017-07-27
      • 2012-11-20
      • 2012-04-30
      • 1970-01-01
      • 2017-02-03
      相关资源
      最近更新 更多