Je travaille avec un algorithme de correspondance de motifs qui génère un automate à états finis acyclique qui accepte une chaîne de texte donnée et toutes ses sous-chaînes. L'algorithme FSA est exécuté sur une représentation symbolique d'un flux musical (par exemple, des données MIDI). Le flux musical a été prétraité pour diviser chaque chanson en «segments» sans étiquette. Un FSA est généré pour chaque segment de chaque morceau: si j'ai morceaux, chacun divisé en segments, j'aurai FSA séparés.
Je voudrais comparer le FSA de chaque segment avec les autres FSA de mon corpus. Le but ultime serait de faire un clustering dans un espace de similarité et de trouver des «classes» de segments selon la similitude de leurs métriques de construction. Ainsi, les grammaires que chaque FSA définit sont particulièrement intéressantes (correspondant à peu près à certaines composantes du contenu musical du segment). Y a-t-il des techniques qui pourraient être bonnes pour comparer quelque chose comme ça? La divergence KL vient à l'esprit (par exemple, en l'utilisant pour comparer la distribution sur les chaînes associées à une FSA donnée), bien qu'il puisse y avoir des techniques meilleures / plus efficaces?
Aussi, veuillez m'excuser si cette question est (1) trivialement facile ou (2) indicative d'un malentendu plus profond ou (3) a répondu ailleurs. Je suis un vrai nœud, les amis!
Réponses:
vous pourriez avoir plus de chance sous un autre angle et en regardant la recherche sur la similitude des morceaux de musique, il y a des chercheurs qui étudient cela, et bien que votre approche puisse fonctionner, il existe d'autres approches. il existe de grandes bases de données qui examinent de nombreux éléments / critères tels que les paroles, le genre, etc., par exemple le projet de génome musical .
parfois, lorsqu'il existe une grande variété d'algorithmes, une enquête peut aider. voici deux enquêtes sur l'appariement des graphes.
Structure d'appariement et sémantique: une enquête sur l'appariement de motifs basés sur des graphiques Brian Gallagher
Similitude et correspondance des graphiques / Zager
la source
Étant donné que les FSA sont des graphiques dirigés, votre question peut être généralisée comme «algorithme de mesure de la similitude entre les graphiques dirigés». Une recherche google pour «algorithme de similitude de graphique» donne des pages et des pages de résultats, peut-être que l'une d'entre elles conviendrait à vos besoins?
Une fois que la différence entre les FSA et les digraphes généraux sont les étiquettes de bord ou les symboles de transition dans les FSA, vous devrez donc modifier ces algorithmes pour en tenir compte.
la source