言語ごとに、各 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コード すべてを生成するコードは 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 で実行されます。
次のクリーニング手順はプログラムによって実行されます。
品詞 (POS) タグが削除されます 1 グラム、フランス語とイタリア語 : 短縮形は分割されています末尾の「_」は削除されます 大文字と大文字以外の N グラムがマージされる 句読点や数字のみで構成される N グラムは削除されます 1-grams、ドイツ語 : 手動で作成された例外リスト upcases_to_keep.csv に含まれていない限り、大文字のみを含む単語は削除されます。 1 グラム (ドイツ語を除く ): 手動で作成された例外リスト upcases_to_keep.csv に含まれていない限り、大文字で始まる単語は削除されます。 1-grams : 手動で作成された例外リスト onechars_to_keep.csv に含まれていない限り、1 文字の単語は削除されます。 ドイツ語とロシア語 : 短縮形が削除されます英語のフィクション : "'"
で始まる場合は N-gram を削除する"'"
、 " "
、および","
以外の非単語文字を含む n-gram は削除されます数字を含む N グラムは削除されます 間違ったアルファベットの N グラムは削除されます。 さらに、以下の洗浄手順は手動で実行されており、意思決定に役立つ英語翻訳が使用されています。
1 グラム、すべての言語 : 削除された単語のリストは、誤って削除された単語がないかチェックされています。 1 グラム、ヘブライ語を除く : クリーンアップされたリストは、除外する余分な単語がないか完全にチェックされています。 1-grams、ヘブライ語 : クリーンアップされたリストは、ランク 100 まで除外するために余分な単語がチェックされています。 上記の手動クリーニング手順で誤って含まれたり除外されたりした N グラムが見つかった場合は、プログラム ルールを調整するか、例外リストの 1 つに追加するか、追加の最終リストに追加することによって修正されました。除外するnグラム。 除外する追加の N グラムの手動で作成されたリスト内の N グラムは削除されました。これらのリストは python/extra_settings にあり、 extra_{n}grams_to_exclude.csv
という名前が付けられています。 どの単語を含めるか除外するかを手動で決定する場合、次のルールが適用されました。除外 : 人名 (一部の例外: イエス、神)、都市名 (一部の例外: 英語と大きく異なり、十分に一般的である場合)、会社名、略語 (一部の例外、例: ma、pa)、単語の一部、英語の単語間違った言語 (一般的に使用されている場合を除く)。除外しないでください : 国名、民族/国家グループの名前、地理名 (例: 川、海)、口語、間投詞。
関連作品 Google ブックス Ngram コーパス (バージョン 20200217) の英語部分に含まれるすべての単語を、頻度順に注意深く作成したリストについては、hackerb9/gwordlist リポジトリを参照してください。
ウィクショナリーでは、さまざまな言語の頻度リストの広範なリストを入手できます。
制限事項と既知の問題 やるべきことは、ヘブライ語の最終的な手動クリーニングと、n > 1 の n グラムのリストのクリーニングを完了することです。将来的に解決される可能性がある問題は、後者の一部に単語として「,」が含まれていることです。 。より一般的な略語を含めることも望ましい場合があります。アメリカ英語とイギリス英語のコーパスには個別の N-gram リストは提供されていません。もちろん、多少の誤差は残ります。
このリポジトリのコンテンツは、クリエイティブ コモンズ表示 3.0 非移植ライセンスに基づいてライセンスされています。問題レポートやプル リクエストは大歓迎です。