Obtenga la diferencia de dos textos de literatura regulares (no el código fuente), con marcado en los cambios

¿Cómo convertir el texto de diferencia de dos libros electrónicos a texto sin formato? Ambos son el mismo libro pero diferentes ediciones, por lo que gran parte del texto es exactamente el mismo dentro de los cambios de puntuación y guiones.

He leído la edición anterior, así que ahora solo me gustaría hojear los cambios de la nueva edición y no volver a leer la nueva edición completa. ¡Y esto podría ser útil no solo para un libro sino para muchos!

Cosas que encontré, pero no resuelven la tarea:

  • Se supone que la utilidad 'diff' y las utilidades GUI de tipo diff se usan con códigos fuente de software, ya que su unidad de comparación es una sola línea de texto, lo que no es el caso del texto en lenguaje natural, que fluye de forma natural y no está limitado por líneas.
  • Se supone que las utilidades 'wdiff' y 'dwdiff' se usan con texto ordinario, no con códigos fuente, ya que realizan comparaciones por 'palabras' consideradas como resultado de la división del texto por algunos delimitadores específicos. Pero en la práctica, debido a alguna razón desconocida, ambos no logran encontrar similitudes en partes idénticas de libros, como las mismas oraciones, incluso los mismos capítulos completos.
  • El software antiplagio simplemente no permite dicha funcionalidad, es un software especializado grande y complejo, que funciona de forma interactiva, sin la capacidad de producir por lotes la salida de "diferencia de texto natural".

Cualquier sistema operativo local o servicio en línea remoto funcionará.

¿Para qué sistema operativo?
No hay límites en eso, cualquier sistema operativo local o servicio en línea remoto servirá.
¿Probaste WinMerge? Si quieres las coincidencias, no las similitudes, hace el trabajo.
Sí, WinMerge JP y todas las alternativas de la lista de diferencias son para la comparación de archivos de tipo de código fuente orientados a la línea.

Respuestas (1)

Suponiendo que pueda usar un programa de consola para esto, le sugiero vimdiff. es una herramienta empaquetada con el editor Vim que toma dos archivos como entrada y los presenta uno al lado del otro con desplazamiento sincronizado y resaltado especial para marcar qué líneas son diferentes y qué ha cambiado realmente en una línea. Es lo suficientemente inteligente como para manejar bloques de texto en movimiento (pero no necesariamente reordenaciones complejas de texto), y también doblará (ocultará) automáticamente secciones de los dos archivos que son idénticos.

Sin embargo, dependiendo de cómo fluya el texto en estos dos libros electrónicos, es posible que tenga problemas para encontrar diferencias. Por ejemplo, si un montón de párrafos en una sección están en un orden completamente diferente pero son idénticos, entonces muchas herramientas no reconocerán que son iguales (tal vez reconozcan uno de ellos, pero no todos). Esto es simplemente un efecto secundario de cómo funcionan las herramientas de comparación, y no es probable que encuentre una herramienta que pueda automatizar adecuadamente la búsqueda de tales diferencias (y si lo hace, es probable que sea extremadamente específico en lo que hace).

Además, una pequeña nota al margen, pero diffno es 'solo para el código fuente del software'. Simplemente tiene dificultades para manejar texto con flujo natural (como el que encontrará en la mayoría de los libros electrónicos, incluso si se convierte a texto sin formato) porque está orientado a líneas, no a palabras.

Puedo usar programas de consola, y probé todos los 'diff', 'wdiff' y 'dwdiff' mencionados. Al igual que vim tiene una contraparte GUI, vimdiff también tiene su versión: "gvim -d file1.txt file2.txt". Si bien la presencia de GUI es una característica adecuada, el problema central permanece. El problema está, como mencionó, en el algoritmo de comparación basado en líneas, que no es útil para comparar texto que fluye naturalmente. La utilidad dwdiff es mejor en este sentido, pero aún no es satisfactoria. Supongo que el problema necesita un enfoque más sofisticado, como usar algoritmos de procesamiento de lenguaje natural (NLP) para dividir oraciones y palabras
Pregunta original actualizada para describir el trabajo de dwdiff