このリポジトリは、Google ブックス Ngram コーパス (v3/20200217、全言語) の最も頻繁に使用される単語と N グラム (n 個の単語のシーケンス) のクリーンなリストと、これらのリストを再現するカスタマイズ可能な Python コードを提供します。
最も頻繁に使用される n グラムのリストは、言語と n ごとに個別に提供されます。利用可能な言語は、中国語 (簡体字)、英語、英語フィクション、フランス語、ドイツ語、ヘブライ語、イタリア語、ロシア語、スペイン語です。 n の範囲は 1 ~ 5 です。提供されたリストでは、言語サブコーパスは 2010 年から 2019 年に出版された書籍に限定されていますが、Python コードでは、これと含まれる最も頻繁に使用される n グラムの数の両方を調整できます。
リストは ngrams ディレクトリにあります。ヘブライ語を除くすべての言語については、クリーンアップされたリストが提供されています。
ヘブライ語の場合、コーパス サイズが小さいため、最も頻繁に使用される 200 個の 4 グラムと、最も頻繁に使用される 80 個の 5 グラムのみが提供されます。
すべてのクリーンアップされたリストには、コーパス内で各 n グラムが出現する回数 (頻度、列freq
) も含まれます。 1 グラム (単語) の場合は、次の 2 つの追加列があります。
cumshare
には、各単語について、その単語とそれより頻繁に使用されるすべての単語で構成されるコーパス内のすべての単語の累積シェアが含まれます。en
には、Google Cloud Translate API を使用して取得した単語の英語翻訳が含まれます (英語以外の言語のみ)。1grams_french.csv の最初の 10 行は次のとおりです。
ングラム | 周波数 | 兼分け | jp |
---|---|---|---|
デ | 1380202965 | 0.048 | の |
ラ | 823756863 | 0.077 | の |
など | 651571349 | 0.100 | そして |
ル | 614855518 | 0.121 | の |
ああ | 577644624 | 0.142 | で |
私は | 527188618 | 0.160 | の |
レ | 503689143 | 0.178 | 彼ら |
jp | 390657918 | 0.191 | で |
デス | 384774428 | 0.205 | の |
ngrams ディレクトリに直接あるリストはクリーンアップされており、言語学習教材の開発時に使用することを目的としています。サブディレクトリ ngrams/more には、言語学者などに役立つ可能性のある、クリーンアップされていないバージョンとそれほどクリーンではないバージョンが含まれています。
0_raw
)、1a_no_pos
) のないエントリのみを保持します。1b_with_pos
)。2_removed
)。 言語を学習する際に、最も頻繁に使用される単語を最初に学習することが良いアイデアである理由を説明するために、次のグラフを示します。
言語ごとに、各 1 グラム (つまり単語) の頻度ランクを X 軸にプロットし、 cumshare
Y 軸にプロットします。したがって、たとえば、フランス語の最も頻繁に使用される 1,000 語の単語を学習すると、2010 年から 2019 年に出版されたフランス語の Google Books Ngram Corpus バージョン 20200217 の典型的な書籍に登場する、重複を含めた全単語の 70% 以上を理解できるようになります。
1 グラム以外の n グラムの場合、単語の可能な組み合わせが非常に多いため、最も頻繁に使用されるものを学習しても、それほど大きな成果は得られません。それでも、人は文脈に沿って物事を学ぶとより良く学ぶ傾向があるため、その利用方法の 1 つは、各 1 グラムについて一般的なフレーズの例を見つけることです。別のアプローチは次のとおりです。ある言語で最も一般的な単語 1000 個を学習したいとします。次に、たとえば、これらの 1000 語を含む最も一般的な 4 グラムの最小限のリストを作成し、それを学習することができます。
N-gram リストは言語学習を念頭に置いてクリーンアップされており、一部の英語翻訳が含まれていますが、学習に直接使用することを目的としたものではなく、言語学習教材を開発するための中間リソースとして使用することを目的としています。提供される翻訳では、その単語の最も一般的な意味に最も近い英語の単語のみが示されています。さらに、言語学習の目標によっては、Google Books Ngram コーパスが学習教材の基礎となる最適なコーパスではない可能性があります。次のセクションを参照してください。
このリポジトリは、Google によってここで N-gram リストとして提供されている Google Books Ngram Corpus バージョン 3 (バージョン識別子 20200217) に基づいています。これは、Google Books Ngram Viewer の基礎となるデータでもあります。このコーパスは、Google によってデジタル化された書籍のうち、光学式文字認識とメタデータの品質に基づいて Google によって選択されたサブセットであり、これまでに出版されたすべての書籍の約 6% が含まれています (1、2、3)。
コーパスの品質を評価する場合、そのサイズと、関心のある素材の種類の代表性の両方が重要です。
Google Books Ngram Corpus Version 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 回以上出現する単語のみをアップロードしますが、これらのカウントには、それよりも出現頻度の低い単語も含まれます。
言語サブコーパスを過去 10 年間に出版された書籍に限定した後でも、中国語とヘブライ語を除いて、各サブコーパスの単語数は依然として 150 億語を超えていることがわかります。これは、一般的に使用されている他のすべてのコーパスよりも大幅に大きく、数十億語を超える単語が含まれることは決してないようで、多くの場合それよりもはるかに小さいです (4)。
代表性に関しては、使用目的によって異なります。 Google ブックス Ngram コーパスには書籍のみが含まれています (定期刊行物、話し言葉、ウェブサイトなどは含まれません)。各書籍版は最大 1 回含まれます。これらの書籍のほとんどは、コーパスのバージョン 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 を実行して、source-data にリストされている各ファイル (「.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 のリストはデフォルト設定でも約 36 GB を占めるため、サンプル リストは 1 つだけ GitHub にアップロードされます: ngrams_1-00006-of-00024.gz.csv。この段階ではクリーニングは実行されていないため、生データは次のようになります。
Gather_and_clean.py を実行して、すべての N-gram を全体的に最も頻度の高いもののリストに収集し、これらのリストをクリーンアップします (詳細については、次のセクションを参照)。
google_cloud_translate.py を実行し、Google Cloud Translate API を使用して英語以外のすべての 1 グラムに英語翻訳を追加します (これには API キーが必要です。ファイル ヘッダーを参照してください)。デフォルトでは、1 グラムのみが英語にのみ翻訳されますが、設定を変更することで、任意の n グラムを Google がサポートする任意の言語に翻訳できます。 Google は翻訳をランダムに大文字にするため、これを修正する試みが行われます。さらに、manual_translations_1grams.csv を使用して、限られた数の手動修正が適用されます。
最後に、graph_1grams_cumshare_rank.py は、graph_1grams_cumshare_rank_light.svg とそのダーク バージョンを生成します。
Google 翻訳のクリーニングを除くすべてのクリーニング手順は、gather_and_clean.py で実行されます。
次のクリーニング手順はプログラムによって実行されます。
"'"
で始まる場合は N-gram を削除する"'"
、 " "
、および","
以外の非単語文字を含む n-gram は削除されます"-"
とヘブライ語の"""
以外さらに、以下の洗浄手順は手動で実行されており、意思決定に役立つ英語翻訳が使用されています。
extra_{n}grams_to_exclude.csv
という名前が付けられています。どの単語を含めるか除外するかを手動で決定する場合、次のルールが適用されました。除外: 人名 (一部の例外: イエス、神)、都市名 (一部の例外: 英語と大きく異なり、十分に一般的である場合)、会社名、略語 (一部の例外、例: ma、pa)、単語の一部、英語の単語間違った言語 (一般的に使用されている場合を除く)。除外しないでください: 国名、民族/国家グループの名前、地理名 (例: 川、海)、口語、間投詞。
Google ブックス Ngram コーパス (バージョン 20200217) の英語部分に含まれるすべての単語を、頻度順に注意深く作成したリストについては、hackerb9/gwordlist リポジトリを参照してください。
ウィクショナリーでは、さまざまな言語の頻度リストの広範なリストを入手できます。
やるべきことは、ヘブライ語の最終的な手動クリーニングと、n > 1 の n グラムのリストのクリーニングを完了することです。将来的に解決される可能性がある問題は、後者の一部に単語として「,」が含まれていることです。 。より一般的な略語を含めることも望ましい場合があります。アメリカ英語とイギリス英語のコーパスには個別の N-gram リストは提供されていません。もちろん、多少の誤差は残ります。
このリポジトリのコンテンツは、クリエイティブ コモンズ表示 3.0 非移植ライセンスに基づいてライセンスされています。問題レポートやプル リクエストは大歓迎です。