Blog de Santiago
Just another WordPress.com weblog

Clustering – Reconocimiento de voz utilizando metodos K-means y Cobweb

Introducción:

La inteligencia artificial es la disciplina que se encarga de construir procesos que al ser ejecutados sobre una arquitectura física producen acciones o resultados que maximizan una medida de rendimiento determinada, basándose en la secuencia de entradas percibidas y en el conocimiento almacenado en tal arquitectura.

En la IA se puede observar dos enfoques diferentes:

  1. La IA concebida como el intento por desarrollar una tecnología capaz de proveer al ordenador capacidades de razonamiento similares a los de la inteligencia humana.
  1. La IA en su concepción como investigación relativa a los mecanismos de la inteligencia humana que se emplean en la simulación de validación de teorías.

CLUSTERING

El proceso de clustering consiste en la división de los datos en grupos de objetos similares. Para medir la similitud entre objetos se suelen utilizar diferentes formas de distancia: distancia euclídea, de Manhatan, de Mahalanobis, etc. El representar los datos por una serie de clusters, conlleva la pérdida de detalles, pero consigue la simplificación de los mismos.

Clustering es una técnica más de Aprendizaje Automático, en la que el aprendizaje realizado es no supervisado. Desde un punto de vista práctico, el clustering juega un papel muy importante en aplicaciones de minería de datos, tales como exploración de datos científicos, recuperación de la información y minería de texto, aplicaciones sobre bases de datos espaciales (tales como GIS o datos procedentes de astronomía), aplicaciones web, marketing, diagnóstico médico, análisis de ADN en biología computacional, y muchas otras.

ALGORITMOS DE CLUSTERING

El agrupamiento de datos o clustering puede definirse como un método para clasificar o describir propiedades de un sistema a partir de un conjunto de datos adquiridos o representativos de dicho sistema. La aplicación de estos algoritmos tiene como objetivo devolver al usuario una serie de puntos que en cierto modo representan al resto de puntos iniciales por su posición privilegiada con respecto al total.

Algunos de los algoritmos de agrupamiento más utilizados son:

1.- K-means clustering

2.- Fuzzy c-means clustering

3.- Grupos próximos a un entorno (nearest neighborhood clustering)

4.- Redes de aprendizaje competitivo

5.- Cobweb

Un esquema simplificado de un algoritmo de clustering se muestra en la siguiente figura

Reconocimiento de Voz

Actualmente el Reconocimiento de voz es utilizado como comunicación entre humano y computadora. El agrupamiento de datos o clustering puede definirse como el método para clasificar o describir propiedades de un sistema a partir de un conjunto de datos adquiridos o representativos del sistema. La aplicación de estos algoritmos tiene como objetivo devolver al usuario una serie de puntos que en cierto modo representan al resto de puntos iníciales por su posición privilegiada con respecto al total. El objetivo de la construcción de estos algoritmos es que permiten la identificación de los fonemas de personas a partir de variables que identifiquen los caracteres del sonido para un flujo continuo de ondas sonoras y silencios.

Reconocimiento de voz generalmente es utilizado como una interfaz entre humano y computadora para algún software.

Debe cumplir 3 tareas:

  • Pre procesamiento: Convierte la entrada de voz a una forma que el reconocedor pueda procesar.
  • Reconocimiento: Identifica lo que se dijo (traducción de señal a texto).
  • Comunicación: Envía lo reconocido al sistema (Software/Hardware) que lo requiere.

Componentes en una aplicación


WEKA

Es una herramienta de visualización y algoritmos para análisis de datos y modelado predictivo, unidos a una interfaz gráfica de usuario para acceder fácilmente a sus funcionalidades. La versión original de Weka fue un front-end en TCL/TK para modelar algoritmos implementados en otros lenguajes de programación, más unas utilidades para preprocesamiento de datos desarrolladas en C para hacer experimentos de aprendizaje automático.

Las ventajas de Weka son:

  • Está disponible libremente bajo la licencia pública general de GNU.
  • Es muy portable porque está completamente implementado en Java y puede correr en casi cualquier plataforma.
  • Contiene una extensa colección de técnicas para preprocesamiento de datos y modelado.
  • Es fácil de utilizar por un principiante gracias a su interfaz gráfica de usuario.

Weka soporta varias tareas estándar de minería de datos, especialmente, preprocesamiento de datos, clustering, clasificación, regresión, visualización, y selección. Todas las técnicas de Weka se fundamentan en la asunción de que los datos están disponibles en un fichero plano (flat file) o una relación, en la que cada registro de datos está descrito por un número fijo de atributos (normalmente numéricos o nominales, aunque también se soportan otros tipos). Weka también proporciona acceso a bases de datos vía SQL gracias a la conexión JDBC (Java Database Connectivity) y puede procesar el resultado devuelto por una consulta hecha a la base de datos.

