我正在寻找大文本文件来测试从 1kb 到 100mb 的所有大小的压缩和解压缩。有人可以推荐我从某个链接下载它吗?
*** 仅限 Linux 用户 ***
可以使用以下命令在 Linux 上生成任意大的文本文件:
tr -dc "A-Za-z 0-9" < /dev/urandom | fold -w100|head -n 100000 > bigfile.txt
此命令将生成一个文本文件,其中包含 100,000 行随机文本,如下所示:
NsQlhbisDW5JVlLSaZVtCLSUUrkBijbkc5f9gFFscDkoGnN0J6GgIFqdCLyhbdWLHxRVY8IwDCrWF555JeY0yD0GtgH21NotZAEe
iWJR1A4 bxqq9VKKAzMJ0tW7TCOqNtMzVtPB6NrtCIg8NSmhrO7QjNcOzi4N b VGc0HB5HMNXdyEoWroU464ChM5R Lqdsm3iPo
1mz0cPKqobhjDYkvRs5LZO8n92GxEKGeCtt oX53Qu6T7O2E9nJLKoUeJI6Ul7keLsNGI2BC55qs7fhqW8eFDsGsLPaImF7kFJiz
...
...
在我的 Ubuntu 18 上,其大小约为 10MB。增加行数,从而增加大小,很容易。只需增加
head -n 100000
部分即可。所以,说这个命令:
tr -dc "A-Za-z 0-9" < /dev/urandom | fold -w100|head -n 1000000 > bigfile.txt
将生成一个包含 1,000,000 行随机文本的文件,大小约为 100MB。在我的商用硬件上,后一个命令大约需要 3 秒才能完成。
不要忘记语料库的收藏
The Canterbury Corpus
The Artificial Corpus
The Large Corpus
The Miscellaneous Corpus
The Calgary Corpus
The Canterbury Corpus
参见:https://corpus.canterbury.ac.nz/descriptions/
每组都有可用文件的下载链接
您可以从这里下载enwik8和enwik9。它们分别是用于压缩基准的 100,000,000 和 1,000,000,000 字节文本。您始终可以提取其中的子集进行较小的测试。
古腾堡计划在这方面看起来非常有前途。该资源包含数千本多种格式的书籍。以下是可用内容的示例:
单击任何链接都会显示始终包含纯文本 UTF-8 和
.txt
的各种格式:
获取大量随机文本数据进行压缩测试的另一个可能的地方是数据转储站点,例如Wiki甚至Stack Exchange
我还发现这篇博客文章列出了 10 个开源位置来获取复杂的文本数据以进行分析测试。
有很多在线资源可用于创建任意或特定大小的大型文本文件,例如我用于脚本开发的Lorem Ipsum Generator,但我了解到这些资源不适合压缩测试,因为词语往往是有限的和重复的。因此,这些文件的压缩程度将远远高于自然文本。
您可以将其与 python 一起使用(如果尚未下载,请在 python.org 上下载);这将生成一个完全由“M”组成的文件:
size = ''
while not size.isnumeric():
size = input('How big would you like your file to be (mb)? ')
size = int(size)
name = input('Where would you like to locate the file? ')
open(name, 'w').write('')
for mb in range(size):
open(name, 'a').write('M' * 1000000)
print('Done!')
或者,您可以使用它来生成完全随机的文件:
import random
size = ''
characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
while not size.isnumeric():
size = input('How big would you like your file to be (mb)? ')
size = int(size)
name = input('Where would you like to locate the file? ')
open(name, 'w').write('')
for mb in range(size):
open(name, 'a').write(''.join(random.choices(characters, k=1000000)))
print('Done!')
最后,生成一堆单词之间有空格:
import random
size = ''
words = '''
hello
goodbye
yay!
''' # Your words list here, separated by newlines
words = words.split('\n')
wl = []
print('Interpreting list...\n')
for word in words:
if word.strip():
wl.append(word.strip() + ' ')
words.remove(word)
while not size.isnumeric():
size = input('How big would you like your file to be (\'1\' would be 1000 words)? ')
size = int(size)
name = input('What would you like to be the path to the file? ')
open(name, 'w').write('')
for word in range(size):
open(name, 'a').write(''.join(random.choices(wl, k=1000)))
print('Done!')
请记住,其中一些比其他需要更长的时间;单词列表可能需要相当长的时间。
您只需点击一下即可从 https://www.learningcontainer.com/ 下载免费样本大文本文件,不会受到任何干扰。另外,这里提供了 1000+ a 到 z 类型的示例文件可供使用。