小语种平行语料来源集中度实测,七成语言一多半出自同一家
本文目录
- 小语种平行语料清单上的几十个语料库,能算几个独立来源?
- 这件事是怎么碰上的
- 这次拉取了多少数据?
- 真正要回答的问题
- 按来源归并的方法
- 70门语言的平行语料构成与来源集中度如何分布?
- 最小的一档
- 最大的一档
- 70门语言的汇总
- 几个极端值
- 各语言最大的平行语料库来自哪几个项目?
- 只有5个名字
- 同一家公司的三个项目合计
- 逐门语言的数据
- 表中最该看的是最后两行
- 覆盖语言最广的语料库和句对数最大的语料库,是同一批吗?
- 两张榜单几乎不重合
- 这种错位的成因
- 为什么这种错位容易误导人?
- 宗教语料恰好处在中间
- 同一份平行语料为何同时以HPLT和MultiHPLT两个名字出现?
- 先看到的是一个巧合
- 逐门语言核对
- 唯一的差异
- 为什么这件事要单独写一节?
- 为什么小语种的几份平行语料难以互相验证?
- 两个最大项目的产生方式
- 两者共用的不止是文本
- “相关的错误”指什么?
- 小语种上的问题尤其严重
- 保哥开工前对小语种语料构成的预期错在哪?
- 原先以为宗教文本占大头
- 实测结果全部落空
- 量上错了,覆盖面上对了
- 差距为什么这么大?
- 平行语料来源集中,会在哪些环节影响成本与质量判断?
- 估算成本时
- 评估翻译质量时
- 判断一门语言能否使用机器工序时
- 预估模型能力时
- 小语种平行语料应该怎样归并和使用?
- 这些语料可以用
- 三步归并法
- 归并后通常剩几组?
- 一个低成本的自查
- 这次语料测量中,保哥把哪个空值误读成了零?
- 覆盖面最广、句对数为零的语料库
- 打开原始记录核对
- 固化成一条检查规则
- 这条教训与本文的主命题相通
- 哪些相邻问题不在平行语料来源分析的范围内?
- 语料质量本身另算
- 模型内部如何使用这些数据也不在本文范围内
- 单语语料没有一起统计
- 非英语语言对更没有统计
- 常见问题解答
- 还应该继续使用这些平行语料吗?
- 怎样快速判断两个语料库是否同源?
- 大语种是不是没有这个问题?
- 不做机器翻译,这件事和我有关系吗?
- 为什么只统计了与英语配对的平行语料?
- 这个结论过两年会不会变?
- 不懂这些语言,能自己跑一遍吗?
- 权威参考资料
摘要:在公开语料库平台上查一门小语种,结果页会列出几十个语料库,看上去来源相当分散。本文把70门语言与英语的平行语料逐门拉下来,按句对数加总,再按真实来源归并。
结果:70门语言里有66门的最大语料库只来自3个项目,其中两个出自同一家公司;按句对数算,这家公司三个项目的占比中位数是66.8%;语料总量最小的那批语言,前三个语料库就占96.6%。另有一份数据在清单上挂着两个名字,23门语言的句对数逐条相同。
文中列出70门语言的构成分档、集中度随语料规模变化的曲线、两个同名数据的比对过程,以及一条开工前猜错的预期。
前一篇写的是几张公开的语言分级表互相不同意,三套表之间的相关性接近于零。这一篇讲的是反方向的情况。
前一篇的问题在于:你以为拿到了几个独立的判断,其实拿到的是几个各说各话的判断。这一篇的问题更隐蔽:你以为拿到了几份独立的数据,其实拿到的是同一份数据的几个切片。
两种情况下,人通常会做同一个动作:把几个来源摆在一起互相印证,再根据它们一致或不一致来提高信心。在小语种上,这个动作两头都站不住。
上一篇的结论是“别把三个互不相关的判断当成三重证据”。这一篇补另一半:别把同一份数据的几个切片当成几份数据。两条合在一起,结论是:在小语种上做交叉验证之前,要先验证被交叉的几个来源是否独立。
小语种平行语料清单上的几十个语料库,能算几个独立来源?
这件事是怎么碰上的
起因是要给一批市场估算翻译和模型改写的成本。估算前要先知道每门语言能拿到多少平行语料:有现成语料的语言,机器工序的比重可以调高;没有的,人工那一档的预算要翻倍。
这个数在公开语料库平台上很好查。按语言检索,结果页列出一长串语料库名字,每个后面跟着句对数。这个平台在自己的论文里写清了收录方式:把网上能免费获取的对照文本转换、对齐、加标注,再统一发布。老挝语下面有二十来个语料库,蒙古语有三十来个,看上去资源充足。
直到把句对数加总,按大小排了一次序。排完序,资源充足的印象就不成立了。
排序结果的形状是:前两三个语料库占去绝大部分,后面十几二十个各自只有几万甚至几千句对,加起来不到总量的零头。清单很长,长度几乎全部来自这条尾巴。
这次拉取了多少数据?
70门语言,每门查一遍它与英语的平行语料清单,取最新版本。这70门是本站这个栏目写过或提到过的语言,另加几门大语种作为参照。
汇总后一共出现了932个不同的语料库名字。这个数字容易误导人:九百多个来源,听上去是一个相当健康的生态。
覆盖面最广的一批:有4个语料库出现在全部70门语言里,另有几个覆盖到67门、68门。这些全覆盖条目的量都不大,在整个生态里起的是底座作用,不承担主要数据量。
另一头是长尾:九百多个名字里,绝大多数只出现在个位数的语言里,很多只覆盖一两门。长尾对总量的贡献可以忽略,却撑起了“九百多个语料库”这个数字。
真正要回答的问题
要数的是“有几个独立来源”,而不是“有多少个语料库”。这两个数在英语上差不多,在小语种上差得很远。
一个语料库是一个条目,一个来源是一批原始文本。十个条目可以从同一批网页里挖出来,这时它们只算一个来源。平台上的列表按条目排列,不按来源排列。
区分这两者有很实际的用处:它决定了两份数据给出一致结果时,你能否把这当成一次确认。条目不同、来源相同的两份数据,结果一致是必然的,不提供额外信息。
按来源归并的方法
按每个语料库原始文本的出处分类:网页抓取挖出来的归一类,电影字幕归一类,维基百科系归一类,官方与法律文书、软件界面字符串、宗教文本各归一类。
分类依据是每个语料库自己的说明页,而不是名字。这一步省不得,因为有好几个名字完全不同的语料库,说明页上写的是同一件事。
反过来的情况也有:名字看着像一家的,实际来源完全不同。所以唯一可靠的办法是逐个打开说明页读两行。一门语言的主力语料库通常不超过五个,这一步花的时间比预想的少。
70门语言的平行语料构成与来源集中度如何分布?
最小的一档
把70门语言按句对总量排序,切成四档。最小的17门,语料总量中位数是1639万句对。
这一档里,网页抓取类的占比中位数是96.8%,前三个语料库合计占96.6%。
换成清单上的样子:列着二三十个名字,前三个就是全部,其余加起来不到百分之四。
这一档包括老挝语、祖鲁语、伊博语、约鲁巴语、高棉语、豪萨语、缅甸语等。它们都有几百万到几千万使用者,在各自国家是主要语言,但平行语料只有薄薄一层。
具体数字:约鲁巴语的平行语料总量179万句对,祖鲁语483万,伊博语702万,高棉语862万,豪萨语977万。作为对照,西班牙语是13.7亿。在同一量纲下相差两到三个数量级。
最大的一档
最大的19门语言,上面两个指标分别是69.8%和70.5%。集中度确实下降了,但只是从“三个语料库占九成六”降到“三个占七成”。
中间两档分别是88.4%、94.6%和71.0%、69.6%。整体趋势很清楚:语料越少,集中度越高。
这条趋势和“语料越少越要小心”方向一致,所以很容易被当成常识略过。但它多给了一条信息:小语种的问题是数据少和来源单一同时存在,两者叠加的后果比任何一项单独出现都严重。
叠加的后果是:数据少可以多花钱补,来源单一补不了。多买十份来自同一次挖掘的数据,独立性没有任何增加。所以这一列应当单独写进排期表,它对应的是一类花钱解决不了的风险。
70门语言的汇总
网页抓取类占比的中位数是82.3%,前三个语料库占比的中位数是88.2%。前三个语料库占八成以上的语言有40门,超过一半。
这条趋势不难解释。大语种有欧盟文书、专利、议会记录和几十年的翻译积累,来源天然分散;小语种没有这些,能用的只有从网上挖出来的文本。
大语种的语料是几十年里不同的人出于不同目的积累下来的,小语种的语料是最近几年由少数几个项目一次性挖出来的。前者天然多样,后者天然同质。这个差别由历史长度决定,与谁做得好坏无关。
几个极端值
蒙古语的网页系占99.6%里的99.3%,老挝语99.6%,阿姆哈拉语98.3%,祖鲁语98.3%,乌兹别克语95.1%。这几门语言的平行语料几乎全部是从网页自动挖掘的。
本站为老挝语单独写过一篇,讲它的交易词在搜索建议里几乎拉不出来。那篇测的是需求侧,这篇测的是供给侧,两边指向同一个结论:这门语言在数字世界里的底子,比它的使用人口所暗示的薄得多。
僧伽罗语可以作对照。本站量过它的需求侧相当健康,搜索建议拉得出来,但它的平行语料总量只有3574万句对,前三个语料库占去绝大部分。需求侧和供给侧是两回事,要分开测。
各语言最大的平行语料库来自哪几个项目?
只有5个名字
70门语言各取最大的语料库,一共只出现了5个不同的名字。
NLLB占33门,CCMatrix占17门,OpenSubtitles占16门,HPLT占3门,ParaCrawl占1门。
前两个合计50门,超过七成,而这两个项目出自同一家公司。
第三名OpenSubtitles是电影字幕,与前两个确实是独立来源:原始文本是人工翻译的台词,不是从网页挖出来的。它在16门语言里排第一,这16门几乎都属于语料总量大的那一批。
这一点对使用者有利:字幕语料为一批语言提供了真正的第二来源。代价是文体非常单一,全是口语对白,用它训练出的模型在商品描述、政策条款这类文体上会明显不适应。独立而偏科的来源胜过同源来源,只是仍然不够用。
同一家公司的三个项目合计
这家公司在清单上有三个项目:NLLB、CCMatrix、CCAligned。三者句对数合计的占比,在70门语言里的中位数是66.8%。
三项合计占一半以上的语言有49门。在七成的语言上,你手里的平行语料有一多半出自同一家。
这里并不是说这家公司做错了什么。这批数据是过去几年低资源语言技术最大的推动力,没有它,表上一多半语言连基本的机器翻译都不会有。问题只在记账:一家出的三份数据,在你的表格里不应占三个独立来源的位置。
逐门语言的数据
| 语言 | 句对总数 | 网页系占比 | 同一家三项占比 | 最大语料库及其占比 |
|---|---|---|---|---|
| 蒙古语 | 1729万 | 99.3% | 98.8% | NLLB 95.5% |
| 阿姆哈拉语 | 1684万 | 98.3% | 97.9% | NLLB 95.8% |
| 祖鲁语 | 483万 | 98.3% | 97.7% | NLLB 95.1% |
| 乌兹别克语 | 3259万 | 95.1% | 95.1% | NLLB 95.1% |
| 斯瓦希里语 | 3283万 | 98.9% | 95.4% | NLLB 71.6% |
| 威尔士语 | 2137万 | 93.4% | 92.4% | NLLB 88.4% |
| 德语 | 9.44亿 | 85.7% | 54.1% | ParaCrawl 29.5% |
| 捷克语 | 3.52亿 | 69.0% | 35.7% | OpenSubtitles 18.5% |
表中最该看的是最后两行
德语和捷克语的最大语料库占比不到三成,同一家三项占比在一半上下。来源分散的语言就是这个样子。
上面六门语言,最大语料库单独就占到七成到九成六。它们在平台上列出的语料库数量并不比德语少多少,只是那些条目里的数据量小到可以忽略。
清单长度的误导性就在这里:条目数按“有没有”计,句对数按“有多少”计。一门语言可以在三十个语料库里都出现,每个只有两千句。
可执行的替代做法:不看清单长度,看累计占比曲线。把句对数从大到小排列,看前几个语料库累计到九成五。这个数在小语种上通常是三,在大语种上是八到十五。这一个数字比整份清单提供的信息更多。
覆盖语言最广的语料库和句对数最大的语料库,是同一批吗?
两张榜单几乎不重合
按覆盖语言数排序,排在最前的是几个软件界面字符串和维基系语料库,它们出现在全部70门语言的清单里。再往下是68门、67门、65门、63门这一档。
按句对数排序,前排是完全不同的一批:三十五亿、二十七亿、十八亿、十四亿,前四名的量超过后面九百多个语料库的总和。
两张榜单的交集只有两三个名字。每门语言都有的语料库,恰恰是量最小的;量最大的几个,覆盖面反而不如它们。
这种错位的成因
每门语言都有的那一批,多数是软件界面的翻译文件和维基系的条目标题。这类文本几乎所有语言都翻译了一些,但每种语言翻译的量很有限,一个软件的界面文字总量就那么多。
量最大的那一批是自动挖掘的产物,挖到多少取决于这门语言在网上有多少文本,所以数据量分布极不均匀,覆盖面也随之参差。
为什么这种错位容易误导人?
因为“每门语言都有”读起来像一种保障。查一门冷门语言时,看到几个熟悉的语料库名字都在,人会以为基础还在。
实际上这几个熟悉的语料库加起来可能只有几万句对,这门语言的真正数据量全部集中在一两个自动挖掘的条目上。覆盖面这一列衡量有没有人翻译过,句对数这一列衡量有多少可用,两列回答的是不同的问题。
宗教语料恰好处在中间
宗教文本类在覆盖面上排名相当靠前,出现在47门语言的清单里;它的句对总数却只有两百多万,在按量排序的榜单上远远排不上。
这是典型的“广而薄”:宗教典籍历史上被翻译成几千门语言,所以哪门语言都能查到;但篇幅固定,数据量上不去。本文开工前猜错的那一条,根源就是把这两张榜单混为一谈。
同一份平行语料为何同时以HPLT和MultiHPLT两个名字出现?
先看到的是一个巧合
把932个语料库按句对总量排序时,第5名和第6名的数字完全相同:617996007。覆盖的语言数也相同,都是23门。
这两个名字是HPLT和MultiHPLT。数字相同到个位,不可能是巧合。
逐门语言核对
逐条比对23门语言:两者都有的23门中,句对数完全相同的23门,不同的0门,只出现在其中一个里的0门。版本号也相同,都是v3。
两个数据集的说明页文字一字不差:都写着“来自HPLT项目收集的网页抓取平行语料”,也都写着“本版本由原始发布调整而来以便在本平台重新分发”。
两页的结构、段落顺序乃至致谢措辞都相同。只打开其中一页,看不出任何异常;两页并排对照,差别只有标题里的一个词。
两个名字的字面差异也容易误导人:其中一个多了前缀,看上去像“多语言版”,让人以为是覆盖面更广的另一个数据集。实际覆盖的语言数完全相同,都是23门。
唯一的差异
打包后的文件字节数有微小差别。保加利亚语两边完全相同,都是4007751;捷克语是5812445对5823024;丹麦语是6407106对6407107,差1个字节。
所以准确的表述是:同一个项目的同一个版本,在这个平台上以两个名字各列了一份,句对数逐门语言完全相同,说明文字一字不差,只有打包结果相差千分之几。说成“两个完全相同的文件”并不准确。
为什么这件事要单独写一节?
因为它是本文唯一一个不需要任何领域知识就能验证的例子。不需要知道这些语料怎么挖、质量如何、能不能用,只要看两列数字是否相同。
如果你正在按语料库名字汇总“这门语言一共有多少平行语料”,这份数据会被计算两遍。23门语言合计六亿多句对会被重复计入一遍。
这类错误发生得很隐蔽。平台没有标错,两个条目都真实存在、都能下载、都有各自的页面;出错的是汇总环节的默认假设:按名字去重,而没有按内容去重。
类似的情况在别处也会出现:同一批数据的不同版本号、同一个项目的分卷、同一份语料的清洗版与原始版。它们在清单上都是独立条目,在来源上是同一个。按名字汇总的脚本一律识别不出来。
为什么小语种的几份平行语料难以互相验证?
两个最大项目的产生方式
NLLB和CCMatrix都不是人工逐句翻译的产物。它们是从大批网页文本中,用句向量模型把意思相近的句子自动配对挖掘出来的。
CCMatrix那篇论文的标题就写着“从网页上挖掘数十亿高质量平行句”,所用的句向量模型是同一家开源的LASER。NLLB的数据集说明页描述的也是同一种方法,用的是该模型的后续版本。
两者共用的不止是文本
原料是同一批网页,筛选用的是同一个模型,区别只在模型版本号。由此带来两个后果。
第一,一句话如果在网页上根本不存在,两份语料里都不会有。第二,一对句子如果被这个模型误判为对齐,两份语料里很可能都会出错,而且错法相同。
第一条比第二条更要紧:两份语料共享同一个盲区。凡是这门语言里没有写到网上的话题、没有翻译过的品类、只在线下使用的说法,两份语料里都没有。做电商本地化的人要找的词,有很大一部分正落在这些地方。
“相关的错误”指什么?
交叉验证有效的前提是两个来源的错误彼此独立。一个偏左、一个偏右,取交集就能压低噪声。
如果两个来源的错误方向一致,取交集压不掉噪声,只会让你对噪声更有信心。这比只用一个来源更糟,因为“两份都这么说”会让你不再去查。
在日常工作里,这种情况表现为:让两个不同的工具翻译同一句话,结果相同,于是签字通过。如果这两个工具背后用的是同一批语料,结果相同只反映它们的出厂设置,并不能确认这句话翻对了。
更稳妥的验收办法是找一个确定不同源的参照:一位本地母语者、一份当地出版的印刷材料、一段线下采集的真实对话。样本再小,只要与那批语料无关,它提供的信息量就比第二个自动工具大得多。
小语种上的问题尤其严重
大语种还有其他语料垫底:欧盟文书、议会记录、专利摘要都是人工翻译的。这些语料的错误与自动挖掘的错误确实相互独立。
前面表中的六门语言,非自动挖掘部分合计不到百分之五。它们的“多个来源”在原料和方法两个层面上都收敛到了同一处。
这也解释了一个常见但不好解释的现象:几家厂商的机器翻译在小语种上,经常在同一个地方犯同一个错。过去常归因于“这门语言就是难”,现在有了更具体的解释:它们读的是同一批句子。
保哥开工前对小语种语料构成的预期错在哪?
原先以为宗教文本占大头
这在低资源语言的语料圈里几乎是常识:很多小语种最早、最完整的平行文本是宗教典籍译本,因为这是历史上唯一被系统翻译成几千门语言的文本。
所以开工前的预期写得很明确:小语种平行语料中,宗教文本应占相当大的比例,语言越小,比例越高。
写下这条预期时相当有把握,因为它有历史依据:几百年里被系统翻译成几千门语言的文本只有这一类,语言学文献里反复提到这一点。前一篇里的那套文献分级,倒数第二档的定义里就直接写着新约圣经。
实测结果全部落空
70门语言里,宗教文本占比最高的是乌尔都语2.1%,其次是豪萨语1.3%,其余都在1%以下,多数只有零点几。没有一门语言超过5%。
预期错得很彻底,出错的方式值得记下来。
这次错在把两个不同的指标混在了一起。这类错误比单纯判断错方向更难自查:支持预期的证据确实存在,只是它回答的是另一个问题。
量上错了,覆盖面上对了
宗教语料的覆盖面确实极广:出现在47门语言的清单里,在932个语料库中按覆盖语言数排第15。这一半直觉是对的。
错在数据量。它总共只有275万句对,而排第一的项目有35.3亿。覆盖广和量大是两件事,我把它们当成了一件。
差距为什么这么大?
宗教典籍的篇幅是固定的,翻译一遍就只有那么多句子,不会随时间增长;网页则每年都在增加,从网页里挖出的量也跟着增加。
所以两者的趋势是分叉的:宗教语料的绝对量二十年基本不变,占比会持续被稀释;自动挖掘的量每出一个新版本就往上跳一截。今天占比不到百分之一的语料,十年前可能是主力。
这条修正比原来的预期更有用:它表明小语种的语料格局在过去十年里已经换过一轮,今天占大头的是这几年自动挖掘的数据,而不是历史上那批人工译本。本站量过的那批公共词典资源停留在十几年前,语料这一层正好相反,新数据已经完全盖过旧数据。
两层的更新节奏相差这么多,对排期有直接影响:语料层的状况可能每两年就变一次,需要定期重查;词典和工具链那一层十年不动,查一次可以用很久。
平行语料来源集中,会在哪些环节影响成本与质量判断?
估算成本时
这是最直接的一处。看到一门语言有三千万句对平行语料,你会判断机器工序可以多承担一些,人工可以少一些。可这三千万句对里九成五出自同一次自动挖掘,质量分布是同一条曲线。
更稳妥的读法是把“句对总数”换成“非同源句对数”。按前面的中位数,这个数大约是总数的三分之一,在最小那批语言上不到十分之一。
这个换算不需要精确。总数打三折,最小那批语言打一折,用这个粗略值估算人工比重,比用原始总数稳妥得多。即便估错,偏差方向也更安全:宁可多排一些人工,也不要等上线后才发现机器那一档的质量撑不住。
评估翻译质量时
如果从两个不同名字的语料里各抽一批做人工抽检,结果一致,你会认为质量可信。实际上抽到的是同一次挖掘的两个切片。
可执行的做法是抽检前先看两批数据的说明页,确认它们的原始文本和对齐方法至少有一项不同。这一步只需五分钟。
如果确认两批确实同源,仍然可以抽检,只是结论的措辞要改:不能写“两份数据交叉验证通过”,只能写“这批数据内部一致”。后者的结论弱得多,但它是准确的。
判断一门语言能否使用机器工序时
这一项与本站写过的同一段话在不同语言里要多少token配套使用。token倍数决定单价,语料的独立来源数决定能否靠机器保证质量。
两个数要一起看:单价高且语料集中,就是双重风险,这类语言应当老老实实安排人工。
按本文这70门的数据,同时满足这两条的有老挝语、阿姆哈拉语、高棉语、缅甸语、僧伽罗语。它们的token倍数都在2.5倍以上,前三个语料库占比都在九成以上。
这几门语言单价最高、可用数据最少、来源最单一,三个问题同时存在。排期时如果按“市场潜力”把它们排在前面,实际执行会比预算表上难得多。
预估模型能力时
模型在一门语言上的表现,上限是它见过的数据。如果一门语言的平行数据九成来自同一次挖掘,模型在这门语言上的盲区就会与那次挖掘的盲区重合。
本站在低资源语言的生成内容风险那篇里列过哪些内容必须逐条核对。这篇为那条建议补充了一个成因:模型能拿到的材料本身就窄。
小语种平行语料应该怎样归并和使用?
这些语料可以用
自动挖掘的语料是过去几年低资源语言技术进步的最大推手,没有它们,很多语言连基本的机器翻译都不会有。本文并不劝人放弃使用。
需要改的只是记账方式:别把一个语料库当成一个独立来源,别把清单长度当成来源丰富度。
三步归并法
第一步,把查到的语料库列表按句对数排序,只保留累计占比达到95%的那几个,其余全部忽略。在小语种上,保留下来的通常是三到五个。
第二步,逐个打开这些语料库的说明页,记下两项信息:原始文本的出处,以及对齐方式是人工还是自动。
第三步,把原始文本和对齐方法都相同的归为一组。最后剩下的组数,才是真正的独立来源数。
判断“原始文本相同”有个简便标准:凡是写明来自网页抓取的,都算一组,不必细究抓的是哪一批网页。对小语种来说,可抓的网页本来就不多,不同项目抓到的内容重合度极高。
归并后通常剩几组?
按这70门语言的数据,最小一档的语言归并后通常剩1到2组,中间档2到3组,大语种4到6组。
只剩1组意味着手上没有任何可用来验证它的东西。这时唯一的办法是自建一个小型对照集:找几十句本地人写的真实句子,人工核对一遍,作为基线。
几十句听上去很少,但它的作用是提供一个与那批语料无关的参照点,并不追求统计显著。本站在其他批次里反复验证过:一个小而独立的对照集,比一份大而同源的数据更能挡住系统性偏差。
建这个对照集的成本比想象中低:请本地同事写五十句真实的商品描述和客服回复,或者从当地的实体包装、说明书上抄录五十句。数量不是重点,重点是它的产生过程与那批语料完全没有交集。
一个低成本的自查
查任何语料清单时,顺手看一眼有没有两行句对数完全相同。这项检查不到十秒,能发现前文HPLT与MultiHPLT那种一份数据挂两个名字的情况。
数字完全相同到个位的两行,几乎不可能是两份独立的数据。
这次语料测量中,保哥把哪个空值误读成了零?
覆盖面最广、句对数为零的语料库
统计跑完后,汇总表上有一行很显眼:一个软件界面字符串语料库出现在全部70门语言的清单里,覆盖面并列第一,句对数合计却是0。
这个组合读起来像一个现成的结论:每门语言都挂着名字、实际没有数据的空壳。写进文章会很有戏剧性。
打开原始记录核对
那一格的值是空字符串,并不是0。平台返回的字段里,这个语料库的句对数一项没有填写,而我的脚本把转换失败的值默认写成了0。
转换失败时回落到0是很常见的写法,很难说它错,总得给一个默认值。问题在于0在这一列里是有意义的读数,它和“没填”看起来完全一样,汇总之后就再也分不开了。
这个语料库实际上有数据,德语那一条下面挂着378个文件,只是对齐句对数没有统计进去。
固化成一条检查规则
凡是出现“覆盖面最广但量为零”这种形状,先打开原始记录,确认那一格到底是0还是空值。两者在汇总表上看起来一样,含义正好相反:一个是量过了没有,一个是根本没量。
前一篇里也出过类似的错:一门语言的资源数算出来是0,实际原因是匹配条件没有命中。两次的表现不同,教训相同:任何一个零在被当成结论之前,都要先排除它是测量过程产生的。
这条教训与本文的主命题相通
把两个名字当成两份数据,和把一个空字段当成零,出错的是同一步:直接把汇总表上的形状当作事实,没有回到原始记录去查这个形状是怎么来的。
汇总表用来让人看见形状,而不是让人相信形状。发现异常形状后,下一步应该是回到原始记录核对,而不是给这个形状配一段解释。解释很容易配,配出来的往往还很有说服力。
哪些相邻问题不在平行语料来源分析的范围内?
语料质量本身另算
本文只统计了来源和数量,没有评价质量。自动挖掘的句对里有多少真正对齐、噪声比例多高,属于另一个专门的研究领域,结论也在持续变化。本文的结论不依赖质量高低:即使质量很好,同源这一事实仍然成立。
模型内部如何使用这些数据也不在本文范围内
一份语料进入训练流程后如何采样、加权、去重,与它在公开平台上如何列出是两回事。那一层由做模型的人决定,从外部看不到。
单语语料没有一起统计
本文查的全部是与英语配对的平行语料。单语语料是另一份清单,构成也不同,本文结论不能直接套用。要用同样的方法统计单语一侧,需要换一套接口重做。
非英语语言对更没有统计
这次统计的全部是某语言对英语。本站讲过中间经英语中转的那篇说明了为什么大多数链路都要经过英语,所以英语对是最有代表性的一组。两门小语种之间直接配对的语料是另一回事,那一侧的数据通常更少。
常见问题解答
还应该继续使用这些平行语料吗?
应该用。在很多语言上,它们是唯一现成的资源,不用就没有替代品。需要改的只有两点:不要把语料库个数当成来源数;在做任何“两份数据互相印证”的判断之前,先确认两份数据的原始文本和对齐方法至少有一项不同。一门语言的归并工作用不了十分钟。
怎样快速判断两个语料库是否同源?
有三个信号,按速度从快到慢排列。最快的是看有没有两行句对数完全相同,只需十秒钟。其次是打开两边的说明页对照文字,同源的往往连措辞都一样。最慢但最准的是查它们各自引用的论文,如果指向同一个对齐模型,即使原料不同也算半同源。
大语种是不是没有这个问题?
问题小得多,但没有消失。德语的同一家三项占比仍有54.1%,捷克语35.7%。区别在于大语种有足够的人工翻译语料垫底,归并后仍剩四到六个真正独立的来源,交叉验证可以成立。小语种归并后常常只剩一到两组,交叉验证就没有可比对的对象了。
不做机器翻译,这件事和我有关系吗?
有关系,只要你用到了任何涉及这门语言的自动处理。站内搜索的同义词扩展、商品标题的自动改写、AI生成的本地化文案,背后都可能用的是同一批语料。更直接的影响在预算上:你按语料丰富度调低了人工比重,而这个丰富度并不真实。
为什么只统计了与英语配对的平行语料?
因为绝大多数工具链的默认路径都经过英语,英语对覆盖最全、最有代表性。两门小语种之间的直接语料在多数语言上少一两个数量级,单独统计的数据会过于稀疏,得不出稳定的比例。要统计那一侧,需要另行设计取样方案。
这个结论过两年会不会变?
集中度大概率会继续上升,而不是下降。新增语料主要来自规模更大的自动挖掘,有能力做这件事的机构只有少数几家。真正能改变格局的,是有人开始为某门语言系统地制作人工平行语料,而这在过去十年里只在很少几门语言上发生过。
不懂这些语言,能自己跑一遍吗?
完全不需要懂这些语言。查语料清单、看句对数、读说明页,都是英文界面加数字比对。一门语言从查询到归并完成大约十分钟,五门候选语言一个下午就能做完,产出是一张“独立来源数”表,可以直接贴进排期材料。
权威参考资料
本文标题:《小语种平行语料来源集中度实测,七成语言一多半出自同一家》
本文链接:https://zhangwenbao.com/minor-language-parallel-corpus-source-concentration.html
版权声明:本文原创,转载与引用请注明作者与原文链接。许可协议: CC BY 4.0