4个版本
0.2.0 | 2021年3月3日 |
---|---|
0.1.2 | 2020年9月8日 |
0.1.1 | 2020年9月5日 |
0.1.0 | 2020年9月4日 |
#404 in 科学
22KB
358 行
SSsam
SSsam,即split sampler,可以将一个或多个基于文本的输入文件通过随机抽样分割成多个集合。这对于将数据分割成训练集、测试集和开发集,或任何您想要的集合非常有用。
特性
- 将输入分割成多个集合,用户可以指定每个集合的大小,可以是绝对数值或相对分数。
- 支持不替换(默认)或替换抽样。
- 默认为基于行的抽样,但可以配置自定义分隔符以抽样大小可变的大块。
- 可以处理多个输入文件,这些文件将被视为相关。对于分割和抽样并行语料库很有用。
- 默认情况下保留顺序,使用
--shuffle
以获得更多随机性。 - 指定随机数生成器的种子以创建可重复的样本。
安装
使用Rust的包管理器安装它
cargo install ssam
您的系统上还没有cargo/rust吗?在基于Debian/ubuntu的系统上使用sudo apt install cargo
,在mac上使用brew install rust
,或使用rustup。
用法
有关详细信息,请参阅ssam --help
。
假设您有一个文本文件sentences.txt
,每行一个句子,您想将句子抽样到测试集、开发集和训练集,分别占10% (0.1
)、10% (0.1
)和剩余部分 (*
)。
$ ssam --sizes "0.1,0.1,*" --names "test,dev,train" sentences.txt
这将输出三个文件:sentences.train.txt
、sentences.test.txt
和sentences.dev.txt
。如果您没有明确指定任何名称,则中缀将简单地为set1
、set2
、set3
等。
假设你有一个名为 sätze.txt
的文件,里面包含相同的德语文本,并且这些句子与 sentences.txt
中的句子对齐得很好(即相同的行号对应并包含翻译)。现在你可以按照以下方式执行依赖分割:
$ ssam --shuffle --sizes "0.1,0.1,*" --names "test,dev,train" sentences.txt sätze.txt
输出集中的每个集合中,句子仍然是对应的。我们还添加了 --shuffle
以在输出顺序中获得更多的随机性,因为默认情况下 ssam 会保留顺序。
Ssam 也可以从 stdin 读取(如果你只想提供一个输入文档)。如果你只进行一次采样(而不是像上面那样三次),它将简单地输出到 stdout。
你不仅可以按行为单位,还可以手动指定分隔符。例如,如果你想以空行为分隔符,例如常用于分隔段落的情况,可以设置 --delimiter ""
(空分隔符)。或者,你可以将其设置为输入中的显式标记,例如 --delimiter "<utt>"
。
纪念
怀念我们的小猫 Sam,2009-2019。
依赖
~1MB
~16K SLoC