Usted puede notar que las cadenas similares tienen gran subcadena común, por ejemplo:
"bla bla bla" y "Bla bla Bra" => subcadena común es "Bla bla ba" (observe la tercera palabra)
Para encontrar una subcadena común, puede usar el algoritmo de programación dinámica. Una de las variaciones de los algoritmos es Levenshtein distancia (la distancia entre las cadenas más similares es muy pequeña, y entre las cadenas más diferentes, la distancia es mayor) - http://en.wikipedia.org/wiki/Levenshtein_distance.
También para un rendimiento rápido puede intentar adaptar Algoritmo de Soundex - http://en.wikipedia.org/wiki/Soundex.
Entonces, después de calcular la distancia entre todas sus cadenas, debe agruparlas. La forma más simple es k-means (pero necesita definir la cantidad de clusters).Si no conoce la cantidad de clústeres, debe usar la agrupación jerárquica. Tenga en cuenta que el número de clústeres en su situación es número de títulos de películas diferentes + 1 (para cadenas de texto totalmente incorrectas).
¿Qué es lo que quiere obtener como resultado? ¿Quieres buscar todas estas variaciones en una cadena completa? – JMax
Me gustaría agruparlos en un objeto combinado y realizar una comprobación al agregarlos a la base de datos. –