lunes, 5 de abril de 2021

Cómo usan la AI en los procesos de selección

 ¿Qué es la contratación con AI?

La contratación con IA es la práctica de integrar la inteligencia artificial, como el aprendizaje automático o los algoritmos predictivos, en las partes de la contratación que requieren mucho tiempo o recursos. 

Hay una variedad de herramientas de contratación de IA que evalúan la idoneidad de un candidato para un puesto. Esencialmente, estas herramientas utilizan algoritmos para entender los puntos de datos de las respuestas, incluyendo: 

  • Análisis de expresiones faciales, lenguaje corporal y gestos
  • Análisis de sentimientos de voz y texto
  • Capacidad real para realizar el trabajo
  • Ajuste cultural y personalidad 

Pero no es esa la razón por la que los reclutadores utilizan la IA. Los reclutadores y los equipos de talento quieren utilizar la IA para automatizar el proceso de contratación y hacerlo más rápido, menos costoso y más fácil de gestionar grandes volúmenes de candidatos.


Por qué la IA para la contratación

La IA, o inteligencia artificial, puede ser una poderosa herramienta para impulsar la eficiencia en la contratación. Al reducir el tiempo dedicado a la selección, las pruebas de habilidades y las entrevistas, los equipos de RRHH y de Talento pueden centrarse en las formas de atraer, incorporar y retener a los empleados.


A medida que la tecnología de IA se hace más accesible, todas las industrias están utilizando la IA para reducir o eliminar las actividades que consumen tiempo. El mundo de la contratación no es diferente.

Diagrama que muestra el tiempo medio dedicado a cada etapa del proceso de contratación

Los equipos de adquisición de talento están desplegando herramientas de contratación de IA para superar los aspectos que más tiempo consumen en el proceso de contratación. La selección de candidatos previa a la contratación sigue siendo la mayor pérdida de recursos de los reclutadores. El número de candidatos por solicitud abierta ha aumentado, y encontrar candidatos de calidad se ha convertido en un reto.

Cómo utilizan los reclutadores la IA

Hay tres formas principales en que los reclutadores utilizan la IA en el proceso de contratación:

  • Búsqueda: encontrar y conectar con el talento rápidamente
  • Selección: obtener rápidamente los mejores candidatos
  • Entrevistas: facilitar la contratación a distancia y ahorrar tiempo

Búsqueda de candidatos

Las herramientas basadas en la IA para la búsqueda de candidatos ayudan a los reclutadores a encontrar y conectar con el talento más rápidamente. Algunas herramientas se centran en la búsqueda de perfiles en bolsas de trabajo o bases de datos internas para cubrir un puesto vacante. Otras ayudan a maximizar los esfuerzos de marketing y a conectar con los candidatos en tiempo real. Y hay chatbots de IA que pueden interactuar con un candidato para determinar qué papel específico será el más adecuado y mostrarles cómo aplicar a través del sitio de trabajo. 

Algunos ejemplos de herramientas de contratación de IA son:

Hiretual
Los clientes utilizan Hiretual para buscar en más de 40 plataformas y más de 700 millones de perfiles profesionales y contratar de manera eficiente con la colaboración del equipo, gestionar la reserva de talento, personalizar el compromiso del candidato y redescubrir candidatos en su ATS/CRM.
Appcast
Appcast utiliza el análisis predictivo, los datos en tiempo real y las ofertas programáticas para maximizar los resultados de contratación.
Shapr
No se limita a la búsqueda de candidatos, Shapr es una especie de Tinder para las relaciones profesionales. El algoritmo de aprendizaje automático sugiere 15 personas relevantes para conocer cada día, y se comunica cuando el interés por conectar es mutuo.

Selección de candidatos

Como se ha demostrado, la selección es el aspecto que más tiempo consume en el proceso de contratación. Las herramientas de selección de IA tienen como objetivo obtener rápidamente información de las solicitudes para acelerar este paso.

Las herramientas de selección de IA varían en su enfoque, desde el análisis de los currículos hasta las evaluaciones de comportamiento y habilidades. El rendimiento predictivo basado en pruebas de habilidades tiende a ser una mejor manera de emparejar a los candidatos con los puestos vacantes, ya que una prueba de habilidades indica el conocimiento y la capacidad actuales, frente a la naturaleza histórica de los currículos. En cualquier caso, las herramientas de IA agilizan el proceso y ayudan a seleccionar a los candidatos, no a excluirlos.

Algunos ejemplos de herramientas de selección de IA son

