该存储库提供了 Google 图书 Ngram 语料库(v3/20200217,所有语言)的最常用单词和 n-gram(n 个单词的序列)的清理列表,包括一些英文翻译,以及可重现这些列表的可定制 Python 代码。
包含最常见 n 元语法的列表按语言和 n 分别提供。可用语言包括中文(简体)、英语、英语小说、法语、德语、希伯来语、意大利语、俄语和西班牙语。 n 的范围从 1 到 5。在提供的列表中,语言子语料库仅限于 2010-2019 年出版的书籍,但在 Python 代码中,可以调整此值以及包含的最常见 n 元语法的数量。
这些列表可以在 ngrams 目录中找到。对于除希伯来语之外的所有语言,都提供了清理列表
对于希伯来语,由于语料库规模较小,仅提供了 200 个最常见的 4-gram 和 80 个最常见的 5-gram。
所有清理过的列表还包含每个 n-gram 在语料库中出现的次数(其频率,列freq
)。对于 1-grams(单词),还有两列:
cumshare
对于每个单词包含该单词和所有更频繁的单词组成的语料库中所有单词的累积份额。en
包含使用 Google Cloud Translate API 获得的单词的英文翻译(仅适用于非英语语言)。以下是 1grams_french.csv 的前 10 行:
ngram | 频率 | 卡姆共享 | zh |
---|---|---|---|
德 | 1380202965 | 0.048 | 的 |
拉 | 823756863 | 0.077 | 这 |
等 | 651571349 | 0.100 | 和 |
乐 | 614855518 | 0.121 | 这 |
一个 | 577644624 | 0.142 | 在 |
我' | 527188618 | 0.160 | 这 |
莱斯 | 503689143 | 0.178 | 他们 |
zh | 390657918 | 0.191 | 在 |
德斯 | 384774428 | 0.205 | 的 |
直接在 ngrams 目录中找到的列表已被清理,旨在供开发语言学习材料时使用。子目录 ngrams/more 包含未清理和较少清理的版本,可能对语言学家等有用:
0_raw
),1a_no_pos
),1b_with_pos
),2_removed
)。 为了说明为什么在学习语言时首先学习最常用的单词可能是一个好主意,提供了下图。
对于每种语言,它在 x 轴上绘制每个 1-gram(即单词)的频率排名,在 y 轴上绘制cumshare
。例如,在学习了 1000 个最常见的法语单词后,人们可以理解 70% 以上的单词(算上重复单词),这些单词出现在 2010 年至 2019 年间出版的法语 Google Books Ngram 语料库版本 20200217 的典型书籍中。
对于 1-gram 以外的 n-gram,学习最常见的 N-gram 的回报并不那么陡峭,因为单词的可能组合有很多。尽管如此,人们在上下文中学习事物时往往会学得更好,因此它们的一种用途可能是为每个 1-gram 找到常见的示例短语。另一种方法如下:假设一个人想要学习某种语言中 1000 个最常见的单词。例如,人们可以创建一个最常见 4-gram 的最小列表(其中包括这 1000 个单词)并学习它。
尽管 n-gram 列表已经针对语言学习进行了清理,并且包含一些英语翻译,但它们并不是为了直接用于学习,而是作为开发语言学习材料的中间资源。提供的翻译仅给出最接近该单词最常见含义的英语单词。此外,根据个人的语言学习目标,Google Books Ngram 语料库可能不是学习材料的最佳语料库 - 请参阅下一节。
该存储库基于 Google 图书 Ngram 语料库版本 3(版本标识符为 20200217),由 Google 在此处作为 n-gram 列表提供。这也是 Google 图书 Ngram 查看器的基础数据。该语料库是 Google 根据光学字符识别和元数据的质量从 Google 数字化图书中选择的一个子集,包含约 6% 的已出版图书 (1,2,3)。
在评估语料库的质量时,其大小及其对感兴趣材料类型的代表性都很重要。
Google Books Ngram 语料库第 3 版非常庞大,正如这张按语言和子语料库列出的单词数表所示:
语言 | # 个字,所有年份 | # 字数,2010-2019 |
---|---|---|
中国人 | 10,778,094,737 | 257,989,144 |
英语 | 1,997,515,570,677 | 283,795,232,871 |
美式英语 | 1,167,153,993,435 | 103,514,367,264 |
英式英语 | 336,950,312,247 | 45,271,592,771 |
英国小说 | 158,981,617,587 | 73,746,188,539 |
法语 | 328,796,168,553 | 35,216,041,238 |
德语 | 286,463,423,242 | 57,039,530,618 |
希伯来语 | 7,263,771,123 | 76,953,586 |
意大利语 | 120,410,089,963 | 15,473,063,630 |
俄语 | 89,415,200,246 | 19,648,780,340 |
西班牙语 | 158,874,356,254 | 17,573,531,785 |
请注意,这些数字是单词总数,而不是唯一单词的数量。它们还包含许多不是有效单词的单词,但由于语料库的大小,仅对最常见的单词执行清理步骤,因此无法获得清理后整个语料库中剩余的单词数量。此外,Google 只上传出现次数超过 40 次的单词,而这些计数还包括出现频率低于 40 次的单词。
我们看到,即使将语言子语料库限制为过去 10 年出版的书籍,每个子语料库的单词数量仍然大于 150 亿,除了中文和希伯来语。这比所有其他常用语料库要大得多,这些语料库似乎从未包含超过数十亿个单词,而且通常比这个语料库小得多 (4)。
当谈到代表性时,这取决于预期用途。 Google Books Ngram 语料库仅包含书籍(不含期刊、口语、网站等)。每本书版本最多包含一次。这些图书大部分来自少数大型大学图书馆,语料库版本 1 中“超过 40 种”,而一小部分直接从出版商处获得 (1)。因此,举例来说,如果一个人打算使用这个语料库来学习一种语言,而人们主要会阅读大型大学图书馆感兴趣的那种书籍,那么这个语料库中的单词很可能能够很好地代表单词的总体情况将来可能会遇到。
生成所有内容的代码位于 python 目录中。每个 .py 文件都是一个可以使用python python/filename
从命令行运行的脚本,其中工作目录必须是包含 python 目录的目录。每个 .py 文件的顶部都有一个设置部分,可以使用 python/extra_settings 中的文件指定其他清理设置。选择默认设置是为了使代码运行得相当快,并使生成的存储库大小相当小。
或者,首先从存储库根目录运行 create_source_data_lists.py 来重新创建源数据文件夹,其中包含指向 Google 源数据文件的链接列表。
从存储库根目录运行 download_and_extract_most_freq.py 以下载源数据(“.gz 文件”)中列出的每个文件,并将其中最常见的 n-gram 提取到保存在ngrams/more/{lang}/most_freq_ngrams_per_gz_file
的列表中ngrams/more/{lang}/most_freq_ngrams_per_gz_file
。为了节省计算机资源,此后将立即删除每个 .gz 文件。由于在默认设置下,每个 .gz 文件最常见的 n-gram 列表仍占用约 36GB,因此仅将一个示例列表上传到 GitHub:ngrams_1-00006-of-00024.gz.csv。此阶段尚未执行任何清理,因此这就是原始数据的样子。
运行 Gather_and_clean.py 将所有 n-gram 收集到整体最常见的列表中,并清理这些列表(有关详细信息,请参阅下一节)。
运行 google_cloud_translate.py 以使用 Google Cloud Translate API 将英语翻译添加到所有非英语 1-gram(这需要 API 密钥,请参阅文件头)。默认情况下,仅翻译 1-gram,并且仅翻译为英语,但通过更改设置,任何 n-gram 都可以翻译为 Google 支持的任何语言。谷歌随机将翻译大写,因此尝试纠正这一点。此外,使用manual_translations_1grams.csv应用了有限数量的手动更正。
最后,graph_1grams_cumshare_rank.py 生成 graph_1grams_cumshare_rank_light.svg 及其深色版本。
除了 Google 翻译的清理之外,所有清理步骤都在 Gather_and_clean.py 中执行。
以下清洁步骤以编程方式执行:
"'"
开头的 n-gram"'"
、 " "
和","
之外的非单词字符的 n 元语法将被删除"-"
和希伯来语的"""
之外此外,以下清洁步骤是手动执行的,并使用英文翻译来帮助做出决定:
extra_{n}grams_to_exclude.csv
。当手动决定包含和排除哪些单词时,应用了以下规则。排除:人名(一些例外:耶稣、上帝)、城市名称(一些例外:如果与英语有很大不同并且足够常见)、公司名称、缩写(一些例外,例如 ma、pa)、单词部分、单词错误的语言(除非常用)。不排除:国名、民族/民族群体的名称、地名(例如河流、海洋)、口语、感叹词。
有关 Google 图书 Ngram 语料库(版本 20200217)英语部分中精心创建的所有单词列表(按频率排序),请参阅 hackerb9/gwordlist 存储库。
维基词典上提供了多种语言的广泛频率列表。
剩下要做的就是完成希伯来语的最终手动清理以及 n > 1 的 n-gram 列表的清理。将来可能解决的一个问题是后者中的一些包含“,”作为单词。可能还需要包含更常见的缩写。没有为美式英语和英式英语语料库提供单独的 n-gram 列表。当然,仍然存在一些错误。
该存储库的内容根据 Creative Commons Attribution 3.0 Unported License 获得许可。非常欢迎问题报告和拉取请求!