EJECUCIÓN DEL ALGORITMO

En primer lugar abrimos el algoritmo reconocimiento_voz.arff, luego hacemos clic en la pestaña Cluster


Luego en la sección cluster hacemos clic en el botón Choose y elegimos el método de clustering que deseemos

Finalmente hacemos clic sobre el botón Start para ejecutar el algoritmo de reconocimiento de voz con el método que hayamos elegido.

ANALISIS DE RESULTADOS DEL ALGORITMO RECONOCIMIENTO DE VOZ

Los algoritmos de clustering permiten clasificar un conjunto de elementos de muestra en un determinado número de grupos basándose en las semejanzas y diferencias existentes entre los componentes de la muestra.

Mediante la utilización de la herramienta Weka presentamos los siguientes resultados obtenidos de la misma, con K-medias y Cobweb en el algoritmo reconocimiento de voz.

Algoritmo K-medias

weka4

Scheme: weka.clusterers.SimpleKMeans -N 2 -S 10

Indica que el algoritmo se ejecuta con 2 clusters y con 10 semillas

Relation:     vowel

Nos muestra que la relación es vocal

Instances:    450

Existen 450 instancias

Attributes:   14

Existen 14 atributos

Test mode:    evaluate on training data

Modo de prueba es evaluado sobre datos de entrenamiento

weka5

Number of iterations: 10

El número de iteraciones es de 10

Within cluster sum of squared errors: 1121.82115943575

Suma de errores cuadráticos

Datos totales          Cluster# 0            Cluster# 1

(450)                      (216)                     (234)

Además se muestran los valores de los niveles de intensidad vocales en fase de entrenamiento por los hablantes Andres y Yesi pronunciando las sílabas hid, hud y had

Entrenamiento o Prueba Entrenamiento Entrenamiento Entrenamiento

Hablante Andres          Yesi          Andres

Sexo Masculino  Femenino     Masculino

Caracteristica 0 -3.5319       -3.8258       -3.2606

Caracteristica 1 1.9342        2.2366        1.6551

Caracteristica 2 -0.4023       -0.3065       -0.4908

Caracteristica 3 0.5794        0.4519        0.6971

Caracteristica 4 -0.2654        0.0385        -0.546

Caracteristica 5 0.6922        0.4786        0.8894

Caracteristica 6 0.0125        0.0126        0.0124

Caracteristica 7 0.346        0.0578         0.612

Caracteristica 8 -0.2987       -0.5759       -0.0428

Caracteristica 9 -0.1038        0.0949       -0.2872

Clase hid               hud              had

A continuación se muestran los valores y porcentajes de la agrupación de Instancias divididas en 2 Clusters:

Clustered Instances

0      216 ( 48%) En el Cluster 0 existen 216 instancias que corresponden al 48%

1      234 ( 52%) En el Cluster 1 existen 234 instancias que corresponden al 52%

Visualización del Cluster

Desde esta pantalla podemos generar múltiples gráficas eligiendo cualquier combinación de atributos para los ejes.

En este caso seleccionamos los siguientes atributos:

  • Nombres de los hablantes en el eje de las X
  • Numero de Clúster en el eje de las Y
  • Los valores de las clases coloreadas (had, hed, hid, hod, hud)
  • Diseño de las instancias por defecto
  • Jitter o variación promedio

Podemos interpretar en la gráfica que los valores de las clases se agruparon en 2 Clusters y en grupos de hablantes separados

En este otro caso seleccionamos los siguientes atributos:

  • Sexo en el eje de las X
  • Numero de Clúster en el eje de las Y
  • Los valores de las clases coloreadas (had, hed, hid, hod, hud)
  • Diseño de las instancias por defecto
  • Jitter o variación promedio

En ésta gráfica podemos observar que las sílabas pronunciadas por las personas del sexo masculino se ejecutaron en su gran mayoría en el cluster 1 excepto por algunos casos como por ejemplo la clase had que ha sido pronunciada por personas del sexo femenino que se encuentran en el cluster 1.

Y análogamente a esto podemos observar que las sílabas pronunciadas por las personas del sexo femenino se ejecutaron en su gran mayoría en el cluster 0 excepto por algunos casos como por ejemplo la clase hud que ha sido pronunciada por personas del sexo masculino que se encuentran en el cluster 1.

Cobweb

weka8