Tiene una funcionalidad de análisis de currículos dentro de su sistema de seguimiento de candidatos, así como formularios de solicitud flexibles para ayudar a seleccionar a los candidatos.
El software de selección de candidatos de Ideal ofrece una selección automática de currículos para preseleccionar a los candidatos.
Evaluaciones de habilidades basadas en la IA que le permiten evaluar a escala y dedicar más tiempo a los candidatos de alto rendimiento. Califica y clasifica instantáneamente a los candidatos según las habilidades relacionadas con el trabajo.

Entrevistas a candidatos

Las herramientas de IA se utilizan en las entrevistas en dos escenarios clave. En el primer caso, empresas como Unilever, Google y Facebook han empezado a utilizar la IA para evaluar las entrevistas en vídeo, utilizando el análisis de la voz y la expresión facial para evaluar los rasgos de personalidad. Aunque esto puede ayudar a reducir el tiempo y la atención que requieren los reclutadores para revisar la respuesta grabada de cada candidato, hay algunas grandes banderas rojas con el uso del reconocimiento facial para seleccionar a los candidatos - más sobre esto en un minuto. 

La segunda forma de utilizar una herramienta de IA con una entrevista de vídeo pregrabada es analizar el contenido de la respuesta. Por ejemplo, en una prueba de habilidades se puede pedir a un candidato que escriba un ejemplo de entrada de blog sobre un tema relevante para el sector de la empresa. A continuación, en una entrevista de vídeo pregrabada, la herramienta pregunta por qué el candidato ha elegido el tema sobre el que ha escrito. La parte del vídeo puede utilizarse para dar más contexto a la prueba de habilidades del candidato y ayudar a que éste destaque más allá de su respuesta inicial.

Algunos ejemplos de entrevistas a candidatos con IA son

HireVue
Plataforma de entrevistas digitales. HireVue utiliza la IA en sus entrevistas para analizar el estilo de trabajo y la capacidad cognitiva. 
Utiliza el chat y un bot de llamadas telefónicas para seleccionar a los candidatos por teléfono, y luego los invita a realizar entrevistas en vídeo con reconocimiento facial.
Utiliza un chatbot para realizar entrevistas de texto a los candidatos.


Bibliografía

lunes, 1 de marzo de 2021

JAVA: Ejercicio sobre threads

 El enunciado es: Implementar el modelo del productor / consumidor.

La solución aportada no comprueba el tamaño del buffer, considera que nunca se va a llenar tanto el buffer como para que falle el programa por desbordamiento (supone que los consumidores se encargarán de variar el buffer para que no se llene demasiado). Puede que esto no sea correcto en algunos entornos y sea necesario controlar la inserción de elementos en el buffer.

Buffer.java
package productorconsumidor;

import java.util.LinkedList;

class Buffer {

    private LinkedList<Integer> num = new LinkedList<>();

    synchronized void poner(int i) {
        num.add(i);
        notify();
    }

    synchronized int quitar() {
        while (num.size() < 1) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        return (int) num.remove();
    }
}

Consumidor.java

package productorconsumidor;

class Consumidor extends Thread {

    private Buffer b;

    Consumidor(Buffer b) {
        this.b = b;
    }

    public void run() {
        while (true) {
            System.out.println("Se quita " + b.quitar() + " desde " + getId());
            try {
                Thread.sleep((long) (Math.random() * 4000 + 1));
            } catch (InterruptedException ex) {  }
        }
    }
}

Productor.java

package productorconsumidor;

class Productor implements Runnable {

    private Buffer b;

    Productor(Buffer b) {
        this.b = b;
    }

    public void run() {
        int i = 0;
        while (true) {
            try {
                Thread.sleep((long) (Math.random() * 1000 + 1));
            } catch (InterruptedException ex) { }        
            System.out.println("Se pone " + i++);
            b.poner(i);
        }
    }
}

ProductorConsumidor.java

package productorconsumidor;


public class ProductorConsumidor {

    public static void main(String[] args) {
        Buffer b = new Buffer();
        new Thread(new Productor(b)).start();
        new Consumidor(b).start();
        new Consumidor(b).start();
        new Consumidor(b).start();
    }
}

Puedes ver todos mis ejercicios de JAVA en este enlace.





Opinion Black Mirror Entire History of you

Do you know Black Mirror serie watched on Netflix?

The series is set in the near future, where technology pervades most of our actions. In the chosen episode, a memory chip implanted in people's heads systematically marks their lives and conditions them substantially. It is an oval or pill-shaped mini-computer, installed behind the right ear, connected to the brain and its eyes, with which it is possible to store up to three decades of memories, the device continuously records everything we see.

