如何使用Apply轻松更改TF-IDF相似性数据帧

时间:2019-09-02 07:47:48

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

我正在使用Python3。
我正在做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)

1 个答案:

答案 0 :(得分:0)

如果您想到并行化一项工作,那么很遗憾,没有办法并行化/分发对这些矢量化器所需的词汇的访问。 因此,您为此选择了另一种方法。通过使用 hashingvectorizer 。 为此scikit文档提供了一个示例,该示例使用此向量化器来训练分类器。  https://scikit-learn.org/stable/auto_examples/applications/plot_out_of_core_classification.html

希望这对您有帮助