Tatoeba

📌 核心要点

Tatoeba(日语「例え」,意为"例如")是一个开源的多语言句子数据库—— 志愿者贡献各种语言的句子,并标注哪些句子互为翻译。 截至 2026 年 9 月,已收录 1357 万+ 句子、429 种语言、2850 万条翻译链接,采用 CC-BY 2.0 许可, 是跨语言定量研究(尤其是平行句向量距离实验)的核心语料来源。


一、基本信息

项目 说明
名称 Tatoeba(日语 たとえ / 例え = "for example")
网址 tatoeba.org
创建时间 2006 年
创始人 Tran(越南裔)
规模 13,570,925 句子,429 种语言,28,498,226 条翻译链接(截至 2026-09-27)
许可协议 CC-BY 2.0(可自由使用,注明出处即可)
数据导出 downloads.tatoeba.org
学术引用 Tatoeba.org — open-source sentence database

二、数据结构

Tatoeba 的导出包含两个核心文件:

sentences.csv — 句子表

制表符分隔,三列:id、lang(ISO 639-3 语言代码)、text(句子文本)。

13  eng Tom is a good swimmer.
14  eng He didn't want to do that.
15  eng I don't have any idea.

links.csv — 翻译链接表

制表符分隔,两列:sentence_id_A、sentence_id_B,表示两个句子互为翻译。

12  456789
13  987654

通过链接表可以将不同语言的句子配对,构建平行语料(同一句话的多语言版本)。

实例:一句中文的 85 条翻译链接

以句子 ID = 1(cmn「我們試試看!」)为例,show_translations.py 脚本从 links.csv 中找到 85 条链接,再回查 sentences.csv 得到各语言译文(以下为精选):

ID 语言码 译文
1 cmn 我們試試看!
413789 eng Let's try it.
344899 jpn やってみましょう。
826600 deu Versuchen wir's!
415128 fra Essayons !
505372 rus Давайте попробуем!
849898 swe Låt oss försöka!
12259522 nob La oss prøve!
180624 por Vamos tentar alguma coisa!
2481 spa ¡Intentemos algo!
380381 ita Proviamo a fare qualcosa!
1031820 nld Laten we het gewoon proberen!
1166749 tur Bir deneyelim.
5350 kor 뭔가 해보자!
433979 ara لنحاول !
736566 wuu 阿拉试试!
820257 yue 我哋試吓吖!
1125117 tlh manIDjaj!
13817729 tok mi mute o alasa!

观察要点:

  1. 链接数 ≠ 语言数:85 条链接覆盖约 40 种语言,同一语言常有多人各译一条(deu 7 条、tat 6 条、eng 4 条)。
  2. 三语互译交集有限:该句有 swe(Låt oss försöka!)与 nob(La oss prøve!)译文,但没有 dan 译文——直观说明三元组筛选受 links.csv 链接结构约束,而非各语言句数不足。
  3. 语言覆盖面极广:从大语种(eng/deu/fra)到小语种(wuu 吴语、yue 粤语、sah 萨哈语)、甚至人造语言(tlh 克林贡语、tok 道本语)均有收录。

为什么这么简单?

1400 万条句子、400 多种语言——本质上就是两个纯文本 CSV 文件。这其实是开源数据社区的典型风格:数据越简单,用途越广。

设计哲学 说明
纯文本 CSV/TSV,任何语言、任何编辑器都能打开,不依赖任何数据库或软件
制表符分隔 比逗号分隔更安全(句子里很少出现制表符,但经常出现逗号)
两层结构 句子表 + 链接表,关系极简——id 对 id,像数据库的“多对多”关联表
bz2 压缩 758MB → 219MB,压缩率约 71%,纯文本压缩效果极好

与其他语言数据资源对比:

项目 数据格式 复杂度
Tatoeba 两个 CSV 极简
WordNet 专有数据库 + API 中等
OPUS(更大平行语料) 多种格式(XML/TSV/Moses) 较复杂
HuggingFace Datasets Arrow/Parquet + 元数据 JSON 复杂

Tatoeba 的简单恰恰是它能活 20 年的原因——不需要任何工具就能用,Python 标准库即可直接解析,零依赖。


