Traducción a Español de un texto en Inglés de Nick Dorion explicando cómo funciona la BERT (el principal motor de TA) ante el genero binario de algunas palabras en Español
Traducción de Inglés a Español realizada por Jose
Texto original escrito por Nick Dorion
***
Los mejores métodos disponibles para el Procesamiento del Lenguaje Natural (PLN) se basan en grandes modelos preentrenados (como BERT, XLM-R o GPT-2) para convertir el texto en vectores multidimensionales.
El primer modelo preentrenado, word2vec, demostró a menudo haber aprendido significados sobre ejemplos de género: Hombre => Mujer es similar a Rey => Reina (con advertencias ).
Se están investigando los sesgos aprendidos por los modelos ingleses (como asociar carreras con géneros), y los sesgos y la representación en Wikipedia que afectan a los modelos lingüísticos, pero no se han analizado tanto los modelos de otros idiomas.
INDICE
El idioma español tiene género gramatical, lo que significa que los sustantivos y adjetivos suelen tener formas masculinas y femeninas. Una frase ambigua en inglés («The doctor arrived at work early»), al traducirse a Español, exige concretar el género: normalmente un doctor masculino o una doctora femenina.
Los modelos lingüísticos deben aprender y codificar por separado estas palabras específicas con variación de género. La traducción automática puede anticiparse a este problema, aunque Google Translate tiende a elegir un género a medida que la frase se vuelve más compleja:
Google Translate ofrece traducciones en femenino y masculino para «The doctor arrived at work early»; pero sólo el masculino («El doctor») para la frase «The doctor arrived at work early and logged into her computer«; y sólo el femenino («La maestra») si el sujeto es «The teacher»
No pretendo destacar el español o Google Translate aquí… Elegí el español porque sé lo suficiente para traducir y generar frases sencillas, y hay múltiples modelos lingüísticos y conjuntos de datos con los que trabajar.
Un equipo de la Universidad de Chile anunció el BETO el pasado mes de diciembre:
El anuncio escribe l@s fanatic@s con un -@s en lugar de -os (grupo masculino o mixto) o -as (grupo femenino). Le pregunté a Jorge sobre cómo -@s podría ser procesado por BETO – su respuesta:
Vaya pregunta! Lamentablemente 😐, yo diría que @ -> o sigue siendo lo que tiene más sentido en español. Con eso estás seguro de que no estás cambiando la semántica.
El Washington Post y el New York Times cubrieron recientemente otra
tendencia en la que algunos argentinos utilizan la -e tanto en singular como en
plural, lo que se traslada al lenguaje hablado e incluso a un discurso
presidencial.
Ambos cambios han sido contestados (incluso por la Real Academia Española). No soy lingüista ni hablante
nativo, así que lee el artículo de Wikipedia lenguaje no sexista y Remezcla para más información.
Durante
meses, esta cuestión estuvo en mi mente. Después de publicar unmodeloespecífico para el hindi, me surgieron nuevas preguntas
sobre las limitaciones y los sesgos de los modelos lingüísticos. Cada modelo
BERT es una nueva nube de palabras de ~768 dimensiones, que luego se utiliza
como base para otros modelos y herramientas, por lo que debemos mejorar
nuestros análisis y explicaciones sobre su funcionamiento.
Después de leerartículosanteriores, tengo tres objetivos para mi
proyecto de español:
***
Varios
proyectos de investigación utilizan el Word Embedding Association Test (WEAT)
para comparar los vectores de palabras de un modelo en un espacio
multidimensional. Se originó en este trabajo (Caliskan 2017).
En un trabajo
más reciente (Liang 2020), las relaciones de los vectores se
condensan en gráficos 2D que muestran las relaciones antes y después de su
desbaratamiento:
Liang y otros, 2020
Nota al margen: ¿Qué representan las dimensiones de los vectores de las palabras y los gráficos?
Es una pregunta tentadora, pero los ejes dentro del modelo son secundarios. No esperamos que conceptos como género o menos/más sigan un eje, y no esperamos que surja el mismo modelo o forma si volvemos a entrenar con datos nuevos o barajados.
Al principio esperaba calcular la distancia lineal entre las coordenadas de las palabras, pero los documentos especifican que se utilice la similitud del coseno… es más importante encontrar un vector de cualquier magnitud que apunte en la dirección correcta, que buscar una coordenada vecina.
Comienzo calculando las similitudes del coseno en BETO para hombre, mujer, él y ella con algunos títulos y plurales:
Man / Doctor: 0.148 | Woman / Doctora: 0.133 (Woman / Doctor: 0.097)
Man / Médico: 0.113 | Woman / Médica: 0.124
Man / science: 0.039 | Woman / science: 0.080
Man / presidente: 0.070 | Woman / presidente: 0.047
he (él) / presidente: 0.023 | she (ella) / presidente: 0.001
He (Él) / presidente: 0.021 | She (Ella) / presidente: 0.022
Man / coworkers: 0.088 | Woman / coworkers: 0.097
Man / coworkers (f): 0.049 | Woman / coworkers (f): 0.213
Es difícil interiorizar estos números directamente. La menos parecida es 0,001 y la más cercana es 0,213. Pero tiene una lógica aparente:
Para medir el sesgo global, necesitamos un script que compare más que estos ejemplos elegidos a mano.
Después de buscar en GitHub ejemplos de WEAT, elegí una lección de código abierto (WEATLab, por el Dr. Ameet Soni) que incluye múltiples listas de palabras categorizadas.
He creado un fork, WEAT-ES, para traducir las categorías y apoyar una columna extra para los sustantivos o adjetivos femeninos. He eliminado algunas palabras que se convertían en frases de varias palabras o que se traducían mal. La distancia a gender_f se promedia sobre una lista de palabras femeninas (mujer, señora, señorita, femenina, niña, ella, hija, chica, hermana, madre, tía, abuela) y gender_m sobre una lista de palabras masculinas (él, masculino, hombre, señor, padre, hijo, chico, hermano, tío, abuelo, hombre, niño).
Esperamos que las palabras masculinas y femeninas estén en lugares diferentes, por lo que el sesgo se calcula comparándolas con palabras de dos categorías diferentes, por ejemplo: «ciencia» y «arte»:
En BETO, los
vectores de las ciencias y las artes son, por término medio, más parecidos al
femenino, pero el género_f tiene un sesgo hacia las palabras de
arte, y el género_m
está ligeramente
más cerca de sus palabras de ciencias.
Juntando las dos listas, las palabras más destacadas fueron:
gender_m: física, baile, ciencia, arte, nasa
gender_f: novela, poesía, baile, shakespeare, ciencia
El guión calculó una puntuación de sesgo de 0,95 (en una escala de 0-2) en estas categorías. La puntuación de sesgo es mucho menor (0,27) en el caso de agradable/desagradable, en el que el género_m y el género_f se acercan más a «agradable».
BETO supera a mBERT en múltiples pruebas de referencia en español porque se centra en el texto en español. ¿Cómo se comparan estas dos mentes en cuanto al sesgo?
En ciencia/arte, mBERT tiene un pequeño (-0,35) sesgo a favor de lo femenino y la ciencia. Las mismas cinco palabras principales aparecen para lo masculino y lo femenino, solo que en un orden diferente.
En cuanto a lo agradable/desagradable, el sesgo es casi inexistente (-0,08), y mBERT también dice que los humanos son más agradables que desagradables.
Una
categoría en la que BETO estaba menos sesgada era la carrera profesional
frente a la familia (sesgo de 0,97 para mBERT, 0,28 para BETO).
Esto se refleja parcialmente en las primeras palabras de mBERT (trabajo
asalariado en negrita)
niños, padres, abogado, maestro, matrimonio
niñas , madres, sociedad, periodista, matrimonio
frente a las principales palabras para BETO:
niños, padres, maestro, doctor, profesor
niñas , madres, profesora, doctora, abogada
¿Las listas de palabras paralelas suponen una diferencia real en las métricas de WEAT?
Al analizar lo agradable frente a lo desagradable en un modelo, las palabras más cercanas fueron:
gender_m: amigo, familia, enfermo, amor, extraño
gender_f: amiga, familia, encantadora, enferma, rebelde
Las palabras más cercanas a gender_f incluyen tres palabras femeninas de mi código de referencia que conecta las palabras correspondientes. Si hubiéramos trabajado sólo a partir de la primera lista, ¿cuáles serían las palabras más cercanas al femenino?
género_f: familia, amigo, rebelde, divorcio, chismoso
El sesgo medido también aumentó de 0,27 a 1,12 en este experimento. Para ser claros: esto no es un sesgo de BETO o mBERT – esta es la razón por la que WEAT-ES debe comparar listas de palabras paralelas para hacer comparaciones justas.
***
Una forma común de crear modelos ML interpretables son los contrafactuales. Probamos por separado nuestra entrada original y una entrada en la que se cambia una característica, para ver si el cambio de esa característica modifica la salida del modelo. Esta misma herramienta podría aplicarse también durante el entrenamiento, o incluso a todo el corpus para crear incrustaciones.
Uno de mis objetivos es hacer un contrafactual en el que cambiemos sin problemas el género en la frase. Las incrustaciones de BETO pueden ayudarnos a encontrar las palabras correspondientes y a analizar las frases. Sin embargo, debemos hacerlo con cuidado:
Aunque más adelante necesitaría entradas más largas, empecé con palabras individuales. Creé un noun_diff y un article_diff para medir la distancia entre el masculino y el femenino para diferentes partes de la oración. Las primeras palabras de salida eran buenas coincidencias, y no diferían mucho para los métodos de coordenadas más cercanas o de similitud de coseno (se pueden considerar otras distancias vectoriales con Milvus.io). Las listas más largas de sustantivos y adjetivos más específicos (como las de la prueba WEAT-ES) eran propensas a errores, o a que varias palabras se resolvieran en una más común.
Nota al margen: por qué he utilizado un modelo lingüístico que distingue entre mayúsculas y minúsculas
En el modelo BETO que distingue entre mayúsculas y minúsculas, la palabra vecina más cercana es a veces la palabra de género opuesto. Es fácil. En otros casos, es la palabra con mayúsculas. Intenté cambiar a un modelo que no distinguiera entre mayúsculas y minúsculas para eliminarlas. Desgraciadamente, a) los resultados eran menos precisos, b) la nueva palabra más cercana era a menudo el plural, y c) coincidencias como biblioteca/Biblioteca eran una fuerte pista para no invertir la palabra
Los nombres siguieron siendo difíciles: los nombres femeninos a veces encontraban vecinos dentro del modelo lingüístico (Paula/Bruno, Cecilia/Claudio), pero los nombres masculinos en los que podía pensar a menudo cambiaban a maestra (esto era un artefacto de que yo estableciera maestro/maestra como el noun _diff; los revoltijos de letras al azar también «cambiaban» a maestra).
Finalmente encontré el paquete gender-guesser que puede estimar el género binario de los nombres, incluyendo categorías difusas (mostly_female para Ashley).
Por suerte, este paquete incluye información sobre la popularidad de los nombres en España, por lo que puedo elegir nombres comunes masculinos y femeninos adecuados.
Calificaciones de plomo/adivinador de género
Para las frases, mi primer plan fue una red neuronal seq2seq (secuencia a secuencia), utilizada a menudo en la traducción automática y el resumen. Revisé ejemplos de TensorFlow, HuggingFace y PyTorch. Al final me eché atrás por estas razones:
Decidí que el etiquetado de partes del discurso y el análisis de dependencias de SpaCy podrían hacer el trabajo de deconstrucción de oraciones.
Elcuaderno deCoLab es el mejor lugar para ver este guión, pero el orden principal es:
Esto ha
funcionado muy bien. Considere esta frase de la Wikipedia en español:
«Durante las audiciones, el actor británico Hugh Laurie se econtraba en
las filmaciones de la película…»
«las
audiciones» es neutro;
se deja solo
«el actor británico Hugh Laurie» se convierte en «la
actriz británica Cecília Laurie»
En general, BETO era bueno para encontrar las palabras correspondientes, y spaCy era el héroe para saber si hacía una coincidencia válida.
Seguí experimentando con la escritura en espejo, y mis únicos problemas serios ahora son Nosotras (cuando se escribe en mayúsculas – en parte porque spaCy no asignó un género…), y lugares que también son nombres (Savannah, Georgia).
¿Por qué no añadir la @ o la -e de género neutro? Podríamos (muy teóricamente) reducir el sesgo de género en las propuestas de charlas de conferencias o en las evaluacionesacadémicas.
El problema es que el tokenizador divide las palabras con letras desconocidas (@) y las palabras que el modelo no ha aprendido (argentinos). El conocimiento de «hay otra palabra similar a argentinos, terminada en -es», y cualquier otra regla, tendría que ser codificado desde cero.
He creado un repositorio en GitHub para que la gente pueda intentar ejecutar el código fuera de un cuaderno, y bifurcarlo en más proyectos. Pasé un poco de tiempo reescribiendo el código para FlauBERT (uno de los BERTs franceses). Cuando calculé un noun_diff de il/elle o homme/femme, todo se convirtió en esas dos palabras. La elección del modelo de BERT adecuado y el cálculo de la diferencia vectorial podrían ser un proyecto propio.
Existen muchos otros BERT, pero los modelos preformados de spaCy son un factor limitante: su sitio oficial muestra soporte para alemán, griego, francés, italiano, lituano, noruego, holandés y portugués.
***
La primera opción se basa en frases espejo / contrafactuales. Cuando recibimos un texto de entrada para una predicción, nuestro código puede enviar el texto original y su frase espejo al modelo, e informar si obtiene respuestas diferentes. Para este ejercicio, he entrenado un clasificador de críticas de películas. El uso del BETO específico para el español mejora ligeramente la precisión en el conjunto de evaluación original, pasando del 75% al 77%.
Comparé los
resultados de cada fila del conjunto de evaluación.
Resultó que pequeños errores del guión espejo, como un punto de más, podían
cambiar la clasificación de toda la revisión.
Mis cambios previstos, como actor/actriz, sí aparecían en algunas frases
del espejo. Pero cuando aislé sólo esos cambios, el resultado del clasificador
no tenía ese cambio. Esto me indicó que el clasificador no estaba muy sesgado;
no obstante, me gustaría recomendar esta prueba contrafactual.
Otra opción es aceptar que un modelo preentrenado tiene algunos sesgos, pero el entrenamiento para la construcción de un nuevo modelo/ajuste podría estar sesgado. Supongamos que niño y niña se trazan como polos opuestos en un eje. Entonces entreno un clasificador sobre miles de ejemplos de entrenamiento y sus frases reflejadas. El clasificador resultante verá que ese eje tiene menos importancia y captará otras diferencias.
También podría considerar la posibilidad de añadir contrafactuales para aumentar y mejorar la precisión a largo plazo de un modelo. Probé dos enfoques: extraer al azar de los ejemplos originales o reflejados, o incluir ambas frases en los datos de entrenamiento. Ambos métodos alcanzaron una precisión del 93% en el conjunto de evaluación original. No dispongo de una gran muestra de tareas y conjuntos de datos y curvas y tiempo global de entrenamiento para publicar resultados concluyentes, pero esto fue prometedor y espero que la investigación pueda continuar en este sentido.
Si tuviéramos que formar a un nuevo modelo desde cero, ¿qué podríamos hacer de forma diferente? Yo recomendaría:
Este es mi
último consejo para este post!
Bibliografíatrabajosinvestigación
Los cuadernos de CoLab: (1, 2, 3)
Soy Nick, un desarrollador web que busca trabajos de Ingeniero ML, también abierto a presentar en meetups! Portafolio ML – mapmeld en Twitter y GitHub)
¿Sabías que tenemos cuatro publicaciones y un canal de YouTube? Puedes encontrar todo esto desde nuestra página de inicio en plainenglish.io – ¡muestra un poco de amor siguiendo nuestras publicaciones y suscribiéndoteanuestro canal de YouTube!
Articulos relacionados
Traducción a Español de un texto en Inglés de Nick Dorion explicando cómo funciona la BERT (el principal motor de TA) ante el genero binario de algunas palabras en Español
Traducción a Español de un texto en Inglés de Nick Dorion explicando cómo funciona la BERT (el principal motor de TA) ante el genero binario de algunas palabras en Español
Traducción a Español de un artículo de Azad Yaşar, explicando los nuevos modelos Seq2Seq de Traducción Automática Neuronal, capaces de mapear y trazar relaciones entre 2 idiomas en base a un corpus paralelo.