Users of such a device have the ability to visualise any memory either through their eyes or through a screen to share those memories with anyone. The device is installed from the time you are a baby, and your parents can access your memories until you reach the age of majority.

One of the curiosities that we can find in this chapter is that "Robert Downey Jr." bought the rights to the chapter in 2013, his idea was to adapt the story to film, however, after a few years, the idea never materialised.


The main plot of the film is very interesting to me, the human being has a limited memory, sometimes, it can even "fool us" or remember something slightly different to what we really lived or learnt and the worst, unfortunately it is very volatile, we suffer it in exam time for students, in our jobs or our personal lives when we forget the name of an old friend we haven't seen for a long time or, who didn't think that we didn't lock the car when we left, didn't roll up the windows perhaps, or simply, what did we have for dinner last night? But this technology that the series offers us is not only nourished by forgetting, what if we could remember every moment that first love? that first kiss? that first goal we scored when we were young? it would indeed be marvellous. As we will see throughout this work, if such technology existed, our lives would change radically, probably professionals such as "judge", "police" and even "examiner", would change radically, what would be the sense of a jury trial, it would only be necessary to access the memories of the person and we would know if we are facing a rapist, murderer, terrorist or simply a man innocent of any charge.

But it's not all positive, is it? What about privacy? What about the need to forget? Can you imagine being over and over again reliving moments with loved ones who are no longer alive? That probably wouldn't even let us move on in life. Can you imagine a gathering of friends? Who would dare to make a joke and have everyone remember it perfectly on their "pimples" (as the mini-computer is colloquially called in the series)?

Throughout the paper I will be analysing the chronology of what happened in the series from my point of view, of course, reviewing the current laws against privacy and recording of current images, in order, of course, to go towards the epicentre of the paper, which is to try to pass a law that includes this technology and helps us to live with it, as this compulsory paper of the subject proposes.


lunes, 22 de febrero de 2021

JAVA: Ejercicio sobre serialización

El enunciado es: Realizar un programa que cuente el número de vocales que hay en un fichero de texto. Pasar como argumento al programa el nombre del archivo.


CuentaVocales.java