三、数据下载

文件 大小(约) 下载地址
句子表 sentences.tar.bz2 ~200MB downloads.tatoeba.org/exports/sentences.tar.bz2
翻译链接表 links.tar.bz2 ~50MB downloads.tatoeba.org/exports/links.tar.bz2

下载后为 .tar.bz2 压缩包,可用 7-Zip 或 WinRAR 解压。解压后为纯文本 CSV,用记事本或 VS Code 即可打开。

数据快照(截至 2026-09-27)

本地下载并运行 browse_tatoeba.py 统计结果:

指标 数值
总句子数 13,570,925
语言种类 429
翻译链接数 28,498,226

前 5 大语言:

语言码 语言名 句子数
eng 英语 2,035,034
rus 俄语 1,224,379
ita 意大利语 986,772
epo 世界语 821,361
kab 卡拜尔语 791,366

本研究关注的 10 种语言:

语言码 语言名 句子数 备注
dan 丹麦语 66,455 实验核心语言
nob 挪威语(书面) 18,858 实验核心语言
swe 瑞典语 56,768 实验核心语言
eng 英语 2,035,034 对照基准
deu 德语 780,889 日耳曼语族对照
fra 法语 726,335 罗曼语族对照
spa 西班牙语 441,840 罗曼语族对照
por 葡萄牙语 444,020 罗曼语族对照
ita 意大利语 986,772 罗曼语族对照
nld 荷兰语 201,004 日耳曼语族对照

注意:北欧三语中挪威语(nob)仅 1.9 万句,但实测 build_triplets.py 仍可组出 456 组三元组(远超 150 组目标)——三元组瓶颈在 links.csv 的链接结构而非各语言句数(参见上方「实例」小节中 ID=1 无丹麦语译文的案例)。


四、在计量语言学研究中的用途

Tatoeba 是本研究向量计量语言学实验的核心语料来源,具体用于:

构建平行句三元组

实验需要"同一句话的丹麦语/挪威语/瑞典语版本"——从 Tatoeba 的 sentences + links 中筛选: 找一句丹麦语(da),要求它同时有挪威语(no)和瑞典语(sv)的翻译链接, 凑成一组三元组 (da, no, sv),目标 150 组。

实验 ① 句向量距离(LaBSE)

将三元组分别输入 LaBSE 模型编码为句向量,计算两两余弦相似度—— 内容恒定(同一句话),相似度差异 = 纯语言距离。

实验 ③ 分词碎片化率

用平行句测试不同语言的 tokenizer 交叉切分效果。

实验 ④ MLM 互懂度模拟(待开发)

用 XLM-R 对平行句做掩码填空,模拟口语互懂度。

扩展到十语

MVE(北欧三语)验证通过后,将语言列表扩展为 10 种(da/no/sv/en/nl/de/pt/es/fr/it), 从 Tatoeba 获取十语平行句,计算 45 个语言对的距离矩阵。

数据获取脚本:fetch_tatoeba.py(位于 extern/attachments/topic/LLMs/向量计量语言学/)


五、数据质量与过滤

脚本对句子做了以下过滤(避免干扰实验结果):

  1. 长度过滤:4-30 个词(太短信息不足,太长含复杂从句)
  2. 排除 URL:含 http 或 www. 的句子
  3. 排除数字密集:数字占比 > 20% 的句子(专名和数字会虚高跨语言相似度)
  4. 去重:同一句丹麦语文本不重复选取

六、完整导出文件清单

数据来源:downloads.tatoeba.org/exports/(更新于 2026-09-26)

核心数据(研究必用)

文件 压缩大小 说明
sentences.tar.bz2 ~219MB 全量句子表(id, lang, text),1400 万+ 句子
links.tar.bz2 ~150MB 翻译链接表(sentence_id_A, sentence_id_B),标注哪些句子互为翻译
sentences_detailed.tar.bz2 ~303MB 句子表 + 元数据(创建日期、用户名、许可协议等),~1.4GB 解压

子集数据(按需使用)

