中文(繁体)
該儲存庫提供了Google 圖書Ngram 語料庫(v3/20200217,所有語言)的最常見單字和n-gram(n 個單字的序列)的清理列表,包括一些英文翻譯,以及可重現這些列表的可自訂Python 程式碼。
包含最常見 n 元語法的清單按語言和 n 分別提供。可用語言包括中文(簡體)、英語、英語小說、法語、德語、希伯來語、義大利語、俄語和西班牙語。 n 的範圍從 1 到 5。
這些列表可以在 ngrams 目錄中找到。對於除希伯來語之外的所有語言,都提供了清理列表
對於希伯來語,由於語料庫規模較小,因此僅提供了 200 個最常見的 4-gram 和 80 個最常見的 5-gram。
所有清理過的清單也包含每個 n-gram 在語料庫中出現的次數(其頻率,列freq )。對於 1-grams(單字),還有兩列:
freq
cumshare
en
以下是 1grams_french.csv 的前 10 行:
直接在 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 版非常龐大,正如下面按語言和子語料庫列出的單字計數表所示:
請注意,這些數字是單字總數,而不是唯一單字的數量。它們還包含許多不是有效單字的單字,但由於語料庫的大小,僅對最常見的單字執行清理步驟,因此無法獲得清理後整個語料庫中剩餘的單字數量。此外,Google 只上傳出現次數超過 40 次的單詞,而這些計數還包括出現頻率低於 40 次的單字。
我們看到,即使將語言子語料庫限制在過去 10 年出版的書籍,每個子語料庫的單字數量仍然大於 150 億,除了中文和希伯來語。這比所有其他常用語料庫要大得多,這些語料庫似乎從未包含超過數十億個單詞,而且通常比這個語料庫小得多 (4)。
當談到代表性時,這取決於預期用途。 Google Books Ngram 語料庫僅包含書籍(不含期刊、口說、網站等)。每本書版本最多包含一次。這些圖書大部分來自少數大型大學圖書館,語料庫版本 1 中“超過 40 種”,而一小部分直接從出版商處獲得 (1)。因此,舉例來說,如果一個人打算使用這個語料庫來學習一種語言,而人們主要會閱讀大型大學圖書館感興趣的那種書籍,那麼這個語料庫中的單字很可能能夠很好地代表單字的整體情況將來可能會遇到。
產生所有內容的程式碼位於 python 目錄中。每個 .py 檔案都是一個可以使用python python/filename從命令列運行的腳本,其中工作目錄必須是包含 python 目錄的目錄。每個 .py 檔案的頂部都有一個設定部分,可以使用 python/extra_settings 中的檔案指定其他清理設定。選擇預設設定是為了使程式碼運行得相當快,並使生成的儲存庫大小相當小。
python python/filename
或者,先從儲存庫根目錄執行 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。此階段尚未執行任何清理,因此這就是原始資料的樣子。
ngrams/more/{lang}/most_freq_ngrams_per_gz_file
運行 Gather_and_clean.py 將所有 n-gram 收集到整體最頻繁的 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 中執行。
以下清潔步驟以程式方式執行:
"'"
" "
","
"-"
"""
此外,以下清潔步驟是手動執行的,並使用英文翻譯來幫助做出決定:
extra_{n}grams_to_exclude.csv
當手動決定包含和排除哪些單字時,應用了以下規則。排除:人名(一些例外:耶穌、上帝)、城市名稱(一些例外:如果與英語有很大不同並且足夠常見)、公司名稱、縮寫(一些例外,例如 ma、pa)、單字部分、單字錯誤的語言(除非常用)。不排除:國名、民族/民族群體的名稱、地名(例如河流、海洋)、口語、感嘆詞。
有關 Google 圖書 Ngram 語料庫(版本 20200217)英文部分中精心建立的所有單字清單(按頻率排序),請參閱 hackerb9/gwordlist 儲存庫。
維基詞典上提供了多種語言的廣泛頻率清單。
剩下要做的就是完成希伯來語的最終手動清理以及 n > 1 的 n 元語法列表的清理。可能還需要包含更常見的縮寫。沒有為美式英語和英式英語語料庫提供單獨的 n 元語法清單。當然,仍然存在一些錯誤。
此儲存庫的內容根據 Creative Commons Attribution 3.0 Unported License 授權。非常歡迎問題報告和拉取請求!