package cuentavocales;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class CuentaVocales {

    public static void main(String[] args) {
        try {
            String vocales = "aeiou";
            int nvocales = 0;
            FileInputStream is = new FileInputStream(args[0]);
            byte []b = new byte[10];
            while(is.read(b)!=-1) {
                for(byte c: b) {
                    if(vocales.contains(Character.toString((char)c)))
                        nvocales++;
                }
                b = new byte[10];
            }
            is.close();
            System.out.println("Vocales: "+nvocales);
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
    
}

Puedes ver todos mis ejercicios de JAVA en este enlace.





lunes, 15 de febrero de 2021

JAVA: Ejercicio sobre interfaces

El enunciado es: En el siguiente post se creó una jerarquía de clases de figuras geométricas. Implementar una interfaz que defina un método que devuelva el número de lados. Hacer que las figuras que tengan lados (el círculo no tiene) la implementen.


Main.java

package main;
import figuras.*;

public class Main {
    public static void main(String[] args) {
        Figuras figuras = new Figuras();
        figuras.annade(new Circulo(3.456));
        figuras.annade(new Triangulo(3.456,2.17));
        figuras.annade(new Cuadrado(2.11));
        if(!figuras.annade(new Triangulo(3.12,5.6),7)) {
            System.out.println("Error al borrar");
        }
        figuras.lista();
        figuras.borra(0);
        figuras.borra(33);
        System.out.println("---------------------");
        figuras.lista();
    }
}

Triangulo.java

package figuras;

public class Triangulo extends Figura implements Lados {
    
    private double base;
    private double altura;
    
    public Triangulo(double base, double altura) {
        this.base = base;
        this.altura = altura;
    }

    @Override
    public double calculaArea() {
        return (base*altura)/2;
    }

    @Override
    public int numLados() {
        return 3;
    }
       
}

Lados.java

package figuras;

public interface Lados {
    abstract public int numLados();
}

Figuras.java

package figuras;

import java.util.LinkedList;

public class Figuras {

    // No hay restricción si utilizamos colecciones (ver unidad 9)
    private LinkedList<Figura> lista = new LinkedList<>();
    
    public void annade(Figura f) {
        lista.add(f);
    }
    
    public void borra() {
        lista.removeLast();
    }
    
    public boolean annade(Figura f, int pos) {
        try {
            lista.add(pos, f);
        }
        catch(Exception e) {
            return false;
        }
        return true;
    }
    
    public void borra(int pos) {
        // Si se intenta borrar una que no existe que no haga nada
        try {
            lista.remove(pos);
        } catch(Exception e) {}
    }
    
    public void lista() {
        for(Figura f: lista) {
            System.out.println("Figura: "+f);
            if(f instanceof Lados) {
                Lados l = (Lados)f;
                System.out.println("\tNum lados: "+l.numLados());
            }
        }
    }
}

Figura.java

package figuras;

public abstract class Figura {
    abstract public double calculaArea();
}

Cuadrado.java

package figuras;

public class Cuadrado extends Figura implements Lados{

    private double lado;
    
    public Cuadrado(double lado) {
        this.lado = lado;
    }
    
    @Override
    public double calculaArea() {
        return lado * lado;
    }

    @Override
    public int numLados() {
        return 4;
    }
    
}

Circulo.java

package figuras;


public class Circulo extends Figura {

    private double radio;
    
    public Circulo(double radio) {
        this.radio = radio;
    }
    
    @Override
    public double calculaArea() {
        return Math.PI*radio*radio;
    }
    
}

Puedes ver todos mis ejercicios de JAVA en este enlace.




lunes, 8 de febrero de 2021

JAVA: Ejercicio sobre polimorfismo

El enunciado es: Crear una clase encargada de almacenar figuras geométricas. La clase deberá disponer de métodos que permitan añadir y borrar un elemento por posición, mostrar los elementos por pantalla, etc.


package main;
import figuras.*;

public class Main {
    public static void main(String[] args) {
        Figuras figuras = new Figuras();
        figuras.annade(new Circulo(3.456));
        figuras.annade(new Cuadrado(2.11));
        if(!figuras.annade(new Triangulo(3.12,5.6),7)) {
            System.out.println("Error al borrar");
        }
        figuras.lista();
        figuras.borra(0);
        figuras.borra(33);
        System.out.println("---------------------");
        figuras.lista();
    }
}

Puedes ver todos mis ejercicios de JAVA en este enlace.





lunes, 1 de febrero de 2021

JAVA: Ejercicio sobre Herencia

El enunciado es: Cree una jerarquía de clases que represente el personal de una empresa. Para ello defina una clase abstracta con los atributos y métodos generales de cualquier empleado y varias subclases para distintos tipos de empleados.


Programador.java

package empleados;

public class Programador extends Empleado {
    
    public Programador(String dni) {
        super(dni,20000);
    }
    
    public void programar() {
        System.out.println("Estoy programando");
    }
}

ListaEmpleados.java
 
package empleados;

public class ListaEmpleados {

    private Empleado[] lista;

    public ListaEmpleados() {
        lista = new Empleado[10];
    }

    public boolean add(Empleado e) {
        for (int i=0; i<lista.length; i++) {
            if (lista[i] == null) {
                lista[i] = e;
                return true;
            }
        }
        return false;
    }

    public void remove(int i) {
        if (i < lista.length && i >= 0) {
            lista[i] = null;
        }
    }

    public boolean remove(String dni) {
        for (int i=0; i<lista.length; i++) {
            if (lista[i] != null) {
                if (lista[i].getDNI().compareTo(dni) == 0) {
                    lista[i] = null;
                    return true;
                }
            }
        }
        return false;
    }

    public void listar() {
        for (Empleado elto : lista) {
            if (elto != null) {
                System.out.print(elto.getDNI() + ": ");
                if (elto instanceof Gerente) {
                    System.out.print("gerente (");
                }
                if (elto instanceof Programador) {
                    System.out.print("programador (");
                }
                System.out.println(elto.getSueldo() + ")");
            }
        }
    }
}

Gerente.java

 
package empleados;

public class Gerente extends Empleado {
    
    public Gerente(String dni) {
        super(dni,100000);
    }
    
    public void reunion() {
        System.out.println("Estoy reunido");
    }
}

Empleados.java

 
package empleados;

public class Gerente extends Empleado {
    
    public Gerente(String dni) {
        super(dni,100000);
    }
    
    public void reunion() {
        System.out.println("Estoy reunido");
    }
}

Empleado.java

 
package empleados;

abstract public class Empleado {

    private String DNI;
    private int sueldo;
    
    public Empleado(String dni, int sueldo) {
        DNI = dni;
        this.sueldo = sueldo;
    }

    public String getDNI() {
        return DNI;
    }

    public void setDNI(String DNI) {
        this.DNI = DNI;
    }    

    public int getSueldo() {
        return sueldo;
    }

    public void setSueldo(int sueldo) {
        this.sueldo = sueldo;
    }
    
}

Puedes ver todos mis ejercicios de JAVA en este enlace.