Ho due file di grandi dimensioni contenenti paragrafi di testo inglese:
- Il primo testo è lungo circa 200 pagine e contiene circa 10 paragrafi per pagina (ogni paragrafo è lungo 5 frasi).
- Il secondo testo contiene quasi esattamente gli stessi paragrafi e testo del primo. È inoltre lungo 200 pagine con 10 paragrafi per pagina. Tuttavia, i paragrafi sono randomizzati e in un ordine diverso rispetto al primo testo. Inoltre, una grande percentuale dei paragrafi presenta piccole modifiche nella formulazione rispetto a paragrafi simili. Ad esempio, un paragrafo nel primo testo potrebbe contenere una frase simile
Like Jimmy, I wanted to go to the palace
alla lettura della frase corrispondente nel paragrafo del secondo testoLike Jimmy, I really wanted to go to the castle
.
Voglio essere in grado di catturare le modifiche qui come l'aggiunta really
e la cancellazione di palace
con la sostituzione di castle
. Se i paragrafi fossero approssimativamente allineati, questo sarebbe piuttosto banale in quanto ci sono molti modi per diffondere il testo. Tuttavia, poiché i paragrafi non sono allineati, non è così.
Se i file fossero piccoli (una manciata di paragrafi), Levenshtein Distance probabilmente funzionerebbe bene, ma poiché i file sono enormi, sarebbe inefficiente confrontare ogni paragrafo del testo 1 con ciascun paragrafo del testo 2 per scoprire quali paragrafi corrispondono.
Quali sarebbero alcuni altri approcci a questo problema per gestirlo in modo efficiente?