Traitement sur des sous-titres

Recherche algorithme de difficulté

a marqué ce sujet comme résolu.

Salut,

J'ai actuellement un projet perso en cours et j'utilise des sous-titres. Le projet consiste en faites à adapter les sous-titres en fonction du niveau d'anglais, espagnol, portugais ou autres de l'utilisateur.

Un exemple : La personne est nul en anglais (0%) il aura donc 100% des sous-titres en français. La personne se considère à 10% en anglais il aura donc 90% des sous-titres en français et 10% en anglais.

Maintenant je doit sélectionner 10% des sous-titres afin de les mettre en anglais, ce que je souhaite c'est de trouver les parties les plus difficile à comprendre. Les 10% seront bien sur plus faciles que les 90% restant.

Avez-vous une idée d'algo pour réaliser ceci ? ou des pistes. Après plusieurs recherches sur internet je n'ai rien trouvé de très concluant.

Merci de vos réponse et bonne journée.

+0 -0

Maintenant je doit sélectionner 10% des sous-titres afin de les mettre en anglais, ce que je souhaite c'est de trouver les parties les plus difficile à comprendre.

C'est a dire "difficile a comprendre" ? Dans le sens ou le vocabulaire est complique ? Ou le débit de mot est plus élevé ? Je pense qu'il faudrait un peu plus de détail a ce niveau la :) (surtout que la notion de difficulte peut etre assez relative une personne qui memorise bien aura plus de facilite avec le vocabulaire mais pas forcement avec la grammaire par exemple, alors qu'une personne plus "logique" pourrait mieux s'en sortir avec la grammaire (allemand ?) mais pas specialement le vocabulaire (c'est de l'exemple hein))

+1 -0

J'étais parti dans deux optiques.

  1. Le vocabulaire utilisé est complexe. J'entends par là, vocabulaire qu'on n'emploie pas tous les jours, exception faites sur des mots scientifiques qui peuvent être utilisés couramment (Ex: Dr House, les noms des maladies, traitement, etc ).

  2. La structure des phrases est complexe. Une phrase peut contenir plusieurs propositions et donc plusieurs couples sujets-verbes. Et bien sûr avec des combinaisons de termes (subordonnant en that, sub se terminant pas that, sub se terminant pas as, etc ).

Dans un premier temps je compte implémenter la première idée, qui je pense est la plus simple des deux à mettre en place.

Edit : Le nombre de mot par minutes est intéressant, je prend note.

+0 -0

Il est vrai que je n'ai pas pris en compte cette difficulté, mais je ne pense pas que cela ait un impact important.

Si je reprends mon exemple de tout à l'heure.

10% des sous-titres en anglais et 90% en français.

Cela veut dire que les 10% d'anglais seront les plus "faciles" des 90% restants. Les sous-titres sont accompagnés de la vidéo qui correspond, ce qui permet tout de même de comprendre ce qui a été dit.

Pour vous expliquer un peu plus à quoi cela sert, je souhaite faire un lecteur vidéo ou l'utilisateur met sa vidéo en VO et les sous-titres sont automatiquement récupérés et intégré à la vidéo. Plus l'utilisateur aura vu de vidéo plus le niveau va augmenter, c'est-à-dire moins de sous-titre dans sa langue maternelle et plus dans la langue qu'il souhaite apprendre.

Jusqu'au moment où l'utilisateur est à 0% de sa langue maternelle et 100% dans la langue d'apprentissage, alors on commencera à enlever des sous-titres.

Détecter le vocabulaire courant, tu pourras pas faire autrement qu'en utilisant un dictionnaire qui te donne la liste des mots courants. Ça doit pouvoir se faire avec l'algorithme d'Aho-Corasick (google it). C'est un algo qui date de 1976 et qui permet de détecter toutes les occurrences d'un ensemble de mots-clés avec une complexité linéaire en la longueur de la chaine d'entrée. En gros il est optimal pour ça. Tu n'as plus qu'à utiliser le rapport entre le nombre de mots du dictionnaire détectés dans la phrase et le nombre total de mots qui constituent la phrase pour te donner une estimation quantifiable de la richesse du vocabulaire employé.

Détecter les structures de phrase en revanche, tu vas souffrir. Ça demande une analyse syntaxique et lexicale de la phrase, ce qui est juste inenvisageable si tu comptes le faire pour tous les langages.

Yacc pourrait peut être donner quelque chose, mais avec un langage naturel il ne faut pas t'attendre à ce que les résultats soient pertinents à 100%.

+3 -0

Il est vrai que je n'ai pas pris en compte cette difficulté, mais je ne pense pas que cela ait un impact important.

Tulifer

Et pourtant, dans un système de sous-titres, le problème peut vite se poser. Par exemple, un dialogue deviendra très lourd à suivre si la langue des protagonistes change sans arrêt. Malheureusement, chercher à détecter les scènes contenant des dialogues risque d'être un peu compliqué…

Pourquoi ne pas envisager le problème sous un autre angle?

Il est vrai que je n'ai pas pris en compte cette difficulté, mais je ne pense pas que cela ait un impact important.

Tulifer

Et pourtant, dans un système de sous-titres, le problème peut vite se poser. Par exemple, un dialogue deviendra très lourd à suivre si la langue des protagonistes change sans arrêt. Malheureusement, chercher à détecter les scènes contenant des dialogues risque d'être un peu compliqué…

