Este repositorio proporciona listas limpias de las palabras y n-gramas (secuencias de n palabras) más frecuentes, incluidas algunas traducciones al inglés, del Ngram Corpus de Google Books (v3/20200217, todos los idiomas), además de código Python personalizable que reproduce estas listas.
Las listas con los n-gramas más frecuentes se proporcionan por separado por idioma y n. Los idiomas disponibles son chino (simplificado), inglés, ficción inglesa, francés, alemán, hebreo, italiano, ruso y español. n varía de 1 a 5. En las listas proporcionadas, los subcorpus de lenguaje están restringidos a libros publicados en los años 2010-2019, pero en el código Python se pueden ajustar tanto esto como el número de n-gramas más frecuentes incluidos.
Las listas se encuentran en el directorio ngrams. Para todos los idiomas, excepto el hebreo, se proporcionan listas limpias para el
Para el hebreo, debido al pequeño tamaño del corpus, solo se proporcionan los 200 4 gramos más frecuentes y los 80 5 gramos más frecuentes.
Todas las listas limpiadas también contienen el número de veces que aparece cada n-grama en el corpus (su frecuencia, freq
de columna). Para 1 gramos (palabras) hay dos columnas adicionales:
cumshare
que para cada palabra contiene la parte acumulada de todas las palabras del corpus formado por esa palabra y todas las palabras más frecuentes.en
que contiene la traducción al inglés de la palabra obtenida utilizando la API de Google Cloud Translate (solo para idiomas distintos del inglés).Aquí están las primeras 10 filas de 1grams_french.csv:
ngrama | frecuencia | compartir cum | es |
---|---|---|---|
Delaware | 1380202965 | 0,048 | de |
la | 823756863 | 0,077 | el |
y | 651571349 | 0.100 | y |
le | 614855518 | 0,121 | el |
a | 577644624 | 0,142 | en |
yo | 527188618 | 0.160 | el |
les | 503689143 | 0,178 | a ellos |
es | 390657918 | 0,191 | en |
des | 384774428 | 0.205 | del |
Las listas que se encuentran directamente en el directorio de ngrams se han limpiado y están diseñadas para usarse al desarrollar materiales de aprendizaje de idiomas. El subdirectorio ngrams/more contiene versiones sin limpiar y menos limpias que podrían ser útiles, por ejemplo, para lingüistas:
0_raw
),1a_no_pos
),1b_with_pos
),2_removed
). Para proporcionar alguna motivación sobre por qué aprender primero las palabras más frecuentes puede ser una buena idea al aprender un idioma, se proporciona el siguiente gráfico.
Para cada idioma, traza el rango de frecuencia de cada gramo (es decir, palabra) en el eje x y el cumshare
en el eje y. Así, por ejemplo, después de aprender las 1000 palabras francesas más frecuentes, uno puede comprender más del 70% de todas las palabras, contadas con duplicados, que aparecen en un libro típico publicado entre 2010 y 2019 en la versión 20200217 del Ngram Corpus de Google Books en francés.
Para n-gramas distintos de 1 gramo, los rendimientos del aprendizaje de los más frecuentes no son tan pronunciados, ya que hay muchas combinaciones posibles de palabras. Aún así, las personas tienden a aprender mejor cuando aprenden cosas en contexto, por lo que un uso de ellas podría ser encontrar frases de ejemplo comunes para cada 1 gramo. Otro enfoque es el siguiente: digamos que uno quiere aprender las 1000 palabras más comunes en algún idioma. Entonces uno podría, por ejemplo, crear una lista mínima de los 4 gramos más comunes que incluyan estas 1000 palabras y aprenderla.
Aunque las listas de n-gramas se han limpiado teniendo en cuenta el aprendizaje de idiomas y contienen algunas traducciones al inglés, no están destinadas a usarse directamente para el aprendizaje, sino más bien como recursos intermedios para desarrollar materiales de aprendizaje de idiomas. Las traducciones proporcionadas solo brindan la palabra en inglés más cercana al significado más común de la palabra. Además, dependiendo de los objetivos de aprendizaje de idiomas de cada uno, el Ngram Corpus de Google Books podría no ser el mejor corpus en el que basar los materiales de aprendizaje (consulte la siguiente sección).
Este repositorio se basa en Google Books Ngram Corpus versión 3 (con identificador de versión 20200217), que Google pone a disposición como listas de n-gram aquí. Estos son también los datos que sustentan el visor Ngram de Google Books. El corpus es un subconjunto, seleccionado por Google en función de la calidad del reconocimiento óptico de caracteres y los metadatos, de los libros digitalizados por Google y contiene alrededor del 6% de todos los libros jamás publicados (1, 2, 3).
A la hora de evaluar la calidad de un corpus, son importantes tanto su tamaño como su representatividad del tipo de material que nos interesa.
La versión 3 de Google Books Ngram Corpus es enorme, como lo ilustra esta tabla del recuento de palabras por idioma y subcorpus:
Idioma | # palabras, todos los años | # palabras, 2010-2019 |
---|---|---|
Chino | 10.778.094.737 | 257.989.144 |
Inglés | 1.997.515.570.677 | 283.795.232.871 |
ingles americano | 1.167.153.993.435 | 103.514.367.264 |
inglés británico | 336.950.312.247 | 45.271.592.771 |
Ficción inglesa | 158.981.617.587 | 73.746.188.539 |
Francés | 328.796.168.553 | 35.216.041.238 |
Alemán | 286.463.423.242 | 57.039.530.618 |
hebreo | 7.263.771.123 | 76.953.586 |
italiano | 120.410.089.963 | 15.473.063.630 |
ruso | 89.415.200.246 | 19.648.780.340 |
Español | 158.874.356.254 | 17.573.531.785 |
Tenga en cuenta que estos números corresponden al número total de palabras, no al número de palabras únicas. También incluyen muchas palabras que no son válidas, pero debido al tamaño del corpus, los pasos de limpieza se realizan solo en las palabras más comunes, por lo que la cantidad de palabras que permanecerían en todo el corpus después de la limpieza no está disponible. Además, Google carga sólo palabras que aparecen más de 40 veces, mientras que estos recuentos también incluyen palabras que aparecen con menos frecuencia.
Vemos que incluso después de restringir los subcorpus lingüísticos a los libros publicados en los últimos 10 años disponibles, el número de palabras sigue siendo superior a 15 mil millones para cada subcorpus, excepto chino y hebreo. Esto es sustancialmente mayor que el de todos los demás corpus de uso común, que nunca parecen contener más de unos pocos miles de millones de palabras y, a menudo, son mucho más pequeños (4).
La representatividad depende del uso previsto. El Ngram Corpus de Google Books contiene únicamente libros (sin publicaciones periódicas, lenguaje hablado, sitios web, etc.). Cada edición del libro se incluye como máximo una vez. La mayoría de estos libros proceden de un pequeño número de grandes bibliotecas universitarias, "más de 40" en la versión 1 del corpus, mientras que una proporción menor se obtiene directamente de los editores (1). Así, por ejemplo, si uno tiene la intención de utilizar este corpus para aprender un idioma en el que principalmente leerá libros del tipo que interesa a las grandes bibliotecas universitarias, entonces las palabras en este corpus probablemente serán bastante representativas de la población de palabras. uno podría encontrarse en el futuro.
El código que produce todo está en el directorio de Python. Cada archivo .py es un script que se puede ejecutar desde la línea de comandos usando python python/filename
, donde el directorio de trabajo debe ser el directorio que contiene el directorio de Python. Cada archivo .py tiene una sección de configuración en la parte superior y se pueden especificar configuraciones de limpieza adicionales usando los archivos en python/extra_settings. La configuración predeterminada se eligió para que el código se ejecute razonablemente rápido y mantenga el tamaño del repositorio resultante razonablemente pequeño.
Opcionalmente, comience ejecutando create_source_data_lists.py desde el directorio raíz del repositorio para recrear la carpeta de datos de origen con listas de enlaces a los archivos de datos de origen de Google.
Ejecute download_and_extract_most_freq.py desde el directorio raíz del repositorio para descargar cada archivo enumerado en datos fuente (un "archivo .gz") y extraiga los n-gramas más frecuentes en una lista guardada en ngrams/more/{lang}/most_freq_ngrams_per_gz_file
. Para ahorrar recursos de la computadora, cada archivo .gz se elimina inmediatamente después de esto. Dado que las listas de n-gramas más frecuentes por archivo .gz todavía ocupan alrededor de 36 GB con la configuración predeterminada, solo se carga una lista de ejemplo en GitHub: ngrams_1-00006-of-00024.gz.csv. No se ha realizado ninguna limpieza en esta etapa, por lo que así es como se ven los datos sin procesar.
Ejecute together_and_clean.py para reunir todos los n-gramas en listas de los más frecuentes en general y limpiar estas listas (consulte la siguiente sección para obtener más detalles).
Ejecute google_cloud_translate.py para agregar traducciones al inglés a todos los 1 gramos que no estén en inglés usando la API de Google Cloud Translate (esto requiere una clave API, consulte el encabezado del archivo). De forma predeterminada, solo se traducen 1 gramo y solo al inglés, pero al cambiar la configuración, cualquier n-grama se puede traducir a cualquier idioma admitido por Google. Google pone en mayúsculas las traducciones de forma aleatoria, por lo que intenta corregir esto. Además, se aplica un número limitado de correcciones manuales utilizando manual_translations_1grams.csv.
Finalmente, graph_1grams_cumshare_rank.py produce graph_1grams_cumshare_rank_light.svg y su versión oscura.
Todos los pasos de limpieza se realizan en together_and_clean.py, excepto la limpieza de las traducciones de Google.
Los siguientes pasos de limpieza se realizan mediante programación:
"'"
"'"
, " "
y ","
"-"
para ruso y """
para hebreoAdemás, los siguientes pasos de limpieza se realizaron manualmente, utilizando las traducciones al inglés para ayudar a tomar decisiones informadas:
extra_{n}grams_to_exclude.csv
.Al decidir manualmente qué palabras incluir y excluir, se aplicaron las siguientes reglas. Excluir : nombres de personas (algunas excepciones: Jesús, Dios), nombres de ciudades (algunas excepciones: si difieren mucho del inglés y son bastante comunes), nombres de empresas, abreviaturas (algunas excepciones, por ejemplo, ma, pa), partes de palabras, palabras en el idioma incorrecto (excepto si es de uso común). No excluya : nombres de países, nombres de grupos étnicos/nacionales de personas, nombres geográficos (por ejemplo, ríos, océanos), términos coloquiales, interjecciones.
Para obtener una lista cuidadosamente creada de todas las palabras en la parte en inglés del Ngram Corpus de Google Books (versión 20200217), ordenadas por frecuencia, consulte el repositorio hackerb9/gwordlist.
En Wikcionario hay disponible una lista extensa de listas de frecuencias en muchos idiomas.
Lo que queda por hacer es completar la limpieza manual final para hebreo y la limpieza de las listas de n-gramas para n > 1. Una cuestión que podría abordarse en el futuro es que algunas de estas últimas contienen "," como palabra . También sería conveniente incluir abreviaturas más comunes. No se proporcionan listas de n-gramas separadas para los corpus de inglés americano e inglés británico. Por supuesto, persisten algunos errores.
El contenido de este repositorio está bajo la licencia Creative Commons Attribution 3.0 Unported. ¡Los informes de problemas y las solicitudes de extracción son bienvenidos!