buscar palabras similares por como suenan

2,373 views
Skip to first unread message

Carlos Barboni

unread,
Dec 2, 2009, 6:27:14 AM12/2/09
to asna...@googlegroups.com
Hola listeros:
 
Tengo que desarrollar un buscador de palabras y estoy buscando la forma de que si busco una palabra, me devuelva todas las coincidencias "similares" a como suena la palabra.
Como el texto donde debo buscar es relativamente pequeño, unas 2500 palabras aproximadamente, es muy probable que el usuario no encuentre lo que esta buscando, entonces quiero mostrarle una lista de similares a como suena la palabra a buscar.
 
Por ejemplo si busco: Pedro
me devuelva: perro, erro, etc
 
(es lo primero que me vino a la mente y es solo un ejemplo)
 
Si saben de algun documento donde explique la teoría o como se debería encarar el problema, les doy las gracias!
 
Gracias
Carlos

hernan bruno

unread,
Dec 2, 2009, 7:03:23 AM12/2/09
to asna...@googlegroups.com
Hola, me parece que lo que podes hacer es o bien armar vos la lista de
sinonimos, o sino que la aplicación que estas desarrollando tenga
memoria y recuerde algunas palabras. Este tema yo lo encararia como si
ingreso un texto a buscar que no trajo resultado e inmediatamente
ingreso un texto que trajo resultado, entonces, capaz que las palabras
ingresadas sean sinonimas. Llevando un historial de las veces que ocurre
esto, es probable que cuanto mas comun sean las busquedas, mas sinonimos
sean las palabras.
Pero para hacer esto ultimo necesitas tener un historial importante,
cuantas mas veces se busque mas va a mejorar el diccionario de sinonimos.

Espero haberte ayudado en algo. Información sobre el tema ni idea de
donde podes conseguir.
Saludos

Carlos Barboni escribió:

Iván Gajate

unread,
Dec 2, 2009, 8:09:23 AM12/2/09
to asna...@googlegroups.com
Hola
va a sonar muy freaky pero puedes utilizar el algoritmo de Levenshtein
para comprobar lo que se parecen dos palabras. Es algo parecido a lo
que hacen los de Bytearray para comparar dos trazos, pero tu comparas
dos palabras.
http://www.bytearray.org/?p=91

Puedes poner un umbral de "parecido" y todas las palabras que se
parezcan mas de ese umbral, las pones en un listado.
Tal vez haya algo también por expresiones regulares, pero eso no se
como enfocarlo.
Un saludo.

Mario

unread,
Dec 2, 2009, 8:16:26 AM12/2/09
to asna...@googlegroups.com
Wow Ivan, que bueno lo del algoritmo de levenshtein, no tenia ni idea, buscando por google se ve que lo aplican a encontra la "distancia" entre palabras parecidas... muy bueno!

http://latecladeescape.com/w0/con-nombre-propio/distancia-de-levenshtein.html

Un saludo,
Mario.

Fede Rivas

unread,
Dec 2, 2009, 8:20:55 AM12/2/09
to asna...@googlegroups.com
Friki !

xDDDD

Iván Gajate

unread,
Dec 2, 2009, 10:14:44 AM12/2/09
to asna...@googlegroups.com
Jajaja, me lo contaron en su día y he estado esperando para poder
soltarlo ;)

esedeerre

unread,
Dec 2, 2009, 10:18:04 AM12/2/09
to asna...@googlegroups.com
Esa es una de las cosas típicas que podía soltar Ramón Andrade...

Fué él ????

Menudo crack!!!!

Iván Gajate escribió:

Julio Rabadán González

unread,
Dec 2, 2009, 10:31:46 AM12/2/09
to asna...@googlegroups.com
La distancia de levenshtein es un parámetro muy bueno para localizar palabras similares.
Algoritmos para calcularlo hay muchos, ojo porque si tu base de palabras es extensa puedes tener problemas de rendimiento:

http://en.wikipedia.org/wiki/Fuzzy_string_searching

http://es.wikipedia.org/wiki/Distancia_de_Levenshtein (aquí viene un ejemplo en AS3)


En el ejemplo de Bytearray el número de palabras es bastante reducido.

Una cosa que puedes plantearte es usar un servicio web para eso, con su caché y sus cosas...


Salute


MySQL ya implementa un buscador de ese tipo, si estás tirando de este motor de base de datos yo que tu me pensaría usarlo.


esedeerre escribió:

Iván Gajate

unread,
Dec 2, 2009, 10:32:59 AM12/2/09
to asna...@googlegroups.com
Podría, pero no fué él, fue Israel Pastrana, uno "oculto" de esta
lista que no se digna a contestar. Otro fiera...
Lo planteamos en su día para comprobar si un usuario afinaba al cantar
con un micrófono. Cuando consigues un array de picos de volumen o
soundSpectrum (que eso ya es una movida en si misma), "solo" tienes
que comparar los picos de ese array usando Levenshtein.
Chulo eh?

Javier Fernández Montes

unread,
Dec 2, 2009, 10:33:19 AM12/2/09
to asna...@googlegroups.com
jajajaj

cuánto llevas esperando para poder soltar eso en una conversación eh?
Por cierto, Grant Skinner lo tiene en su string utils, pero se cortó y
lo ha llamado "editDistance"
XD


Javier Fernández :: Drus Unlimited™
listas[at]drusunlimited[dot]com
http://drusunlimited.com

El 02/12/2009, a las 16:18, esedeerre escribió:

