No será fácil limpiar la basura en correos electrónicos porque los clientes de correo electrónico de software y los humanos etiquetan las partes de correo electrónico de una manera conveniente, pero para limpiar los mensajes comenzaría por:
Las respuestas pueden tener el texto mezclado con comillas, antes, después o mezclado con comillas en bloque. En algunos casos, como mencionó, varios elementos se pueden limpiar directamente:
- encabezados ocultos;
- reenviar y responder encabezados de los principales clientes de correo electrónico
- citas en bloque de los principales clientes de correo electrónico
No es mucho, pero es un comienzo.
Puede mejorar esto encadenando los mensajes por hilo y usando un algoritmo diff de una manera similar a como lo hace git para el código fuente
Los mensajes de correo electrónico tienen encabezados ocultos que se pueden usar para encadenar las respuestas y reenviarlas. Usando eso puedes montar un gráfico dirigido de conversaciones. No sé qué tan confiable es esto, pero sospecho que eso agrupará muchas conversaciones. Muchos servidores de listas tienen una navegación de "hilo" que funciona bien y sospecho que encadenan los mensajes de esa manera.
Puede mejorar esto comparando directamente los correos electrónicos de la misma fuente para aislar firmas
Las firmas automatizadas están presentes en la mayoría de los correos electrónicos de la misma fuente. No solo eso, sino también lemas y otras decoraciones utilizadas a menudo por un autor. Al comparar varios correos electrónicos de la misma persona, esas decoraciones se pueden encontrar y atenuar sin importancia para el contenido. Mi intuición me dice que será necesario un poco de ajuste para aislar la decoración al inicio y al final del correo electrónico y evitar expresiones comunes en el texto utilizado por el autor.
Puede mejorar esto comparando directamente el correo electrónico con una base de datos de correo electrónico para encontrar textos similares.
Será difícil de desarrollar, pero puede resultar una herramienta de auditoría fantástica.
Mi intuición es que al fragmentar un mensaje, encontrar los mensajes que tienen las mismas palabras y compararlos, será posible utilizar una búsqueda de texto completo en la base de datos PostgreSQL para obtener un rendimiento razonable.
[chunk 1][chunk 3][chunk 5][chunk 7]
[chunk 2][chunk 4][chunk 6]
chunk 1: 0-50; chunk 2: 25-75; chunk 3: 50-100 ...
La idea es enumerar las palabras en un fragmento, identificar las que se usan menos y consultar en la base de datos los correos electrónicos que las tienen. Luego compare los correos electrónicos a través de un algoritmo diff para ver qué partes son iguales.
Esto permitirá ir más allá del encadenamiento directo por ID de mensajes. Por ejemplo, reconocerá copiar y pegar.
Sin embargo, será necesario hacer algunos ajustes aquí
Puedes mejorar la correspondencia mediante técnicas de minería de texto
La minería de texto estándar (como se describe en muchas tesis) incluye un paso de limpieza donde se simplifica el texto. Las conectivas se eliminan del texto (a, is, and, or, etc.) y las palabras se transforman como (por ejemplo: cambiado, modificable a cambio). Este texto convertido no es legible, pero para la coincidencia de texto es bueno.
Una limpieza como esa aislará los problemas de coincidencia que generalmente ocurren cuando la persona vuelve a formatear el correo electrónico o el correo electrónico se convierte de html de / a texto sin formato. Esto también evitará correcciones ortográficas simples para romper la cadena.
Conclusión
Este es un problema genial. Mi sugerencia se basa puramente en la intuición, no probado y especulativo en el mejor de los casos. Es el camino inicial que comenzaría a investigar si se me presentara un problema como este. Creo que será difícil de desarrollar, pero puede ser una poderosa herramienta de comunicación y auditoría.
Una solución como esta probablemente sea un buen archivo de correo electrónico. Al encadenar los mensajes y almacenar solo los diferenciales y fragmentos, probablemente tendrá un gran factor de compresión más allá de todo lo que un zip puede hacer.
Además, esta sería una poderosa herramienta de auditoría. Sería evidente cuando una persona falsificara una cita en bloque, una respuesta o un reenvío. La cita en bloque modificada se identificará como texto original y la solución no la limpiará.