Habla con tu máquina: Asistentes virtuales y reconocimiento de voz

Cuando en el mundo informático surgieron los asistentes virtuales supuso una pequeña revolución. Todo el mundo hablaba del “clippo” es insoportable y no tan gracioso personaje que Microsoft introdujo en su familia Office hace ya unos añitos.

Le hacías determinadas preguntas y el te respondía proporcionándote información para solucionar tus dudas.

Los wizards o asistentes también han resultado muy útiles. Personas totalmente ajenas al mundo informático podían manejar a la perfección software muy avanzado tan solo siguiendo las instrucciones sencillas en pantalla paso a paso.

Otras empresas llevan muchos años desarrollando software de reconocimiento de voz para simplificar la vida a personas discapacitadas. Este tipo de software actualmente es muy común y se ha extendido, formando parte de nuestra vida.

Tabletas, teléfonos, navegadores, ordenadores,… Todos son capaces de reconocer tú voz, y ejecutar una serie de acciones.

Este año he tenido la suerte de recibir un gran regalo durante las navidades, un iPad 4. La verdad es que Siri, el asistente de Apple, es realmente increíble. Con otros sistemas de reconocimiento de voz, empiezas a trabajar y al poco tiempo te sientes realmente frustado, porque no te reconoce nada de lo que dices y pierdes más en entrenarlo que en utilizarlo para facilitarte la vida.

Con Siri esto no sucede, no necesitas entrenarle, todo lo que le empieces a preguntar lo reconocerá sin problemas. Le puedes hacer cualquier tipo de pregunta y puedes manejar tú iPad muy deprisa y de manera súper sencilla.

La verdadera revolución es que se han terminado los complejos comandos de voz, por ejemplo, LLAMAR OFICINA. Ahora puedes realizar preguntas naturales, más humanas, y obtienes los mismos resultados, por ejemplo:

En lugar de decir en voz alta: LLAMAR OFICINA, podrías decir algo como, “Por favor, Siri, enviale un email a mi jefe

ALgunos ejemplos de preguntas más humanas, más naturales son:

– ¿Qué tiempo va a hacer mañana ?
– ¿Qué me pongo mañana?
– Pon algo de rock
– ¿Cuándo es el próximo partido del Real Madrid?
– ¿Cuánto mide Pau Gasol?

Los asistentes virtuales comenzaron a popularizarse en páginas webs de banca, vuelos o tiendas virtuales. Tecleas algo en una casilla de texto, el sistema procesa tú pregunta y a continuación te ofrece una serie de soluciones a tus problemas.

Ahora, gracias a QuePy, podemos ir todavía más allá, podemos utilizar las técnicas de preguntas naturales para obtener resultados de nuestro sistema de base de datos.

Este framework escrito en Python te permitirá realizar cosas como esta:

Puedes hacer una pregunta como esta:

python examples/dbpedia/main.py "Who is Tom Cruise?"


Y obtener algo como esto:

</span>
<span style="color: #c0c0c0;">  SELECT DISTINCT ?x1 WHERE {</span>
<span style="color: #c0c0c0;">    ?x0 rdf:type foaf:Person.</span>
<span style="color: #c0c0c0;">    ?x0 rdfs:label "Tom Cruise"@en.</span>
<span style="color: #c0c0c0;">    ?x0 rdfs:comment ?x1.</span>
<span style="color: #c0c0c0;">  }</span>

<span style="color: #c0c0c0;">  Thomas Cruise Mapother IV, widely known as Tom Cruise, is an...</span>
<span style="color: #c0c0c0;">


La transformación de lenguaje natural a sparql se realiza mediante una serie de expresiones regulares.

</span>
<span style="color: #c0c0c0;">  person_name = Group(Plus(Pos("NNP")), "person_name")</span>
<span style="color: #c0c0c0;">  regex = Lemma("who") + Lemma("be") + person_name + Question(Pos("."))</span>
<span style="color: #c0c0c0;">


Este es un ejemplo de uso del framework para preguntas del tipo ¿Qué es…?

</span>
<span style="color: #c0c0c0;">from refo import Group, Question</span>
<span style="color: #c0c0c0;">from quepy.semantics import HasKeyword</span>
<span style="color: #c0c0c0;">from quepy.regex import Lemma, Pos, RegexTemplate</span>

<span style="color: #c0c0c0;">from semantics import IsDefinedIn</span>

<span style="color: #c0c0c0;">class WhatIs(RegexTemplate):</span>
<span style="color: #c0c0c0;">    """</span>
<span style="color: #c0c0c0;">    Regex for questions like "What is ..."</span>
<span style="color: #c0c0c0;">    Ex: "What is a car"</span>
<span style="color: #c0c0c0;">    """</span>

<span style="color: #c0c0c0;">    target = Question(Pos("DT")) + Group(Pos("NN"), "target")</span>
<span style="color: #c0c0c0;">    regex = Lemma("what") + Lemma("be") + target + Question(Pos("."))</span>

<span style="color: #c0c0c0;">    def semantics(self, match):</span>
<span style="color: #c0c0c0;">        thing = match.target.tokens</span>
<span style="color: #c0c0c0;">        target = HasKeyword(thing)</span>
<span style="color: #c0c0c0;">        definition = IsDefinedIn(target)</span>
<span style="color: #c0c0c0;">        return definition</span>

<span style="color: #c0c0c0;">


Si quieres leer más sobre este framework y comenzar a utilizarlo aquí tienes algunos enlaces de interés:


Google+

One thought on “Habla con tu máquina: Asistentes virtuales y reconocimiento de voz

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s