Bienvenido, me llamo Luis y hoy les traigo este artículo.
Esto es parte de una serie que describe el desarrollo de Aficionado al cine, un proyecto multidisciplinario de ciencia de datos con el noble objetivo de enseñar a las máquinas cómo "ver"
películas e interpretar emociones y antecedentes (comportamiento causa / efecto
).
Los subtítulos no son tradicionalmente parte del proceso de realización de películas. No aparecen cuando se proyectan en salas de cine, y solo se agregan después de la producción de la película, localizadas en diferentes idiomas para servicios de video o transmisión en casa.
Hay poca creatividad o toma de decisiones en su creación; son simplemente una transcripción real del diálogo hablado y descripciones de otro audio. Pero ese es el poder de poder leer los subtítulos: podemos determinar exactamente lo que se dice en la pantalla.
Eventualmente, querremos aplicar NLP (procesamiento de lenguaje natural) para interpretar estos subtítulos, pero primero necesitaremos procesarlos y limpiarlos.
Índice
Procesando
Los archivos de subtítulos se pueden extraer de una película en forma de archivo .srt
. Estos son básicamente archivos de texto, pero con un formato muy estricto.
Cada subtítulo tiene una ID única, una hora de inicio y finalización (lo que indica que debe mostrarse en HH: MM: SS: MIL
y finalizar en HH: MM: SS: MIL
) y una o dos líneas para el texto del subtítulo real, se mostrará.
Dado que el formato es tan rígido, podemos introducir el archivo .srt
en la biblioteca de Python pysrt
para crear automáticamente objetos para cada subtítulo.
Podemos guardar estas marcas de tiempo de inicio y finalización para más adelante, cuando queramos vincular el diálogo de subtítulos a la acción real en pantalla, pero por ahora solo nos interesa el texto real.
Separación y concatenación de líneas
Primero, separaremos adecuadamente los subtítulos en líneas individuales. Recuerde que el texto de los subtítulos tiene una o dos líneas. Esto conduce a tres casos:
- Una línea: se trata de un diálogo de una sola línea o una descripción auditiva. Esto no requiere ninguna limpieza.
- Dos líneas, un hablante: se trata de un diálogo hablado por un solo personaje que abarca ambas líneas. Estos deben estar concatenados.
- Dos líneas, dos oradores: estos son dos oradores separados, cada uno hablando un pequeño diálogo. Deben separarse en dos líneas.
Limpieza de texto
Dado que los subtítulos se crean para personas con problemas de audición, también transmiten información que no es un diálogo importante para la película, como un personaje que se ríe o la identidad de un personaje que habla desde fuera de la pantalla.
Querremos analizar cada línea y tener cuidado con estos; los eliminaremos con el fin de limpiar los datos para la entrada de PNL, pero anótelos para análisis posteriores.
Aquí hay algunos ejemplos de lo que limpiaremos:
toda una línea es cursiva, indicada por las etiquetas HTML “y”
. Las cursivas se utilizan a menudo para designar una narración o alguien que habla fuera de la pantalla por teléfono. Descartaremos las etiquetas HTML pero mantendremos el resto del texto.
las letras de las canciones comienzan y terminan con una nota musical, independientemente de si son diegéticas (como los personajes que firman un karaoke) o no diegéticas (como la música superpuesta en un montaje). Descartaremos todos estos y no los usaremos en el análisis de PNL.
los paréntesis de línea completa describen tanto los efectos de sonido como los sonidos que no son de diálogo de personajes como «(gruñidos)». Eliminaremos estas líneas de la entrada NLP.
La risa de un personaje a menudo se incluye en los subtítulos, como algo así como “(risas)”. Afortunadamente, hay suficientes cadenas de risa para buscar, y podemos crear una lista que contenga frases como “(risas)”, “(risas)” y “(risas)”. Los eliminaremos del texto de los subtítulos, pero mantendremos todos los demás diálogos.
cuando un personaje está hablando desde fuera de la pantalla, su nombre se mostrará con el texto de los subtítulos. Cuando vemos una película, podemos reconocer la voz de un orador fuera de la pantalla, pero las personas con discapacidad auditiva no pueden darse ese lujo.
Eliminaremos el nombre del personaje fuera de la pantalla del texto, pero podemos guardar este nombre para más adelante, ya que nos dice directamente quién está hablando.
Marco de datos
Con el texto limpio y diversa información complementaria (como la bandera ay / n
para música o si contenía risas, nombres de oradores, etc.) podemos completar un DataFrame
que contenga el texto original, las horas de inicio / finalización
, texto compatible con PNL y más.
Gracias por leer este artículo.
Añadir comentario