【发布时间】:2023-03-03 11:38:01
【问题描述】:
我正在根据每个单词的 TD IDF 计算生成一个 txt 文件。
我正在使用此代码编写文件
w_writer = open("tf_idf_vectors_stops_2.txt", "w")
for x in xrange(0, len(listPatient)):
patientId = listPatient[x] #List for patientid
for words in tdDict_final[patientId]:
w_writer.write(patent + "," + str(multiListTokens.index(words[0])) + "," + str(words[2]))
w_writer.write("\n")
w_writer.close()
listPatient 是一个由有序 ID 组成的列表。
listPatient = ['001', '002', '003', '004']
tdDict_final 是一个字典,由作为键的 ID 和单词和单词值组成
在代码中我们将 word 和 word[2] 的值称为 words[0],因为 word[1] 将是“:”,tdDict_final 的格式如下所示。
{'001': [('dog', ':', '0.2534879), ('cat', ':', '0.0133487)],
'002': [('floor', ':', '0.047589'), ('board'), ':' ('0.099345)],
'003': [('key'), ':', '0.04993)],
'004': [('thanks', ':', '0.01479')]}
tdDict 包含 listPatient 中的所有患者
multilistTokens 是一个包含许多不同词汇(标记)的列表
multilistTokens 包含在 tdDict 中找到的所有可能的 dictinct 词汇表。
问题是,我上面的代码在写出来时非常缓慢且缓慢。
用上面的代码有没有办法提高写入txt文件的效率?
非常感谢
【问题讨论】:
-
那么这些天患者获得了专利?
-
你的列表和字典有多大;双循环可能是缓慢的实际原因,而不是写入磁盘。
-
另外,你有没有计算出这段代码需要多长时间:
multiListTokens.index(words[0])。只需在该双循环中运行它,无需任何写入或其他任何内容,然后让我们知道它是快得多还是同样慢。 -
这段代码应该写得很快,除非
multiListTokens很大。输出文件是否正确? -
len(multiListTokens) 是 444032
标签: python