鉴于:
a.txt
包含数百万行(比如每行一个句子)(2.6 GB!b.txt
包含 830k 行对 [word1] [word2]
题:
如何对巨大的文本文件中的每个 830k 元组 (w1, w2) 执行每个 word1 由 word2 最有效的替换?
像 sed、perl、python 等简单的方法需要数周才能完成。是否有(可能是基于并行化的)方法来执行替换负载?
最佳答案
我会用 python 来做,但如果算法正确,任何其他语言都可以完成这项工作。
整个技巧是将单词对(文件 b.txt)保存在内存中,并一次性遍历大文件。由于 I/O 操作比从 RAM 读取慢得多,因此这种方法的性能将是 O(file1) + O(file2)
在伪代码中:
myMap = {}
for line in fileB:
myMap[1st word of line] = 2nd word of line
for line in fileA
for word in line
if myMap contains word
replace word with myMap[word]
我想这是你能得到的最快的速度。
关于text - 使用大量替换对在文本文件中执行大量替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/752461/