在英语里,冠词有 a 和 an 两种写法,比如 a raccoon、an apple。做程序化文本生成时,作者想要一个 aoran("apple") 函数来判断用哪个。看似看首字母是否为元音字母即可,但那样会写出 an unicorn;规则实际取决于读音:unicorn 以元音字母 u 开头却发辅音,hour 以辅音字母 h 开头却发元音。他想知道这类例外有多常见、能否归类,于是花一天查看数据并做可视化。
正文
英语里不定冠词 a 用在词前,比如 a raccoon,但有些词要用 an,比如 an apple。我在程序生成文本时,想要一个函数 aoran("apple") 来选择合适的冠词。这看起来容易:检查首字母是不是元音就行。但按那样会算出 an unicorn,而正确是 a unicorn。
实际规则看的不是单词拼写的首字母是否为元音字母,而是读音的首个音素是否为元音。unicorn 拼写以元音字母 u 开头,但发音是辅音音素 Y;hour 拼写以辅音字母 h 开头,但发音是元音音素 OW。

我好奇这类例外多不多,能否归类,于是花了一天分析数据、做可视化并把结果写出来。令我意外的是,我的词表里 32455 个词中只要 129 个需要例外。
评论
讨论整体认同 a/an 取决于读音而非字母,但围绕例外如何界定、能否算法化、非母语者是否觉得规则友好产生分歧;最集中的火力在“读出 h 的历史性还用 an”是否装腔,以及把“an Nvidia 员工”当例外是否合理。
认为规则核心是发音,不是拼写字母
- 较多人:判断 a/an 看后词首音是辅音还是元音,目的是避免连续元音;缩写、专名和 h 是否发音都要先知道读音,所以算法化并不平凡。 > 规则很简单:后一个词如果以元音音素开头就用 an,以避免不和谐;关键是音而不是字母。(@loloquwowndueo)
认为读出 h 的历史性还用 an 是矫揉造作
- 较多人:美式发音读出 h 还用 an 很做作;英式省掉 h 才自然;美式 herb 不发音 h,所以 an herb 正常。 > 每当听到美国人把历史性一词的 h 读出来还用 an,我就翻白眼;只有像英式那样省掉 h,才合理。(@kstrauser)
认为“an Nvidia 员工”不是专名例外,而是避免 en-en 重复
- 少数人:an n-gram 是标准;an Nvidia 员工听起来怪是因为连续 en 音,文章据此跳到硬编码列表像 AI 拼凑,且先讲统计而未准确界定问题。 > “an Nvidia 员工”听起来别扭,是因为 en-en 重复,不一定是专名例外;文章据此跳到硬编码列表,像 AI 拼凑。(@moritzwarhier)
认为非母语者真正的噩梦是 a/the 的选择
- 较多人:母语无冠词者说英语近四十年仍难掌握定指与不定指;也有人直接说讨厌这条规则。 > 我母语没有冠词,说了近四十年英语,仍然不确定什么时候该用不定冠词、什么时候用定冠词。(@abraxas)
观察到口语中“an”正在衰退
- 少数人:部分英语使用者说 a apple、a orange,用 y 音或喉塞音过渡,an 在口语中减少;发帖者因被踩感到不解。 > 有些英语使用者会说“a apple”或“a orange”,用 y 音或喉塞音过渡,an 在部分口语中正在衰退。(@nephihaha)
认为“the”的两种发音规则仍不清楚
- 少数人:有人问定冠词何时读轻音、何时读重音,猜测与后接词首元音有关,但只限部分元音,尚无定论。 > 我好奇定冠词有时读轻音、有时读重音,是不是取决于后一个词开头的元音?但不是所有元音。(@throwawayk7h)
认为西班牙语在单复数冠词上比英语更一致
- 少数人:西语“他是医生”不用不定冠词,复数也不用;英语单数要 a、复数不用,反而让英语母语者觉得不直观。 > 西班牙语说“他是医生”不用不定冠词,复数也不用,所以比英语单复数更一致。(@hbn)
对 AI 生成语言和文章质感保持警惕
- 少数人:有人夸文章不是 LLM 写的;也有人抱怨 AI 视频开头用“那个男人/女人”却没有前指,听着别扭。 > 我能看出这篇帖子不是 LLM 写的,谢谢。(@prometheus1992)
认为英语代词的形式与语义纠缠,算法化很难
- 少数人:有人写性别互换算法时发现 his/her 多义,hers 和 him 才完全可预测但意思还不同;即使分析词性也仍有歧义。 > 写性别互换算法时发现,his 可换成 her 或 hers,her 可换成 him 或 his,hers 和 him 才完全可预测,但二者意思还不同。(@jonplackett)
有价值的补充
- 跨语言中避免连续元音很普遍:法语用 l'hôpital 而非 le hôpital;爱尔兰语“她的父亲”会插入 h;土耳其语“看见车”会插入 y。
- 词边界重新切分产生过蝰蛇和围裙:蝰蛇一词曾经是 nadder,围裙曾经是 napron;a whole nother 也是类似趣例。
- 有评论指出原文代码里的“hones”可能是“honest”的笔误,说明硬编码规则容易漏。
- 有人推荐 Red Blob Games 关于 a vs an 的分析,例外图表尤其有意思,也澄清原图红黑配色对色盲不友好。
- 有人推荐 Wikifunctions 的 Z32314,可继续改进 a/an 启发式。
- 已发表文章里出现的“and”疑似“an”误用,有人问是否与 a/an 问题同源,但讨论中未给出确解。