>

Manolo Sanchez

unread,
Dec 2, 2009, 11:55:09 AM12/2/09
to asna...@googlegroups.com

Hola a todos/as!!!

 

Tenemos un pequeño problema a la hora de ver un ejecutable Flash a pantalla completa en Windows Vista. Directamente no se ve!!! Al hacer ESC se pone en modo ventana y perfecto, pero el cliente lo quiere a full screen.

 

Si el ejecutable lo generamos con XP funciona a la perfeccion en XP, Vista y Windows 7 pero si lo generamos en Vista o Win 7 no se ve en Vista…teneis idea de que puede ser?

 

Ya se, ya se…pues genero en XP y listos, pero me gustaria saber si os habeis encontrado con este problema.

 

Saludos!!!!

 

Héctor

unread,
Dec 3, 2009, 3:19:57 AM12/3/09
to ASNativos - Lista de Actionscript
En Flash nunca me ha pasado (aunque tendría que comprobarlo ahora),
pero en Silverlight sí que lo he visto recientemente, también tras
pasar de Windows XP a Windows 7. No sé si será algún tipo de
protección, pero me imagino que si me ha pasado a mi también, y con
otro programa, fijo que hay muchos más a los que les haya pasado y
haya soluciones por ahí.

David Bravo

unread,
Dec 3, 2009, 3:27:56 AM12/3/09
to asna...@googlegroups.com
Quizás tengas que ejecutar el Flash como Administrador. A mí me pasó
utilizando el gestor de render en Red del MAX. No funcionaba ni para atrás.
Pero tras ejecutarlo como administrador funcionaba.

Un poco rarito el windows 7 éste (para mí que paso desde XP)

Un saludo,
David Bravo
Dimensión Multimedia, S.L.


-----Mensaje original-----
De: asna...@googlegroups.com [mailto:asna...@googlegroups.com] En nombre
de Héctor
Enviado el: jueves, 03 de diciembre de 2009 9:20
Para: ASNativos - Lista de Actionscript
Asunto: [ASNativos] Re: Problema con ejecutable a pantalla completa

alfonsofonso

unread,
Dec 3, 2009, 5:45:06 AM12/3/09
to ASNativos - Lista de Actionscript
"Cuando consigues un array de picos de volumen o
soundSpectrum (que eso ya es una movida en si misma), "solo" tienes
que comparar los picos de ese array usando Levenshtein"

uau, esto me ha parecido muy interesante, conoces algún ejemplo?????

Iván Gajate

unread,
Dec 3, 2009, 6:06:45 AM12/3/09
to asna...@googlegroups.com
En teoría (no llegamos a desarrollarlo) si tu tienes los valores de
espectro de una canción y los mismos valores de esa canción pero
cantada por el usuario, podrías comparar cuanto se "separan" esos
valores con Levenshtein y por lo tanto deducir si canta bien o mal.
Lo que ocurre es que no puedes comparar milisegundo a milisegundo,
pues además de ser mortal para cualquier procesador, daría resultados
malos siempre.
Se nos ocurrió sacar medias de valores de medio segundo, por ejemplo,
así da valores más coherentes.
Luego el problema es con la entonación, ahí me pierdo un poco para
saber si el usuario canta bien o mal. Con los volúmenes es más fácil
pero menos real claro.
Y claro, todo esto hay que medirlo en valores relativos, pues si uno
canta muy alto, dará valores altos siempre, y habrá que
"compensarlo"... casi ná.

Héctor

unread,
Dec 4, 2009, 5:22:39 AM12/4/09
to ASNativos - Lista de Actionscript
Nunca he trabajo con audio a ese nivel, pero también me ha tocado usar
en el pasado la distancia de Levenshtein, en mi caso fue para una
aplicación que funcionaba de pasarela entra otros programas, que me
enviaban tramas de datos que contenían la matrícula y otros datos de
vehículos que entraba o salían en un recinto... como fallaba bastante
la lectura de matrícula porque los instaladores no siguieron las
distancias calculadas por los ingenieros me tocó poner algo para
intentar averiguar cuál era cada vehículo...

Carlos Barboni

unread,
Dec 4, 2009, 6:31:19 AM12/4/09
to asna...@googlegroups.com
Gracias a todos por estas respuesta y este hilo que se armo. La verdad muy bueno.
Creo que me voy a inclinar por Levenshtein.
Incluso estuve investigando por mi lado tambien y encontre un desarrollo para idioma ingles: http://jobemakar.blogspot.com/2007/08/soundex-comparing-words-phonectically.html   (tiene una clase en AS3 para descargar)
 
y otro en español: http://oraclenotepad.blogspot.com/2008/03/soundex-en-espaol.html  (basado en el mismo sistema que el anterior de Electrotank pero en español).
 
Ahora voy a ver toda la infor que me enviaron y voy a tomar un camino para hacerlo.
Gracias a todos!
Carlos

Carlos Barboni

unread,
Dec 4, 2009, 6:34:44 AM12/4/09
to asna...@googlegroups.com
Una cosa más, para responder todo. Si, se que hay una implementación en MySql. Pero hay solo unas 2.500 palabras para buscar, y tengo idea de usar un archivo XML en lugar de la base de datos. Simplemente porque no me dieron acceso a ella y no son demasiadas palabras.
Creo que por ahora sigo por este camino, si llegan a aumentar, bueno, tomare el camino de MySQL.
Abrazo.

Reply all
Reply to author
Forward
0 new messages