A continuación se exponen algunos comentarios sobre la salida de arriba:

  • -A 1.0 -C 0.0028209479177387815 -S 42 especifica  parámetros agudeza y corte. Estos valores pueden ser especificados a través de la ventana emergente que aparece al hacer clic sobre el área a la derecha el botón Seleccionar (Choose).
  • Nodo N o hoja N representa un subcluster, cuya matriz es el grupo N.
  • La agrupación de estructura de árbol se muestra como un árbol horizontal, donde subclusters están alineados en la misma columna.
  • La raíz es el Cluster 0. Cada línea con un nodo de 0 define subcluster de la raíz.
  • El número entre corchetes después de nodo N representa el número de casos en la matriz el grupo N.

Visualización del Cluster

En este caso seleccionamos los siguientes atributos:

  • Nombres de los hablantes en el eje de las X
  • Palabras pronunciadas en el eje de las Y
  • Sexo coloreadas (masculino, femenino)
  • Diseño de las instancias por defecto
  • Jitter o variación promedio

weka9

Podemos observar que los fonemas son diferenciables en su pronunciación por todos los hablantes y en ambos sexos puesto que las instancias de un hed no se agrupan con un hud, las instancias de un hod no se agrupan con un had y así sucesivamente.

BIBLIOGRAFIA

  • http://sisbib.unmsm.edu.pe/BibVirtualData/publicaciones/electronica/Marzo_2002/pdf/algoritmo.pdf
  • http://catarina.udlap.mx/u_dl_a/tales/documentos/lep/franco_g_ja/capitulo7.pdf
  • http://www.eleconomista.es/empresas-finanzas/noticias/421406/03/08/SpinVox-elige-Cambridge-para-su-centro-de-Reconocimiento-de-Voz.html
  • http://www.ejournal.unam.mx/cys/vol09-03/CYS09307.pdf
  • http://omarsanchez.net/kmeans.aspx
  • http://omarsanchez.net/recocaract.aspx
  • http://www.exa.unicen.edu.ar/catedras/dbdiscov/clase2b.pdf
  • http://www.cs.us.es/cursos/ia2-2007/trabajos/propuesta-6.pdf
  • http://www.dim.uchile.cl/~anmoreir/pr/p9c_clustering.ppt
  • http://www.upo.es/eps/ndiaz/downloads/seminario/Curso%20Data%20Mining%202005-06.Clustering.ppt
  • http://www.ati.es/IMG/pdf/GarreVol3Num1.pdf
  • http://ccc.inaoep.mx/~emorales/Cursos/KDD03/node45.html
  • http://es.wikipedia.org/wiki/Inteligencia_artificial
  • http://petrapx.wordpress.com/2009/06/27/inteligencia-artificial/
  • http://mibibliotecaelectronica.wordpress.com/2009/07/26/inteligencia-artificial-un-enfoque-moderno/

2 Responses to “Clustering – Reconocimiento de voz utilizando metodos K-means y Cobweb”

  1. Muy buenas amigo Santiago, escribe Jose Antonio, estudio Ingenieria de Sistema e Informatica en la Universidad Alas Peruanas Arequipa, estoy muy interesado en este tema de reconocimiento de voz porque lo he elegido como mi tema de proyecto de bachillerato, lo que quiero hacer es exactamente una herramienta de reconocimiento de voz, me explico: Tuve la idea de hacer una herramienta que almacene las voces de un grupo de personas (por ejemplo un grupo de trabajadores de una empresa, pueden ser 10 o 20 o quizás más pero sólo ese número para empezar) y guardarlas en una base de datos, una vez guardadas cada uno podrá hablar y esta herramienta deberá de reconocer al hablante (por ejemplo mostrar en pantalla el nombre y foto de la persona que se registró). Mis inquietudes son las siguientes:

    -¿ Existe esa herramienta informática en el mercado o existe algún proyecto parecido?
    -¿ Si existiera esa herramienta , qué de nuevo tendría que implementar para que sea considerado como un aporte mío?
    -¿ Si implemento esa herramienta, tengo que recurrir a los sistemas expertos o no es necesario?
    -En mi poca investigación que he realizado (en realidad estoy casi en pañales con este tema) he escuchado el tema “patrones de reconocimiento”, ¿Se puede construir una herramienta de reconocimiento de voz con solo patrones de reconocimiento?
    -¿ Para lo que es Patrones de reconocimiento, necesito recurrir a los Sistemas Expertos?
    -¿ WEKA realiza lo que deseo implementar como proyecto?

    Gracias por escucharme, quedo muy agradecido por su respuestas y por su paciencia

  2. Felicitaciones por el artículo.
    Quisiera que por favor me indique en donde se encontrar información y ejemplos de clusters para la selección de elementos.
    Saludos
    Carlos


Leave a Reply