认识 86% 的词,却只听得懂 38% 的台词

背下一部动画里最常见的 500 个词,覆盖率是 85.9%,可三千句台词里能一次听懂的只有 38.4%。八部番剧的字幕数据说明这个差距从哪来。

中文
复制
一张折线图,虚线表示单词覆盖率随认识的词数一路上升到 100%,深红色实线表示能完整听懂的台词比例,在 500 词处只有 38%

假设你想看《葬送的芙莉莲》,于是先学了剧中最常见的 500 个词。一个覆盖率计算器显示,你现在已经认识剧中 85.9% 的词了。

你泡好茶,按下播放键。下面这三句,都是你听到的。

三句来自《葬送的芙莉莲》的日语台词,部分单词被模糊处理,每句后面附有英文翻译。被模糊的单词不在前 500 名之内。
被模糊的单词不在前 500 名之内。

你第三次停下来查词的时候,茶已经凉了。掌握这 500 个词,前 3,000 句台词里有 1,151 句你每个词都认识,占 38.4%。剩下 1,849 句,每句至少有一个词你不认识。

两个数字都是真的

覆盖率是大多数学习网站引用的数字。它指的是你认识的词在全部词次中占的比例,所以一个助词出现一千次就计一千次。《葬送的芙莉莲》的词表最靠前的全是 の(的)、は(主题标记)这类语法成分,光前 100 个词就能给你 68.3% 的覆盖率。但你能听懂的只有 8.5% 的台词。

同样这 500 个词,可以用三个数字来描述。

衡量的对象《葬送的芙莉莲》前 3,000 句
认识的词2,448 个不同词中的 500 个(20.4%)
覆盖率(含重复)85.9%
听懂的台词(每个词都认识)38.4%

manga-kotoba 的覆盖率表就是这么算的。jpdb 和 jiten 也给出覆盖率数字,不过它们的帮助页面没有写明具体公式。

覆盖率和台词数之间的差距来自每句的长度。这部剧平均每句 7 个词,七个词全认识才算听懂这一句。覆盖率 85.9% 时,听懂一整句的概率约为 35%,也就是 0.859 自乘七次。这个结果和我们实测的 38.4% 很接近。

拿你喜欢的剧试试

《葬送的芙莉莲》的图表。一条虚线对角线在约 1,000 词时升到 100% 的覆盖率,而表示听懂台词比例的粗实线远低于此,在 500 词时是 38%,覆盖率则是 86%。另外七条浅色曲线代表其他剧集,走势相同。

粗线是在该剧里能听懂的台词,虚线是该剧的字幕覆盖率,浅色线是在另外七部剧里能听懂的台词。每条曲线都假设你先学该剧最常用的词。

八部剧都有这个缺口。Serial Experiments Lain 用 1,191 个词就达到 95% 的覆盖率,是八部里最少的。即便如此,你也只能跟上 77.5% 的台词。

有些剧需要的词远少于其他剧

八部剧里 Serial Experiments Lain 需要的词最少,大约 400 个就能听懂一半台词。Jujutsu Kaisen 需要 980 个。

剧集台词数集数不同词数500 词时覆盖率500 词时听懂的台词听懂一半台词所需词数
Serial Experiments Lain2,034131,92488.0%55.9%401
Dororo3,000132,43185.2%42.1%633
Chainsaw Man2,849122,20386.3%41.1%647
Frieren3,000122,44885.9%38.4%730
Mob Psycho 1003,00082,79582.4%39.1%749
Death Note3,000112,52986.6%36.0%782
Hunter x Hunter (2011)3,000122,78582.3%34.6%862
Jujutsu Kaisen3,000103,02881.5%32.7%980

每部剧都截取到 3,000 句台词,免得集数多的长剧显得更难。如果一部剧越往后越难,它在这里看起来会比实际容易。

听不懂的台词里,很多只差一个词

回到 Frieren。你漏掉了 1,849 句台词。其中 1,042 句只缺一个词,占 56.4%。八部剧里这个比例从 50.2% 到 63.9% 不等。

こちらは約束の報酬です(这是我们承诺的报酬)

从 500 词增加到 1,000 词,带来的帮助远大于覆盖率显示的程度。覆盖率只涨 6.5 个百分点,因为这些新词不常出现。听懂的台词涨 22.1 个百分点,因为一个新词往往就是听懂一句台词所缺的最后一个词。

这些一词之差的缺口没法靠几个词补上。那 1,042 句台词合计缺 804 个不同的词。单个词最多帮你多听懂 4 句台词,比如 後悔(后悔)、約束(约定)和 収集(收集)这样的词。

