如何检查二值化FairSeq数据集中的数值内容
fairseq二值化数据集探查方法
运行fairseq-preprocess脚本会生成二进制数据集文件,文件内存储的整数索引和字典中的token id一一对应。当原始分词文本已丢失时,不需要手动实现二进制解析逻辑,用fairseq内置接口就能快速完成探查,这也是目前最简便的方案。
具体操作步骤
- 首先确认你的二值化数据集目录结构:目录下需要包含对应语种的
dict.[语种].txt字典文件,以及对应数据分片的.idx、.bin后缀文件(比如训练集源端会生成train.en.idx、train.en.bin两个配套文件) - 在Python环境中执行以下代码,即可完成字典、数据集加载,并且可以把任意位置的token id序列还原为原始文本:
from fairseq.data import Dictionary, MMapIndexedDataset # 加载对应语种的字典,替换为实际的字典路径 dictionary = Dictionary.load("你的二值化数据集目录/dict.en.txt") # 加载目标二进制分片,注意路径不要加.idx/.bin后缀 dataset = MMapIndexedDataset("你的二值化数据集目录/train.en") # 探查指定序号的样本,比如查看第0条样本 sample_id = 0 token_ids = dataset[sample_id].tolist() # 将id序列转换回原始分词文本 restored_text = dictionary.string(token_ids) print(f"样本ID:{sample_id}") print(f"Token ID序列:{token_ids}") print(f"还原后的文本:{restored_text}") print(f"数据集总样本数:{len(dataset)}")
注意:加载二进制分片时传入的路径不要携带
.idx或.bin后缀,接口会自动匹配同目录下的两个配套文件,后缀写反或路径写错都会触发文件不存在报错。
如果只是需要快速查看数据集基础统计信息,不需要还原文本的话,直接执行一行Python命令即可拿到总样本数、平均句长等信息:python -c "from fairseq.data import MMapIndexedDataset; ds = MMapIndexedDataset('你的二值化数据集目录/train.en'); print(f'总样本数:{len(ds)}, 平均句长:{sum(len(i) for i in ds)/len(ds):.1f}')"
内容的提问来源于stack exchange,提问作者Jindřich
相关产品推荐
相关产品推荐

