0

我正在计算大型文档中的 tf-idf。我的单词数超过80,000。我正在尝试在 csv 文件中编写稀疏矩阵。我正在使用类似于在此处回答的代码如何使用 Python 向 CSV 文件添加新列?

输出文件太大,超过 700 MB,仅约 30,000 字。所以,我的问题是如何有效地编写它?谢谢你。

4

2 回答 2

14

您可以使用 gzip 模块轻松地直接编写 gzip 文件:

import gzip
import csv

f=gzip.open("myfile.csv.gz", "w")
csv_w=csv.writer(f)
for row in to_write :
    csv_w.writerow(row)
f.close()

不要忘记关闭文件,否则生成的 csv.gz 文件可能无法读取。

你也可以用更 Pythonic 的风格来做:

with gzip.open("myfile.csv.gz", "w") as f :
    csv_w = csv.writer(f)
    ...

这保证了文件将被关闭。

希望这可以帮助。

于 2013-03-17T21:26:00.210 回答
2

CSV就是 CSV,您对此无能为力。如果你真的想坚持使用 CSV,你可以简单地gzip它,或者你可以使用一些更适合你需要的自定义格式。

例如,您可以使用字典并导出为JSON格式,或者创建一个专门的对象来处理您的数据并将其腌制

当我使用 TF-IDF 时,我使用sqlite(通过sqlalchemy)来存储文档信息,TF 数据作为 JSON 格式的字典。从此我创建了 IDF 统计数据,然后使用numpy完成了 TFIDF 的其余部分

于 2013-03-17T18:41:11.243 回答