掌握 2,000 个日语常用词,最多只能听懂 38% 的台词

做个粗略对比。我们用 wordfreq 词表里 2,000 个最常用的普通日语词试了一遍,能听懂的台词占 23.4% 到 37.6%。接着换成每部剧自己的前 2,000 个高频词,比例升到 74.3% 到 93.3%。Serial Experiments Lain 全剧的不同单词不到 2,000 个,所以不在后一个区间里。

一部剧的高频词可能很冷门。《葬送的芙莉莲》词表第 304 位是 生臭坊主,指不守戒律的和尚,正是剧中角色一直用来称呼海塔的词。第 21 位是 魔法,比 私(我)还靠前四位。

用前几集建好的词表,后面仍能覆盖三分之二

假设你用一季的台词学了一部剧的高频词,然后接着看下一季。我们在台词量足够的四部剧上做了接近这个场景的测试。用前 3,000 句台词建词表,再拿它测接下来的 3,000 句。在《芙莉莲》的后 3,000 句里,旧词表覆盖 22.3%,而用这 3,000 句本身建的词表覆盖 33.0%。試験(考试)在前 3,000 句里只出现 1 次,之后出现 51 次,因为角色后面要参加魔法师考试。四部剧的降幅在 5.5 到 14.0 个百分点之间。

一词多义让这些数字偏高

很多词有多个义项,语言学家称之为多义现象。我们统计时,一句台词用的是哪个义项,就算你认识这个词。认识 500 个词时,《芙莉莲》里这两句都算听懂了,手が震えています(我的手在发抖)和 手に取るように分かる(了如指掌)。你可能从第一句起就把 手(手)认得清清楚楚,到第二句照样一头雾水。逐字直译,它的意思是“像拿在手里一样”。有多少句存在这个问题,我们没有统计。单凭这一点,听懂的台词比例就是偏高的。

统计方法

流程

  1. 清洗字幕。去掉歌词、格式标签、方括号里的内容和音符,把文本切成句子长度的片段,删除重复的句子。
  2. 用免费的日语分词器 Sudachi 把每一句切成词。我们用的是 SudachiPy 0.6.11 配 SudachiDict-core 20260428,split 模式 C,Python 版本 3.13.7。每个词取词典形,所以 行った(去了)和 行く(去)算同一个词。
  3. 跳过标点、数字,以及 Sudachi 标注为专有名词的内容。
  4. 跳过 シッ(嘘)、ハハッ(哈哈)这类填充词。只有 Sudachi 标注为感叹词、副词或名词的声音才算填充词。语法词尾 ん 的标注不同,仍然计入。助词和 うん(嗯)这类日常应答也算词。
  5. 丢掉切完没有剩余词的句子,按集数排序,保留前 3,000 句。
  6. 统计每个词的出现次数并排名,次数相同按字母顺序排列。
  7. 把前 N 个词视为已掌握。覆盖率 = 已掌握词的出现次数 ÷ 全部词的出现次数。听懂台词的比例,指每个词都认识的句子所占的百分比。

全部逻辑,29 行 Python

# pip install sudachipy sudachidict_core
# lines.txt: one subtitle line per row, in episode order, songs and repeats removed
# fillers.txt: your own list of sounds not to count, one per row
from collections import Counter
from sudachipy import Dictionary, SplitMode
import re

tok = Dictionary().create()
fillers = set(open("fillers.txt", encoding="utf-8").read().split())

def words(line):
 out = []
 for m in tok.tokenize(line, SplitMode.C):
 pos = m.part_of_speech()
 if pos[0] in ("補助記号", "空白", "記号"): continue # punctuation
 if pos[1] in ("固有名詞", "数詞"): continue # names, numbers
 if not re.search(r"[0-9A-Za-zぁ-ヿ一-鿿々]", m.surface()): continue
 if m.surface() in fillers and pos[0] in ("感動詞", "副詞", "名詞"): continue
 out.append(m.dictionary_form())
 return out

lines = [words(l.strip()) for l in open("lines.txt", encoding="utf-8")]
lines = [l for l in lines if l][:3000] # the first 3,000 lines with a real word
count = Counter(w for line in lines for w in line)
known = {w for w, _ in sorted(count.items(), key=lambda x: (-x[1], x[0]))[:500]}

coverage = sum(n for w, n in count.items() if w in known) / sum(count.values())
understood = sum(all(w in known for w in line) for line in lines) / len(lines)
print(f"coverage: {coverage:.1%} lines understood: {understood:.1%}")

