Diccionario RAE Completo

He decidido dar por concluida la ordenación del Diccionario de la RAE, que me descargué con el programa buscaenrae.sh y el programa descargarae.sh hecho para la ocasión y que leía el archivo con la lista de palabras (al que impropiamente denominaba diccionario), para descargar, una a una, las páginas correspondientes.

Todo partió del trabajo que realicé para el proyecto del Diccionario Personal de Isidoro Valcárcel Medina, en 2015.

Ahí nos encontramos con la negativa de la RAE a ceder el diccionario en modo digital, así que tuve que teclear las entradas del mismo a lo largo de más de 3 meses. Finalmente, acabé teniendo una lista de 90940 palabras, algunas de las cuales eran acepciones repetidas. Si quitábamos las palabras que tenían más de una acepción y que estaban en el archivo etiquetadas con un número 1,2,… según procediera, nos quedaban 88296 palabras (debería llamarlas «entradas»).

Por supuesto, estaban plagadas de errores:

  1. En primer lugar los propios de tecleo.
  2. En segundo lugar (oh, my god!) tenía incluidas en mi colección las palabras que Isidoro había decidido incluir en su diccionario personal independientemente de las que hubiera en el de la RAE.
  3. En tercer lugar (y esto resultó ser lo peor), muchas palabras han «desaparecido», pues la entrada no corresponde a la palabra… por ejemplo, la palabra «poeta, tisa», no está en el diccionario sino en «poetisa», así que la palabra poeta no se encuentra en la RAE como tal.

Así que el programa contemplaba la necesidad de decirme si tal o cual palabra no estaba en el diccionario de la RAE (en la versión online)

Actualización 2020
La Real Academia Española (RAE) y la Asociación de Academias de la Lengua Española (ASALE) han emprendido ya las tareas de redacción de la nueva edición de su Diccionario de la lengua española (DLE), que tendrá las características fijadas en la planta aprobada por todas las Academias de ASALE. Con el objetivo de que el desarrollo de esa nueva edición, forzosamente lento, no retrase la inclusión de nuevas palabras y acepciones ni la modificación de las ya incorporadas que necesiten enmienda, se ha optado por publicar estas actualizaciones anualmente.

La que ahora se pone a disposición de todas las personas interesadas recoge las modificaciones aprobadas por todas las Academias en 2020 y tendrá la consideración de versión electrónica 23.4.

Ya de paso, como podía hacerlo, me informé de si la palabra que estaba consultando era o no conjugada, lo que significaba que era un verbo. Un bonito plus que no esperaba.

Con la lista de errores generada, fui revisándolas palabra a palabra, las 1245 entradas no encontradas, entre las que estaban, ni más ni menos: poeta.

Así que a lo largo de los últimos meses del 2020 fui dejándome los ojos para ir revisando esos errores y fabricando una lista de palabras que se corresponda lo más posible con la «oficial» de la RAE.

Ha quedado una lista de 88024 «entradas» que se corresponden con 90452 palabras (ya teniendo en cuenta que algunas entradas o vocablos tienen varias palabras (a veces me confundo y denomino a eso acepciones).

Una vez corregida y revisada, aunque asumo aún un error considerable que no puedo prever, tengo la posibilidad de descargar el diccionario completo palabra a palabra con el programa buscaenrae.sh

 

#!/bin/bash

### FUNCIONES ÚTILES PARA EL PROGRAMA
# uso() Instrucciones del programa y salida en caso de error.
uso () {
  echo "Uso: $0 salida palabra"
  echo -e "\tsalida es un valor númerico que identifica:"
    echo -e "\t[0] para generar un archivo HTML con la respuesta"
    echo -e "\t[1] para generar un archivo TXT  con la respuesta"
    echo -e "\t[2] para generar una línea  TXT  con la respuesta"
  exit
}
f_verbos="00000_VERBOS.txt"
f_errores="00000_ERRORES.txt"

# CONTROL DE ENTRADA DE VARIABLES y ASIGNACIÓN
if [ $# -lt 2 ]
then
  # Reportar uso inapropiado
  uso
else
  salida=$1
  if [ $# -eq 2 ]; then
    palabra="$2"
  elif [ $# -eq 3 ]; then 
    palabra="$2 $3"
  elif [ $# -eq 4 ]; then 
    palabra="$2 $3 $4"
  elif [ $# -eq 5 ]; then 
    palabra="$2 $3 $4 $5"
  fi
  # echo "Palabra es #$palabra#"
fi

# CONSULTA DEL SERVIDOR de la RAE simulando ser uno de los diversos navegadores posibles
navegador=(
  "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1"
  "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:77.0) Gecko/20100101 Firefox/77.0"
  "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:77.0) Gecko/20190101 Firefox/77.0"
  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A"
)
rnd=`echo $(($RANDOM%${#navegador[@]}))` # Elegimos un navegador al azar
# Hacemos la petición a la web de la RAE
curl -s --user-agent "${navegador[$rnd]}" https://dle.rae.es/"$palabra" > ./"$palabra.html"

# PROCESAMOS EL ARCHIVO OBTENIDO (Cortamos, retiramos lo innecesario, etc)
# Si se trata de un verbo, quitar las conjugaciones
id_conjugacion="<div id='conjugacion'>"
esunverbo=`grep -c "$id_conjugacion" ./"$palabra.html"`
if [ $esunverbo -gt 0 ]
then
  echo "$palabra es un verbo" >> $f_verbos
  # ELIMINAMOS la(s) CONJUGACIÓN(ES)
  sed -i "/${id_conjugacion}/d" ./"$palabra.html"
fi

# Si tiene más de una acepción (Calcular cuántas después de saber si es un verbo)
id_acepcion="<article id="
id_acepcion_fin="<\/article>"
num_acepciones=`grep -c "$id_acepcion" ./"$palabra.html"`
# Si no tiene acepciones, la palabra no existe. No continuamos.
if [ $num_acepciones -eq 0 ]
then
  echo "$palabra no se ha encontrado en la RAE" >> $f_errores
  rm "./$palabra.html"
  exit
fi

# PARTIR en $num_acepciones EL FICHERO $palabra.html"
# acepciones y acepciones_fin son 2 arrays de líneas PRECISO CONVERTIRLOS a cortes[]
acepciones=`grep -n "$id_acepcion" ./"$palabra.html"|awk -F":" '{print $1}'|sed ':a;N;$!ba;s/\n/ /g'`
c=0
for i in $acepciones
do
  let cortes[$c]=$(($i))
  let c=$(($c+1))
done
acepciones_fin=`grep -n "$id_acepcion_fin" ./"$palabra.html"|awk -F":" '{print $1}'|sed ':a;N;$!ba;s/\n/ /g'`
c=0
for i in $acepciones_fin
do
  let cortes_fin[$c]=$(($i))
  let c=$(($c+1))
done

# GENERA FICHEROS palabra.X.html por cada ACEPCIÓN
for (( i=0; i<$num_acepciones; i++ ))
do
  # echo "El comienzo del corte está en ${cortes[$((i))]}"
  # echo "El fin del corte está en ${cortes_fin[$((i))]}"
  sed "${cortes[$((i))]},${cortes_fin[$((i))]} !d" "./$palabra.html" > "./$palabra.$i.html"
  # Distintas salidas del programa, en función de la variable "salida"
  if [ $salida -gt 0 ]   # Salida a modo TXT
  then
    w3m "./$palabra.$i.html" > "./$palabra.$i.txt"
    if [ $salida -gt 1 ] # En una sóla línea
    then
      sed ':a;N;$!ba;s/\n/ /g' "./$palabra.$i.txt"|sed 's/  / /g' > "./$palabra.$i.1linea"
    fi
  fi
done

# BORRAR indica si dejar o no los archivos que no se deseen como salida 
BORRAR=1
if [[ $BORRAR -eq 1 ]] && [[ $salida -gt 0 ]]
then
  rm "./$palabra."*html
  if [ $salida -eq 2 ]
  then
    rm "./$palabra."*txt
  fi
fi
# SALIDA FORZADA
exit

 

Este programa era invocado con el siguiente miniprogramita que, leyendo de la lista de palabras corregidas que, impropiamente, denominé diccionariosinrepes.txt, obtiene las diversas, impropiamente denominadas, acepciones y las separa en 90452 archivos de una única línea.

#!/bin/bash

### FUNCIONES ÚTILES PARA EL PROGRAMA
# uso() Instrucciones del programa y salida en caso de error.
uso () {
  echo "Uso: $0 [diccionario]"
  exit
}

# CONTROL DE ENTRADA DE VARIABLES y ASIGNACIÓN
if [ $# -gt 1 ]
then
  # Reportar uso inapropiado
  uso
elif [ $# -eq 1 ]
then
  diccionario=$1
else
  diccionario=diccionariosinrepes.txt
fi

while IFS= read -r line
do
  buscaenrae.sh 2 $line
done < $diccionario

Descargadas y archivadas en una estructura de carpetas obvia:

dict -> LETRA

Se pueden reordenar o «recompilar» en una LETRA, con sus definiciones incluidas, sin incluir, etc…

Lo hago usando otro script simple:

#!/bin/bash

# El diccionario completo está por acepciones en las carpetas
# dict/LETRA
# Cada acepción (en realidad entrada en el diccionario) tiene
# un archivo denominado PALABRA.N.1linea conteniendo su definición.
# (donde N es el número de acepción contando desde cero)

letras="A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z"
for letra in $letras
do
  ls dict/$letra > dictporletra/$letra.archivos.txt
  awk -F"." '{print $1}' dictporletra/$letra.archivos.txt > dictporletra/$letra.acepciones.txt
  ls dict/$letra/*.0.1linea |awk -F"/" '{print $3}'|awk -F"." '{print $1}' > dictporletra/$letra.sinrepes.txt
  cat dict/$letra/* > dictporletra/$letra.definiciones.txt
done

cat dictporletra/*.archivos.txt > DICCIONARIO_TOTAL.archivos.txt
cat dictporletra/*.acepciones.txt > DICCIONARIO_TOTAL.acepciones.txt
cat dictporletra/*.sinrepes.txt > DICCIONARIO_TOTAL.sinrepes.txt
cat dictporletra/*.definiciones.txt > DICCIONARIO_TOTAL.definiciones.txt

Pero queda por resolver un problema que me tiene algo martirizado desde hace meses y es que la ordenación es muy compleja realizarla, pues muchas entradas en el diccionario son dobles, como «ad hoc», pero las definiciones descargadas incluyen líneas que son del tipo: «i Escrito con…» y desde el punto de vista del uso del comando sort, es más o menos lo mismo que decir que si quiero ordenar las primeras como «adhoc», la «iEscrito» se sale de su lugar.

He ordenado muchas manualmente sobre esta compilación, pero es un trabajo absolutamente aberrante y seguro que se puede hacer mejor, así que de momento he decidido dejar de trabajar en esto y dar por cerrado este proyecto que, en realidad, es la puerta de entrada a muchos otros.

Espero que el orden no sea algo tan terrible en esos otros proyectos venideros.

Dejo a disposición pública el Diccionario Completo que he generado de esta manera, con la estructura de carpetas generada, así como los programas utilizados para su procesamiento.

RAE-COMPLETO.tar

Las Sinsombrero

Maravilloso programa dedicado a las mujeres olvidadas de la Generación del 27 que me ha hecho llegar una de mis alumnas de talleres de Poesía al grupo de Whatsapp.

Por más que le dedico un temático todos los cursos, siempre tengo la sensación de que no es suficiente. Me alegra ver que poco a poco más personas van dándose cuenta de la importancia y trascendencia de estas poetas, estas artistas que fueron completamente sepultadas por el machismo recalcitrante que exacerbó el franquismo golpista.

El machismo está lejos de haberse derrotado y queda muchísimo por hacer en la carrera por conseguir que la mujer tenga los mismos derechos que el hombre en el mundo (España incluida).

Este programa le añade una gota a esa corriente que va deshaciendo la roca.

La bibliografía básica del temático de la Generación del 27 escrita por mujeres está bien editada en el libro:

PECES EN LA TIERRA: ANTOLOGÍA DE MUJERES POETAS EN TORNO A LA GENERACIÓN DEL 27.

VV.AA. , 2010. Nº de páginas: 352 págs. Encuadernación: Tapa blanda. Editorial: FUND. JOSE MANUEL LARA. Lengua: CASTELLANO. ISBN: 9788496824607

Quizás no se haya dado en la historia de España un momento tan interesante y participativo para la mujer como el que comenzó a finales del XIX y que resultaría segado, más tarde, por la Guerra Civil, alcanzando su punto álgido en los años de la Segunda República. Como en otros ámbitos artísticos, las poetas del 27 se desenvolvieron con naturalidad entre sus compañeros de generación, con las mismas influencias y ambiciones. Sin embargo, las escasas antologías publicadas, o bien repiten los mismos nombres o se limitan a hacer una enumeración de las poetas en la que apenas se deja constancia de una existencia fantasmal. El presente volumen, que recoge poemas pertenecientes a libros publicados hasta 1936, viene a cubrir ese olvido lamentable. De este modo, junto a nombres reconocidos como los de Concha Méndez, Rosa Chacel, Carmen Conde, Josefina de la Torre o Ernestina de Champourcin, la selección incluye otros menos citados como los de Margarita Nelken, Lucía Sánchez Saornil, Clementina Arderiu, Dolores Catarineu, Casilda de Antón del Olmet, Cristina de Arteaga, Pilar de Valderrama, Concha Espina, Susana March, Elisabeth Mulder, María Teresa Roca de Togores o Marina Romero.

Repositorios microsoft en RaspBerry Pi con Raspbian

Desde que tengo mi Raspberry PI 3, he instalado diversas cosas, pero no recuerdo haber instalado nada de Microsoft ni por asomo. Sé que Raspbian no un Debian puro, pero de ahí a que me añadan un repositorio de Micro$oft… creo que va un abismo.

Así que estoy desando tener algo de tiempo libre para instalar mi servidor web y blog de backup o de desarrollo en un Debian puro sobre Raspberry, que sé que es posible, aunque aún no he encontrado ese huequito temporal.

No es algo que me preocupe mucho, pero he de reconocer que me molesta hacer tan siquiera un ping a un servidor de la empresa en cuestión.

Amapolas en el Cráter: Episodio 042

Programa *Amapolas en el Cráter*.

*20 minutos de voces habitando el espacio sonoro con poesía*. Poema de poemas propios o ajenos, fragmentados o completos. Textos recitados por poetas de los Talleres de Poesía y Escritura Creativa de la *Asociación Cultural Clave 53*. Te esperamos con nuevos episodios de Amapolas en el Cráter en nuestra web (*clave53.org*)

En este episodio han participado:

  • Ester Morales García
  • Isabel Jiménez
  • JMariano Velázquez
  • María Jesús Orella
  • Lucía Herrero
  • Javier Jiménez
  • Susana Olalla Serra
  • Javier Villa
  • Giusseppe Domínguez
  • Mónica Rubio

https://anchor.fm/clave53/episodes/Amapola-042-esc5v5/a-a28efov

Configurar mail/mailx en Linux

He pasado un par de días, desde que hube de formatear mi Linux Mint 19.3 para actualizarlo a Linux Mint 20.1 recuperando pequeñas personalizaciones que había hecho en el PC.

Una de ellas es la herramienta (script) de realización de BackUps que, entre otras cosas, me envía por correo electrónico diariamente el resultado de la sincronización realizada.

Lo uso desde hace más de 10 años y lo he ido perfeccionando con el paso del tiempo. Entre otras cosas, ahora lo ejecuto con un «cron«, de línea de comandos, que hace una llamada al programa en cuestión y envía el correo informativo utilizando el programa mail del sistema operativo.

Pero he tardado mucho en configurarlo.

No recordaba qué había que hacer para que funcionase, pero, tras unas cuantas horas, lo he logrado con un par de cosas sencillas que no sé muy bien porqué no tenía apuntadas.

Tenía una restricción, más o menos tonta autoimpuesta, que era que no quedase abierto un servidor SMTP (ni su puerto 25) permanente en el PC (obsesiones absurdas de seguridad), así que algunas de las soluciones que pasan por instalar un MTA como Sendmail o Postfix estaban descartadas. (Aunque también las probé, ya cuando empezaba a desesperar)

Por más que intentaba configurar mailutils (que incluye mail/mailx) no conseguía enviar un correo fuera del equipo, utilizando una cuenta de correo personal en mi hosting preferido (giusseppe.net). Creo que revistando la información del manual de mailutils sí que habría sido posible enviar correos sin que fuese preciso instalar nada más, pero no daba con la forma, así que probé con alternativas a mailutils, como era s-nail, pero me daba resultados no deseados y algunas configuraciones que había que hacer no me apetecía tenerlas así.

Finalmente, instalé sSMTP y su configuración fue trivial:

sSMTP es un programa que entrega correo electrónico desde un ordenador local a un servidor de correo configurado (mailhub). No es un servidor de correo (como si lo es el servidor de correo rico en funciones sendmail) y no recibe correo, ni expande alias, ni administra una cola. Uno de sus usos principales es reenviar el correo electrónico automatizado (como las alertas del sistema) desde su equipo a una dirección de correo electrónico externa.

Por supuesto, tenía que instalar el pequeño programita mailutils que serviría para los comandos mail/mailx. No he optado por ninguna de las alternativas que no aportan nada que me sea útil. (No obstante, también se puede enviar correo sólo usando sSMTP, pero no se dispone del comando mail)

Para instalar ambas utilidades, bastaba un simple:

sudo apt-get update && sudo apt-get install ssmtp mailutils

 

Y después proceder a configurar el fichero /etc/ssmtp/ssmtp.conf con lo siguiente:

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=jmdomin@giusseppe.net

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=mail.giusseppe.net:587
AuthUser=jmdomin@giusseppe.net
AuthPass=LAFAMOSACONTRASEÑA
UseSTARTTLS=YES

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
hostname=giusseppe.net

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
#FromLineOverride=YES

 

Ahora mis correos salen estupendamente y lo puedo poner a prueba con un simple:

echo "Este es el cuerpo del mensaje" | mail -s "Este es el subject" jmdomin@gmail.com

Color Piel

Me llama la atención cómo interiorizo cierto racismo, que podríamos tachar de microrracismo, como el de llamar «color piel» al color de la gente que tengo en la mayoría alrededor, olvidándome de que el color de la piel no es ni mucho menos algo homogéneo en el mundo y que la expresión «color piel» invisibiliza o tacha de «otras pieles» aquellas que no corresponden con el patrón denominado como tal.

Supongo que así, dentro de este pecado, es donde resulta comprensible la exigencia de buscar espacios para personas «racializadas«.

Es posible que no únicamente sea un mal hábito europeo (culturalmente hablando), sino global, pero no sé si se utiliza esta expresión más allá de lo que yo la conozco. Soy tan limitado…

En resumidas cuentas, hay pieles que han sido denominadas:

Pieles rojas, negras, marrones, amarillas, blancas, rosas, anaranjadas (es el habitualmente usado en el mundo del arte, llamándose color carne), etc, etc, etc.

Valquiria

Valquiria sin armazón
rota como la nocturna luz apagada,
tus labios morados hablan sin voz.

Mis labios mudos liban tus palabras
con ansia para abrazar un oblicuo hallazgo mutuo
y luchan por unas migajas saladas bajo tus ojos.

Nos abrazamos
y soy tu armazón por un minuto
duración aproximada para nudo carnal
optimista grito amoroso.

Somos una infusión pacífica
con ramas lindas
nadando una capa tras otra
arrimando los poros a los poros
hasta hundirnos uno
con otra.

Valquiria sin armazón
toda corazón
rima barata
copla bajo la manta
almohadas blandas
sin un final próximo a la vista.

Maravilla.
Amor infinito.
O casi.

Vacunaciones de la élite

Las infantas (siempre pienso en Las Meninas velazqueñas) se han vacunado saltándose, como no podía ser de otra manera, el protocolo que aplica a los demás ciudadanos del país.

Pero lejos de suponer un problema, lo veo como un servicio público, pues tanto esta irregularidad como otras de los miembros de la élite (porque hay una élite, casi inalcanzable), están sirviendo para que nos demos cuenta de lo deseables que son las vacunas, disipando de una manera rastrera el debate antivacuna o negacionista, sin más que añadir que ponerse por delante para mostrar su egoísmo.

Y como de egoísmos va el tema: todo el mundo quiere, ahora, vacunarse también. Bueno, pues bienvenida sea la idea, pues ha de alcanzarse un mínimo del 70% de personas vacunadas para que una enfermedad sea erradicada y pueda haber gente que diga que no necesita vacunarse para estar a salvo… dentro de ese 30% o menos de otra élite diferente, o no tanto.

Y seguimos…

¿el fútbol o la justicia?

Personas descerebradas, o peor aún, malintencionadas, han borrado con tinta negra el mural que se convirtió en icono de la lucha feminista a lo largo de los pasados meses porque el ayuntamiento de esta ciudad quería borrarlo.

Vandalizado el mural feminista de Ciudad Lineal, en Madrid
El mural feminista ‘La unión hace la fuerza’ de Ciudad Lineal, pintado sobre el polideportivo de la Concepción, ha amanecido vandalizado este lunes, Día de la Mujer, con pintura negra que cubre los rostros de las mujeres homenajeadas en sus paredes. Según denuncian los vecinos y partidos políticos en las redes sociales, los rostros de mujeres como Rigoberta Menchú, Rosa Parks, Federica Montseny o Frida Kahlo, representadas en el mural, han aparecido esta mañana cubiertos de pintura negra. (Efe)

Pero no lo hacen cualquier día, lo hacen este, el 8M más controvertido de las últimas décadas.

Lo hacen despúes de que el día 7M, es decir, ayer mismo se realizase esta fotografía que testimonia que la aglomeración de personas para pedir según qué cosas no se permite, mientras se permiten otras como ir a un partido de fútbol, las atiborradas calles del centro de Madrid consumiendo sin parar, por no hablar de manifestaciones pro-nazis o colapsos anticatalanistas…

Y hoy me pregunto:

Si las mujeres (o el feminismo en general) propusiera un partido de fútbol para reivindicar la igualdad de oportunidades y manifestar la injusticia vigente, ¿qué primaría: el fútbol o la justicia?

Jo. Sé la respuesta. 🙁

Manifiesto Feminista de Mina Loy

En esta era digital es complicado conseguir material en PDF, siendo más que posible conseguirlo en papel. Es paradógico. Supongo que el quid de la cuestión es que lo digital es reproducible y el papel no: Ay, si Walter Benjamin levantara la cabeza… Así que su compra-venta se ajusta mejor a los designios del mercado.

Hoy quería poner en este diario el Manifiesto Feminista de Mina Loy en español, a quien estoy preparando para una clase de los talleres de poesía (casualmente en esta semana) que está viendo «las vanguardias históricas del SXX«, pero no ha sido posible encontrarlo en ningún lugar (tras más de 3 horas de búsquedas infructuosas), así que dejo las fotos del libro que adquirí en su momento para su posible consulta, impresión o lo que se desee, desoyendo los derechos de autor que posiblemente tenga la traductora, sobre un texto escrito en 1915.

Recomendable, no obstante, comprar el libro en la editorial La Linterna Sorda, sobre la obra, incluyendo manifiestos y poemas de esta poeta tan interesante y actual.

Esto no es una broma