Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Leoheart en 11 de Marzo de 2007, 06:16:41 PM

Título: Creando un traductor!:D
Publicado por: Leoheart en 11 de Marzo de 2007, 06:16:41 PM
Buenas!

Antes de nada decir que gracias por leer tooodo lo que voy a exponer!

El problema que se me plantea es que tengo que implementar un programa traductor. Es decir un traductor de toda la vida. Se proporciona un diccionario estadistico, un diccionario de bigramas y un texto traducir.
El diccionario estadistico tiene el siguiente formato:

palabra traduccion probabilidad

Se interpreta como palabra traduccion de esa palabra y probabilidad de que esa sea la traduccion.

El diccionario de Bigrama tiene el mismo esquema pero en vez de ser una traduccion , es una pareja de palabras y la probabilidad de que vayas seguidas, por ejemplo:

La casa 1,000

Significa que la probabilidad de que La vaya con casa es de 1,0.

Como hay varias posibles traducciones hay un algoritmo voraz que nos da que palabra hay que traducir.

He conseguido que el programa traduzca, lo que pasa es que es lentiiiiisimo.

El algoritmo que habia seguido yo para resolverlo es:

Creo dos tablas hash
Leo del primer diccionario y voy metiendo en la tabla hash la palabra con una lista de sus traducciones.
Hago lo mismo con el segundo.
Por ulitmo abro el archivo a traducir y voy palabra por palabra traducciendola con el algoritmo voraz.

Lo mas logico es hacerlo de esta manera, pero el tiempo se me dispara mucho.

Alguien tiene una idea mejor?Espero alguna respuesta!

Graciassss!!!!
Título: Creando un traductor!:D
Publicado por: Mars Attacks en 12 de Marzo de 2007, 12:44:25 AM
A mí me parece que el método es el más eficaz posible, con un coste un poco alto la primera vez que cargues los diccionarios (¿no estarás cargando una y otra vez los diccionarios antes de cada frase, no?), pero después tendría que ser óptimo hacerlo así.
Quizá podrías guardar el objeto diccionario directamente en un archivo, con lo que te ahorras el coste de tener que crearlo cada vez que uses el programa (bueno, al menos en python yo abogaría por esto, no sé qué estás usando).
Título: Creando un traductor!:D
Publicado por: Leoheart en 13 de Marzo de 2007, 06:12:21 PM
Gracias por contestar!:P
Estoy programando en c++. La cuestion es que es un trabajo de clase y los profesores solo lo ejecutan una vez. El diccionario solo lo leo una vez, ademas el que ellos usan es bastante grande(mas o menos 40 Mb). Posteaba esta cuestion por que a mi me sale un tiempo demencialmente grande unos 200 sg y a compañeros les sale 6 seg!:P A si que en algo debe de estar!!! xD
Título: Creando un traductor!:D
Publicado por: Diferencial en 13 de Marzo de 2007, 07:51:37 PM
La hostia que casualidad!! yo estoy comenzando hacer un traductor tambien. Pero yo uso xml y xpath a ver que velocidad tiene.
Título: Creando un traductor!:D
Publicado por: Leoheart en 14 de Marzo de 2007, 12:24:11 AM
Cita de: "Diferencial"La hostia que casualidad!! yo estoy comenzando hacer un traductor tambien. Pero yo uso xml y xpath a ver que velocidad tiene.
Pues si tienes alguna idea!:P

Acaba de subirlo mi compañero al server que lo ejecutado y se nos ha pasado del limite de 600 seg!!! Y hay gente que lo hace en 6!!!!
Título: Creando un traductor!:D
Publicado por: shephiroth en 14 de Marzo de 2007, 11:32:14 AM
El tiempo empieza a contar antes de cargar diccionarios o despues??
Título: Creando un traductor!:D
Publicado por: Leoheart en 14 de Marzo de 2007, 09:17:44 PM
Cita de: "shephiroth"El tiempo empieza a contar antes de cargar diccionarios o despues??
Antes!
Título: Creando un traductor!:D
Publicado por: Mars Attacks en 15 de Marzo de 2007, 03:19:49 PM
Joder, pues entonces no te compliques la vida: pregúntale a la gente que lo hace en 6.
Título: Creando un traductor!:D
Publicado por: Leoheart en 16 de Marzo de 2007, 06:58:47 PM
Cita de: "Mars Attacks"Joder, pues entonces no te compliques la vida: pregúntale a la gente que lo hace en 6.
Es un concurso que quien gana se lleva dos puntos y 150 euros!! xDDD Se callan como putas xDDD