Pourquoi ne pas envisager le problème sous un autre angle?

CheapSeth

A vraie dire je n'ai pas trouvé encore d'autre solution, si vous en avez je suis preneur.

Pour détecter un dialogue, on peut faire l'hypothèse qu'il ne s'écoule qu'un temps limité entre une réplique et sa réponse. Dans ces conditions en appliquant un seuil sur la durée qui sépare deux sous-titres, on peut regrouper les sous-titres en groupes au sein desquels la langue doit rester uniforme, pour faire le moins possible de changements de contexte brutaux.

+1 -0

A vraie dire je n'ai pas trouvé encore d'autre solution, si vous en avez je suis preneur.

Tulifer

Quel est l'objectif final? Permettre aux gens de s'entraîner en Anglais?

Si oui, on peut imaginer un système de sous-titres à trous, que l'utilisateur doit remplir correctement pour passer à la suite de la vidéo par exemple.

Pour détecter un dialogue, on peut faire l'hypothèse qu'il ne s'écoule qu'un temps limité entre une réplique et sa réponse. Dans ces conditions en appliquant un seuil sur la durée qui sépare deux sous-titres, on peut regrouper les sous-titres en groupes au sein desquels la langue doit rester uniforme, pour faire le moins possible de changements de contexte brutaux.

nohar

C'est difficile d'en juger, il faudrait savoir à quoi doit servir le logiciel au final.

+0 -0

Pour détecter un dialogue, on peut faire l'hypothèse qu'il ne s'écoule qu'un temps limité entre une réplique et sa réponse. Dans ces conditions en appliquant un seuil sur la durée qui sépare deux sous-titres, on peut regrouper les sous-titres en groupes au sein desquels la langue doit rester uniforme, pour faire le moins possible de changements de contexte brutaux.

nohar

C'est difficile d'en juger, il faudrait savoir à quoi doit servir le logiciel au final.

CheapSeth

Tulifer l'a expliqué sur ce post.

Si une vidéo doit être partiellement sous-titrée dans deux langues différentes, ou partiellement sous-titrée tout court, il faut se débrouiller pour que la coupure soit la moins déstabilisante possible. D'où ma proposition : détecter les temps de pause entre deux dialogues pour opérer les changements lors de ces moments-clés (coupures longues), afin d'éviter de changer brutalement de langue en milieu de dialogue et donc d'ajouter une difficulté inutile pour l'utilisateur.

+3 -0

Perso j'ai bien compris ce qu'il souhaitait faire mais même en cherchant les longue pauses pour passer d'un contexte à un autre, je pense, en tant qu'utilisateur, que je trouverai ça assez désagréable. Perso j'ai besoin d'un certain temps pour changer de contexte. Il faudrait pour moi dans l'idéal que tout le français soit au début de la vidéo et tout l'anglais à la fin. Avec un joli indicateur visuel en plein milieu pour me prévenir du changement de contexte. Et encore…

Quand j'ai lu :

La personne se considère à 10% en anglais [..]

J'ai de suite pensé à l'idée de CheapSeth et du texte à trous, et à vrai dire j'ai trouvé ça plutôt intéressant. Peut-être que c'est déstabilisant, mais je pense que partir d'une vidéo en Anglais, 100% sous-titrée en Anglais pour aller vers une vidéo brute en Anglais sans sous-titre, pas à pas, je trouve l'idée assez sympa et à vrai dire j'aimerais assez essayer pour voir si c'est vraiment impossible à suivre ?

Par contre le mélange de langue me paraît vraiment pas top.

Et si tu envisageais un nombre de pauses autorisées ? Genre "Stop" "Need a hint ?" ou tu permettrais de repasser une portion de dialogue avec les sous-titres en Français ?

(désolé, je laisse un peu de côté la discussion technique car je n'ai pas vraiment de meilleures idées que nohar, par contre le côté fonctionnel est intéressant je trouve).

+5 -0

Merci, l'idée ne viens pas de moi à vraie dire. Il y a maintenant un an et demi j'ai découvert fleex. Fleex était payant au début et après plusieurs discussions avec les fondateurs du projet il a été mis gratuit pendant pas mal de temps et c'est là que j'en ai profité. Dorénavant il n'est plus gratuit, c'est pour cela que je souhaite faire à peu près la même chose. Dans un premier temps cela me permettra de faire quelques chose de différent et à titre personnelle.

+0 -0

Peut-être que tu peux trouver un angle de différenciation intéressant justement ? Pour ne pas uniquement copier ce qu'ils font mais aborder le même problème avec un approche différente / complémentaire.

Tu devrais faire un petit prototype (qu'on appelle Proof Of Concept) pour te faire une idée de ce à quoi ça pourrait ressembler et ce que ça peut donner :)

En tout cas ton projet m'a l'air intéressant, bon courage !

+0 -0

D'ailleurs, "Popcorn Time, fleex edition", c'est un fork de Popcorn Time non ? Popcorn Time étant sous GPLv3, y'a pas moyen d'obtenir les sources ?

youyou

Si popcorn time est effectivement sous GPLv3, tu dois pouvoir trouver les sources de cette «fleex edition», sinon il y en a quelques uns qui sont dans l'illégalité :)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte