Perlbulario

Download: perlbulario
(para descargar pincha con el botón derecho y elige "guardar enlace como")

Descripción

Perlbulario es un pequeño programa para repasar vocabulario.

El programa utiliza una base de datos que contiene parejas de palabras en dos idiomas. En cada ejecución se elige al azar una lista de palabras (por defecto 25). El programa las muestra en pantalla en orden aleatorio y pide su traducción. Cada vez que se responde correctamente, esta palabra desaparece de la lista y no se vuelve a preguntar en las siguientes rondas.

Cuando todas las palabras han sido acertadas, existe la opción de volver a empezar con la lista completa, o sólo con las palabras que se han fallado en la primera ronda.

También se guarda una estadística con el número de fallos y aciertos de cada palabra. Estos datos se utilizan para dar prioridad en el futuro a las palabras que han sido falladas más veces.

Bases de datos

Formato

Las bases de datos de palabras son ficheros de texto normales. Cada línea contiene una palabra y su traducción, separadas por el signo "=", sin espacios. También es posible incluir etiquetas con el nombre de una sección entre corchetes. Cualquier otra línea es ignorada.

El usuario debe crear una base de datos con todo el vocabulario que desee practicar. Lo ideal es tener un fichero personalizado en el que ir añadiendo poco a poco palabras nuevas. Para empezar, copia el siguiente ejemplo en un fichero que se llame palabras.txt:

[animales]
león=lion
tigre=tiger
perro=dog

[colores]
rojo=red
amarillo=yellow

Estadísticas

En cada ejecución del programa, la base de datos se modifica añadiendo a cada línea dos valores numéricos: veces (el número de veces que una palabra ha sido elegida en el pasado) y fallos (las veces que se ha contestado incorrectamente). Nótese que veces sólo se incremente una vez en cada ejecución del programa, pero fallos se puede incrementar varias veces, o ninguna.

Basándose en estos valores, a cada palabra se le asigna un peso. Por ejemplo, una palabra con peso 3 tiene 6 veces más posibilidades de ser elegida que una con peso 0.5. Las palabras que no han sido elegidas nunca, se tratan como la palabra con el peso más alto. La fórmula es:

peso=((1+fallos)/veces)^exponente

donde exponente es un número real no negativo que se puede modificar desde la línea de comandos con la opción -e. El valor 0 anula el efecto de las estadísticas. El valor por defecto es 1.5.

Ejemplos

Las siguientes bases de datos son ficheros de texto codificados en UTF-8. Es nesario que el terminal soporte esta codificación, si no, los acentos no se verán correctamente. En particular, para poder usar los ficheros en japonés debes tener además las fuentes japonesas y un input method adecuado.

Agradecemos a Nacho Barrionuevo que nos haya enviado una lista de animales vertebrados.

Opciones

Ejemplos de uso

Otros comandos

Durante la ronda de preguntas y respuestas es posible introducir los siguientes comandos:

Instalación

Perlbulario está escrito en Perl, y funciona perfectamente en cualquier sistema que tenga instalado un intérprete de Perl. Ha sido probado con éxito en windows, linux, e incluso en dslinux (el linux de la Nintendo DS).

Linux

En los sistemas linux el intérprete de Perl está incluido por defecto, por tanto la instalación del script es muy sencilla. Sólo recuerda que debes activar los permisos de ejecución y mover el archivo a un directorio incuido en el PATH, por ejemplo /usr/local/bin.

chmod 755 perlbulario
sudo mv perlbulario /usr/local/bin

Windows

Dudo mucho que ningún usuario de Windows tenga interés en instalar este programa. En cualquier caso, el primer paso es instalar un intérprete de Perl.

Mac OS X

Perl viene instalado por defecto con el sistema OS X. Para poder sacar partido al programa tendrás que usar una Terminal. Espero que eso no te asuste.

Mantenimiento de las bases de datos

Las bases de datos de palabras son simples ficheros de texto y pueden ser editados con cualquier editor. También es posible usar la shell para efectuar algunas operaciones de mantenimiento.

Borrar las estadísticas

cut fichero_origen -d= -f1,2 > fichero_destino

Invertir las palabras

Por defecto, perlbulario muestra la palabra de la primera columna (idioma1) y espera como contestación la de la segunda columna (idioma2). Es posible invertir el sentido de las preguntas con la opción -r. Pero a veces es conveniente tener dos ficheros diferentes, por ejemplo para tener dos juegos independientes de estadísticas. El siguiente script da la vuelta a las dos columnas y de paso borra las estadísticas:

perl -e 'foreach(<>) {
if (/=/){
  @f=split /[=\n]/;
  print "$f[1]=$f[0]\n"}
else {print}
}' < fichero_origen > fichero_destino

Invertir las palabras manteniendo las estadísticas

Lo mismo pero manteniendo las estadísticas:

perl -e 'foreach(<>) {
if (/=/){
  @f=split /[=\n]/;
  if ($f[3] eq "") {print "$f[1]=$f[0]\n"}
  else {print "$f[1]=$f[0]=$f[2]=$f[3]\n"}}
else {print}
}' < fichero_origen > fichero_destino

Unir dos ficheros

cat fichero1 fichero2 > fichero_destino

Localizar líneas repetidas

sort fichero > temp1
uniq temp1 > temp2
diff temp1 temp2|less
rm temp1 temp2

Mostrar estadísticas

Muestra en pantalla la probabilidad relativa de aparición de cada palabra. El valor que se usa realmente es este número elevado a un exponente (por defecto 1.5).

perl -e 'foreach(<>) {
if (/=/){
@f=split /[=\n]/;
if ($f[3] eq "") {
print "new\t$f[0]=$f[1]\n";}
else {$a=($f[3]+1)/$f[2];
printf "%6.3f\t%s\n", $a, "$f[0]=$f[1]\n";
}}}' < fichero |sort -g |uniq|less

Disclaimer

Perlbulario no sirve para aprender idiomas, es una simple ayuda para repasar tu vocabulario. Es un programa muy sencillo, no tiene interfaz gráfica pero a mi me resulta útil y por eso lo comparto.

No soy programador, seguro que el código perl se puede mejorar muchísimo.

El nombre original de este script era tangobulario (tango significa vocabulario en japonés). Ahora tangobulario es una aplicación con interfaz gráfico escrita en python.

Nancho Alvarez
vag (arroba) uma (punto) es