Josefa [cc: Apertium-stuff]:

[Apertium-stuff: I hope Spanish is OK --- will be glad to translate or clarify if not]

Muchas gracias por el mensaje y por el tiempo dedicado. Te respondo y mando copia a la lista de Apertium para difundir tu preprocesador PHP de DOCX entre los desarrolladores y usuarios y por si alguno deseara ponerse en contacto contigo.

El problema no sólo afecta a los archivos DOCX sino en general a cualquiera de los formatos que procesa Apertium, y es difícil de resolver generalmente. Se trata de una decisión razonable de diseño de Apertium, que asume, sin fijarse en las etiquetas concretas, que una palabra nunca puede contener etiquetas, y que, por tanto, cualquier etiqueta de formato es semánticamente equivalente a un espacio en blanco. Claramente, realizando un análisis de las etiquetas se podrían detectar secuencias que siempre ocurren dentro de una palabra como <w:softHyphen /> pero tu mismo ejemplo indica la complejidad de la tarea en vista de que se pueden intercalar etiquetas como "<w:rPr> <w:sz w:val="*28*"/><w:lang w:val="*es-MX*"/></w:rPr>" (¿qué sentido tiene indicar nuevamente el tamaño del tipo y la lengua de un documento en mitad de una palabra?).

En casos como este estaría bien un "limpiador" general de DOCX que detectara los casos en los que con toda seguridad las etiquetas se pueden evitar, pero parece difícil anticiparse a todas las situaciones. Hay gente que ha usado también PHP para analizar la "calidad" del etiquetado de un documento (http://www.boxuk.com/blog/automated-testing-word-documents) y que tal vez podrían inspirar a los desarrolladores, pero parece que sería una tarea cuyo interés es más general que el de reparar simplemente documentos para Apertium.

Incluyo tu "workaround", a ver si a alguien se le ocurre algo.

Gracias

Saludos cordiales

Mikel



 On 09/26/2011 02:39 PM, Josefa Jul wrote:
Buenas, quería aportar una pequeña mejora a Apertium, y no sabía a donde dirigirme.

Por motivos de trabajo, me he topado con un problema: Apertium no traduce bien los ficheros en formato .docx. Mi investigación al respecto me llevó a la conclusión de que el problema no es realmente de Apertium aunque le afecta. El problema es que, ni idea de por qué motivo, en el document.xml que se obtiene al descomprimir el .docx, hay palabras cortadas. Es decir, Apertium va traduciendo trozo a trozo lo que hay dentro de las tags xml, pero a veces dentro de esas tags hay palabras cortadas, que siguen en la siguiente. Como me explico mal, voy a poner un ejemplo:

El siguiente es un trozo real de document.xml es:
- <#> <w:r>
- <#> <w:rPr>
<w:sz w:val="*28*"/>
<w:lang w:val="*es-MX*"/>
</w:rPr>
<w:tab />
<w:t>Infortunadamente, nada sabemos de aquellas corpora</w:t>
</w:r>
- <#> <w:r>
- <#> <w:rPr>
<w:sz w:val="*28*"/>
<w:lang w:val="*es-MX*"/>
</w:rPr>
<w:softHyphen />
<w:txml:space="*preserve*">ciones -desaparecidas</w:t>
</w:r>

como vemos, la palabra "corporaciones" ha quedado separada en dos tags, y eso Apertium no lo traducirá bien, porque intentará traducir "Infortunadamente, nada sabemos de aquellas corpora" por un lado, "ciones -desaparecidas" por otro, y pegar las dos al final, quedando "Infortunadamente, nada sabemos de aquelas *corpora*ciones -desaparecidas"

Para mi trabajo, yo he implantado una solución un tanto rudimentaria, consecuencia de no saber mucho sobre "las tripas" ni de Apertium ni de los .docx. Consistió en realizar un preprocesado del document.xml para unir en una unica "w:t" todas las que aparecieran dentro de una misma "w:p" (que encapsula un párrafo). Este preprocesado lo realizo mediante el script en .php que adjunto (quizás no es la mejor opción, pero es el lenguaje que mejor conozco), al que invoco desde el script de apertium justo despues de la descompresion del xml. Es decir, justo despues de la linea

unzip -q -o -d $INPUT_TMPDIR $FICHERO


añado

php $APERTIUM_PATH/mejorar_xml_doc.php $INPUT_TMPDIR/word/document.xml > $INPUT_TMPDIR/word/document_aux.xml
mv $INPUT_TMPDIR/word/document_aux.xml $INPUT_TMPDIR/word/document.xml


Obviamente, hay que haber puesto el script "mejorar_xml_doc.php" en el mismo directorio $APERTIUM_PATH

A mí esta solución me funciona bastante bien, aunque la verdad es que descruye algo más de formato que antes, pero en mi caso es preferible a la mala traduccion, por las necesidades concretas del usuario que lo utiliza.


En fin, quería compartirlo y que, aunque no sea una solucion definitiva, tal vez sirva como semillita para una versión posterior o algo. En tal caso, agradecería mucho que me mantuvierais al tanto de futuras mejoras al respecto.


Nada más, un saludo y gracias por vuestro tiempo.

Pepa Jul


--
Mikel L. Forcada (http://www.dlsi.ua.es/~mlf/)
Departament de Llenguatges i Sistemes Informàtics
Universitat d'Alacant
E-03071 Alacant, Spain
Phone: +34 96 590 9776
Fax: +34 96 590 9326

<<attachment: mejorar_xml_doc.php>>

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
Apertium-stuff mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/apertium-stuff

Reply via email to