文件 压缩大小 说明
sentences_base.tar.bz2 ~64MB 基础句子子集(常用句子,适合快速实验)
sentences_CC0.tar.bz2 ~8MB CC0 公共领域句子(无版权限制,商用友好)
sentences_with_audio.tar.bz2 ~6MB 带录音的句子(可用于语音学研究)
sentences_in_lists.tar.bz2 ~41MB 用户创建的句子列表(按主题/难度分组)

标签与标注

文件 压缩大小 说明
tags.tar.bz2 ~5MB 句子标签(如"口语""正式""谚语"等分类标记)
tags_detailed.tar.bz2 ~9MB 标签 + 标记者信息
tag_metadata.csv ~605KB 标签定义与说明
transcriptions.tar.bz2 ~9MB 音译/转写(如日语假名→罗马字)
jpn_indices.tar.bz2 ~3MB 日语句子索引(JMdict 关联)

用户与社区

文件 压缩大小 说明
user_languages.tar.bz2 ~831KB 用户语言水平声明(如某用户标注自己 da=no=sv=高级)
users.csv ~5MB 用户基本信息
user_lists.tar.bz2 ~228KB 用户创建的句子列表名称与描述
users_sentences.csv ~99MB 用户↔句子对应关系(谁添加了哪些句子)
comments.tar.bz2 ~47MB 句子评论
contributions.tar.bz2 ~592MB 贡献历史(谁在什么时候添加/修改了哪些句子)
wall.tar.bz2 ~4MB 论坛讨论区帖子

外部数据整合

文件 压缩大小 说明
wwwjdic.csv ~32MB 日语词典数据(来自 WWWJDIC 项目,与日语句子关联)

按语言分目录

目录 说明
per_language/ 按语言拆分的子目录,每种语言单独一个文件(适合只研究特定几种语言时使用,避免下载全量数据)

研究推荐

对于向量计量语言学研究,只需下载两个核心文件: 1. sentences.tar.bz2(句子表) 2. links.tar.bz2(翻译链接表)

fetch_tatoeba.py 脚本自动下载并处理的就是这两个文件。


七、其他平行语料库

除 Tatoeba 外,还有多个常用的平行语料资源,按规模与用途分层介绍:

大型平行语料库

名称 规模 语言数 特点 链接
OPUS 数十亿词 500+ 最大的开放平行语料集合,聚合了 EU、UN、字幕等多种来源,提供统一检索接口 opus.nlpl.eu
Europarl 5500 万词 21 欧洲议会会议记录,逐句对齐,翻译质量极高,正式书面语 europarl.europa.eu
UN Corpus 1.5 亿词 6 联合国官方文件,英/法/西/俄/阿/中六种语言 conferences.unite.un.org/uncorpus
ParaCrawl 数十亿句对 50+ 从网页自动抓取的双语对齐句对,覆盖大量低资源语言对 paracrawl.eu

中等规模 / 社区驱动

名称 规模 语言数 特点 链接
TED2020 4000+ 演讲 60+ TED 演讲字幕,口语风格,适合口语互懂度研究 github.com/ajinkyakulkarni14/TED-Multilingual-Parallel-Corpus
OpenSubtitles 数十亿词 60+ 电影/电视剧字幕,高度口语化,覆盖大量语言对 opus.nlpl.eu/OpenSubtitles.php
WikiMatrix 6800 万句对 89 从维基百科跨语言链接自动对齐,书面语风格 github.com/facebookresearch/LASER/tree/master/tasks/WikiMatrix

与本研究的关系

语料库 适合本研究吗? 原因
OPUS 部分适合 数据量大但质量参差,需清洗;可作为十语扩展时的补充来源
Europarl 不太适合 正式书面语,且不含北欧三语
UN Corpus 不适合 仅 6 种语言,不含丹/挪/瑞
Tatoeba 最适合 句子短且独立、429 语言覆盖广、CC-BY 许可、零门槛

Tatoeba 对本研究的独特优势:句子短(4-30 词)、内容简单(日常表达)、语言覆盖极广(含北欧三语),非常适合控制"语义内容"这个变量来测纯语言距离。大型语料库虽然规模大,但句子长、领域杂、对齐噪声高,反而不适合本实验设计。


相关笔记


📖 资料来源:


📝 创建:2026-09-27 🔄 更新:2026-09-28

相关笔记