Ho visto domande simili sul confronto del testo, ma nessuna su una scala così grande.
Ho un cliente con due serie di registrazioni di discorsi, 250 e 550 registrazioni ciascuna. Ciascuna delle registrazioni in ciascun set è unica, ma circa 200 su 250 sono duplicate nel set di 550, e devono eliminare i doppi. Le registrazioni sono state registrate su dispositivi separati, quindi non puoi semplicemente confrontare la lunghezza e il contenuto del file.
Sono disposti a pagare per trascrivere i primi 15 secondi di ogni registrazione, e poi vogliono che io crei un sistema per usare quei trascritti per identificare i duplicati.
Prima di tutto, suppongo che dovrei rimuovere prima la punteggiatura e la maiuscola, perché sono cose che potrebbero cambiare arbitrariamente in base al trascrittore che capita di fare quel file.
La mia prima idea era quella di calcolare semplicemente la distanza di Levenshtein per ogni combinazione di registrazioni, ma non posso immaginare che farlo su una scala così grande (250 x 550) sarebbe efficiente. Poi ho pensato che invece di fare una distanza di Levenshtein, ma usando words come unità invece di caratteri. Ma questo comporterebbe comunque l'esecuzione di un algoritmo 250X550 volte, anche se un algoritmo molto più veloce ogni volta.
Poi pensavo che forse avrei dovuto esaminare ogni documento e creare un dizionario ordinato alfabeticamente con un conteggio del numero di volte in cui ogni parola appare in ogni documento. Quindi potrei semplicemente passare attraverso il dizionario associato a ciascun documento e sottrarre il numero di aspetti di ciascuna parola gli uni dagli altri, per produrre un numero totale di parole non corrispondenti. Questo perde prendendo in considerazione l'ordine delle parole, ma dovrebbe essere molto più veloce.
Quale di questi metodi, o forse un metodo completamente diverso, dovrei usare?