如何使用 apply 轻松更改 tf-idf 相似性数据框
How can I easily change tf-idf similarity dataframe using apply
我正在使用 Python 3.
我在做TF_IDF,记录了80%以上的结果
但是对于太慢了。因为形状是 51,336 x 51,336。
如何在不使用 for 语句的情况下更快地创建数据帧。
现在需要 50 分钟。
我想制作这样的数据框。
[column_0],[column_1],[similarity]
index[0], column[0], value
index[0], column[1], value
index[0], column[2], value
....
index[100], column[51334], value
index[100], column[51335], value
index[100], column[51336], value
...
index[51336], column[51335], value
index[51336], column[51336], value
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)
如果您考虑将作业并行化,不幸的是,无法parallelize/distribute 访问这些矢量化程序所需的词汇表。
因此,您为此选择了替代黑客。通过使用 hashingvectorizer。
对于这个 scikit 文档,提供了一个使用这个向量化器批量训练分类器的例子。
https://scikit-learn.org/stable/auto_examples/applications/plot_out_of_core_classification.html.
希望对您有所帮助
我正在使用 Python 3.
我在做TF_IDF,记录了80%以上的结果
但是对于太慢了。因为形状是 51,336 x 51,336。
如何在不使用 for 语句的情况下更快地创建数据帧。
现在需要 50 分钟。
我想制作这样的数据框。
[column_0],[column_1],[similarity]
index[0], column[0], value
index[0], column[1], value
index[0], column[2], value
....
index[100], column[51334], value
index[100], column[51335], value
index[100], column[51336], value
...
index[51336], column[51335], value
index[51336], column[51336], value
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)
如果您考虑将作业并行化,不幸的是,无法parallelize/distribute 访问这些矢量化程序所需的词汇表。 因此,您为此选择了替代黑客。通过使用 hashingvectorizer。 对于这个 scikit 文档,提供了一个使用这个向量化器批量训练分类器的例子。 https://scikit-learn.org/stable/auto_examples/applications/plot_out_of_core_classification.html.
希望对您有所帮助