拿我们自己的《葬送的芙莉莲》台词跑一遍,输出 85.9% 和 38.4%。我们没有保留未经处理的字幕文件。换成你自己的字幕和填充词表,数字会略有不同。

全部数字

每个单元格先给出覆盖率,再给出在该已知词数下能听懂的台词比例。

剧集100 词250 词500 词1,000 词2,000 词
Serial Experiments Lain70.8% / 20.2%81.4% / 38.8%88.0% / 55.9%93.7% / 73.0%n/a
Dororo64.5% / 10.1%76.6% / 24.6%85.2% / 42.1%92.0% / 63.1%97.8% / 87.6%
Chainsaw Man66.0% / 9.4%78.4% / 23.8%86.3% / 41.1%93.2% / 65.3%98.9% / 93.3%
Frieren68.3% / 8.5%78.7% / 22.5%85.9% / 38.4%92.4% / 60.5%98.0% / 86.9%
Mob Psycho 10064.7% / 11.3%75.1% / 25.4%82.4% / 39.1%89.5% / 58.0%95.8% / 79.5%
Death Note67.3% / 6.9%78.9% / 18.0%86.6% / 36.0%93.0% / 59.1%98.0% / 84.6%
Hunter x Hunter (2011)63.0% / 9.0%74.0% / 20.9%82.3% / 34.6%89.9% / 55.1%96.3% / 79.6%
Jujutsu Kaisen63.7% / 9.5%74.3% / 20.7%81.5% / 32.7%88.4% / 50.5%94.8% / 74.3%

要达到指定台词理解比例所需的已知词数

剧集25% 的台词50%75%90%
Serial Experiments Lain1304011,0821,686
Dororo2546331,4292,101
Chainsaw Man2636471,3131,893
Frieren2837301,4912,111
Mob Psycho 1002417491,7752,458
Death Note3457821,5452,200
Hunter x Hunter (2011)3208621,7682,446
Jujutsu Kaisen3289802,0322,695

哪些因素会让结果不准

  • “听懂”指每个词都认识。它不考虑语法、汉字读音、语速和上下文。
  • 我们假设你恰好认识剧中最常见的那些词,而且一个都没忘。如果你认识的是别的词,或者忘了一些,这些数字会更低。而且你得在看之前先拿到一份该剧的词表。
  • 每句不同的台词只计一次。实际看剧时,像 うん(嗯)这样的套话会反复出现,这很可能提高能听懂的台词比例。我们没有测量这一点。
  • 台词取自各剧最早的若干集,没有跳集。Chainsaw Man 和 Serial Experiments Lain 的台词不足 3,000 句,所以用了它们的全部台词。台词越少,得分越高。在 500 词时,其他剧集截到 Lain 的长度后,得分最多高出 4.8 个百分点。Serial Experiments Lain 的字幕质量较低,因此它的数字可靠性也更差。
  • 有些字幕文件会用略微不同的措辞重复同一句台词,我们只删除了完全重复的。把近似重复的也删掉,500 词时能听懂的台词比例最多变化 2.2 个百分点。
  • 什么算填充词是个判断问题。如果把填充词也算作词,500 词时能听懂的台词比例最多相差 2.7 个百分点。变化是双向的,因为我们计入的台词会随之改变。
  • 按实际听到的形式计数,即 行った 和 行く 分开计,500 词时能听懂的台词比例会下降 5.3 到 7.7 个百分点。
  • 一个词无论有几个义项都只算一次,这会让词汇覆盖率和“听懂的台词”都偏高。我们无法统计每一句用的是哪个义项。作为部分检验,我们按 Sudachi 给出的每个词性分别计数,在 500 词时“听懂的台词”下降了 1.2 到 2.5 个百分点。这种检验只能捕捉名词与动词之类的差异。
  • Sudachi 会出错。它有时会把一个词切成碎片,还会把一些名字当作普通词处理,フリーレン(Frieren)在她自己的词表上排第 31 位。把 Sudachi 不认识的每个词都算作已知词,在 500 词时最多只增加 0.6 个百分点。

learnfromx 是一款用动画教日语的闪卡应用。每张卡片配一句台词,台词里除了那一个新词,其他你都认识,这也是我们开始统计台词数的原因。上面的数字对每个词只计一次,不管它有几个义项。放到应用里这样行不通。知道 あれ 是“那个”,碰上有人说 あれ?(咦?)也帮不上忙。这是两张独立的卡片。目前还没能覆盖所有这类词,我们正在改进。抢先体验期间只提供一部作品,Hunter x Hunter。

来源: learnfromx← 返回首页