이 저장소는 Google Books Ngram Corpus(v3/20200217, 모든 언어)의 일부 영어 번역을 포함하여 가장 자주 사용되는 단어 및 n-gram(n 단어 시퀀스)의 정리된 목록과 이러한 목록을 재현하는 사용자 정의 가능한 Python 코드를 제공합니다.
가장 빈번한 n-gram이 포함된 목록은 언어 및 n별로 별도로 제공됩니다. 사용 가능한 언어는 중국어(간체), 영어, 영어 소설, 프랑스어, 독일어, 히브리어, 이탈리아어, 러시아어 및 스페인어입니다. n 범위는 1에서 5까지입니다. 제공된 목록에서 언어 하위 말뭉치는 2010-2019년에 출판된 책으로 제한되지만 Python 코드에서는 이 내용과 포함된 가장 자주 사용되는 n-그램 수를 모두 조정할 수 있습니다.
목록은 ngrams 디렉터리에 있습니다. 히브리어를 제외한 모든 언어에 대해 정리된 목록이 제공됩니다.
히브리어의 경우 코퍼스 크기가 작기 때문에 가장 자주 사용되는 4그램 200개와 가장 자주 사용되는 5그램 80개만 제공됩니다.
정리된 모든 목록에는 코퍼스에서 각 n-그램이 나타나는 횟수(해당 빈도, 열 freq
)도 포함됩니다. 1그램(단어)에는 두 개의 추가 열이 있습니다.
cumshare
는 각 단어에 대해 해당 단어와 더 자주 사용되는 모든 단어로 구성된 코퍼스의 모든 단어의 누적 점유율을 포함합니다.en
에는 Google Cloud Translate API를 사용하여 얻은 단어의 영어 번역이 포함되어 있습니다(영어가 아닌 언어에만 해당).1grams_french.csv의 처음 10개 행은 다음과 같습니다.
엔그램 | 주파수 | 정액 공유 | ko |
---|---|---|---|
드 | 1380202965 | 0.048 | ~의 |
라 | 823756863 | 0.077 | 그만큼 |
등 | 651571349 | 0.100 | 그리고 |
르 | 614855518 | 0.121 | 그만큼 |
에이 | 577644624 | 0.142 | ~에 |
엘' | 527188618 | 0.160 | 그만큼 |
레 | 503689143 | 0.178 | 그들을 |
ko | 390657918 | 0.191 | ~에 |
데스 | 384774428 | 0.205 | ~의 |
ngrams 디렉토리에 직접 있는 목록은 정리되었으며 언어 학습 자료를 개발할 때 사용하기 위한 것입니다. 하위 디렉토리 ngrams/more에는 언어학자에게 유용할 수 있는 정리되지 않은 버전과 덜 정리된 버전이 포함되어 있습니다.
0_raw
)1a_no_pos
) 없이 항목만 유지합니다.1b_with_pos
).2_removed
) 언어를 배울 때 가장 자주 사용되는 단어를 먼저 배우는 것이 왜 좋은 생각인지에 대한 동기를 제공하기 위해 다음 그래프가 제공됩니다.
각 언어에 대해 x축에 각 1그램(예: 단어)의 빈도 순위를 표시하고 y축에 cumshare
표시합니다. 예를 들어, 가장 자주 사용되는 1000개의 프랑스어 단어를 학습한 후에는 프랑스어 Google Books Ngram Corpus 버전 20200217에서 2010년에서 2019년 사이에 출판된 일반적인 책에 나오는 중복 단어로 계산된 모든 단어의 70% 이상을 이해할 수 있습니다.
1-그램 이외의 n-그램의 경우 가능한 단어 조합이 너무 많기 때문에 가장 자주 사용되는 N-그램을 학습하는 데 따른 수익은 그다지 가파르지 않습니다. 그럼에도 불구하고 사람들은 맥락에 따라 사물을 배울 때 더 잘 배우는 경향이 있으므로 이를 사용하여 각 1그램에 대한 일반적인 예문을 찾을 수 있습니다. 또 다른 접근 방식은 다음과 같습니다. 어떤 언어에서 가장 일반적인 1000개의 단어를 배우고 싶다고 가정해 보겠습니다. 그런 다음 예를 들어 이러한 1000개의 단어를 포함하는 가장 일반적인 4그램의 최소 목록을 만들고 학습할 수 있습니다.
n-gram 목록은 언어 학습을 염두에 두고 정리되었으며 일부 영어 번역이 포함되어 있지만 학습에 직접 사용하기 위한 것이 아니라 언어 학습 자료 개발을 위한 중간 리소스로 사용하기 위한 것입니다. 제공된 번역은 단어의 가장 일반적인 의미에 가장 가까운 영어 단어만 제공합니다. 또한 언어 학습 목표에 따라 Google Books Ngram Corpus는 학습 자료의 기반이 되는 최고의 코퍼스가 아닐 수도 있습니다. 다음 섹션을 참조하세요.
이 저장소는 Google이 여기에서 n-gram 목록으로 제공하는 Google Books Ngram Corpus 버전 3(버전 식별자 20200217)을 기반으로 합니다. 이는 Google Books Ngram 뷰어의 기반이 되는 데이터이기도 합니다. 말뭉치는 Google이 디지털화한 도서 중 광학 문자 인식 및 메타데이터의 품질을 기준으로 Google이 선택한 하위 집합이며 지금까지 출판된 모든 도서의 약 6%를 포함합니다(1, 2, 3).
말뭉치의 품질을 평가할 때, 말뭉치의 크기와 관심 있는 자료 종류의 대표성 모두 중요합니다.
Google Books Ngram Corpus 버전 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 Books Ngram Corpus에는 도서만 포함되어 있습니다(정기간행물, 음성 언어, 웹사이트 등은 포함되지 않음). 각 도서 에디션은 최대 한 번만 포함됩니다. 이러한 책의 대부분은 코퍼스 버전 1의 경우 "40개가 넘는" 소수의 대형 대학 도서관에서 나온 반면, 일부는 출판사에서 직접 구입합니다(1). 예를 들어, 큰 대학 도서관이 관심을 갖는 종류의 책을 주로 읽는 언어를 학습하기 위해 이 말뭉치를 사용하려는 경우, 이 말뭉치의 단어는 단어의 모집단을 상당히 대표할 가능성이 높습니다. 미래에 만날 수도 있습니다.
모든 것을 생성하는 코드는 python 디렉토리에 있습니다. 각 .py-file은 python python/filename
사용하여 명령줄에서 실행할 수 있는 스크립트입니다. 여기서 작업 디렉터리는 Python 디렉터리가 포함된 디렉터리여야 합니다. 모든 .py 파일 상단에는 설정 섹션이 있으며 python/extra_settings의 파일을 사용하여 추가 정리 설정을 지정할 수 있습니다. 기본 설정은 코드를 합리적으로 빠르게 실행하고 결과 저장소 크기를 합리적으로 작게 유지하도록 선택되었습니다.
선택적으로 저장소 루트 디렉터리에서 create_source_data_lists.py를 실행하여 시작하여 Google 소스 데이터 파일에 대한 링크 목록이 포함된 source-data 폴더를 다시 만듭니다.
저장소 루트 디렉터리에서 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-그램을 가장 자주 사용되는 목록으로 수집하고 이 목록을 정리합니다(자세한 내용은 다음 섹션 참조).
Google Cloud Translate API를 사용하여 영어가 아닌 모든 1-그램에 영어 번역을 추가하려면 google_cloud_translate.py를 실행하세요(이에는 API 키가 필요합니다. 파일 헤더 참조). 기본적으로 1-gram만 영어로 번역되지만 설정을 변경하면 모든 n-gram을 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
입니다.포함하고 제외할 단어를 수동으로 결정할 때 다음 규칙이 적용되었습니다. 제외 : 사람 이름(일부 예외: Jesus, God), 도시 이름(일부 예외: 영어와 많이 다르고 충분히 일반적인 경우), 회사 이름, 약어(일부 예외, 예: ma, pa), 단어 부분, 단어 잘못된 언어(일반적으로 사용되는 경우 제외) 제외하지 마십시오 : 국가 이름, 인종/국가 집단의 이름, 지명(예: 강, 바다), 구어체 용어, 감탄사.
Google Books Ngram Corpus(버전 20200217)의 영어 부분에 있는 모든 단어를 빈도별로 정렬하여 주의 깊게 만든 목록을 보려면 hackerb9/gwordlist 저장소를 참조하세요.
다양한 언어로 된 광범위한 빈도 목록이 위키낱말사전에서 제공됩니다.
앞으로 해야 할 일은 히브리어에 대한 최종 수동 정리와 n > 1에 대한 n-그램 목록 정리를 완료하는 것입니다. 앞으로 해결될 수 있는 문제는 후자 중 일부에 단어로 ","가 포함되어 있다는 것입니다. . 보다 일반적인 약어를 포함하는 것이 바람직할 수도 있습니다. 미국 영어 및 영국 영어 말뭉치에는 별도의 n-gram 목록이 제공되지 않습니다. 물론 일부 오류는 남아있습니다.
이 저장소의 콘텐츠는 Creative Commons Attribution 3.0 Unported License에 따라 라이센스가 부여됩니다. 문제 보고서 및 끌어오기 요청을 환영합니다!