Estoy trabajando con un algoritmo de coincidencia de patrones que genera un autómata de estado finito acíclico que acepta una cadena de texto dada y todas sus subcadenas. El algoritmo FSA se ejecuta en una representación simbólica de una transmisión de música (por ejemplo, datos MIDI). La transmisión de música se ha preprocesado para dividir cada canción en 'segmentos' sin etiqueta. Se genera una FSA para cada segmento en cada canción: si tengo canciones, cada una dividida en segmentos, tendré FSA separadas.
Me gustaría comparar la FSA de cada segmento con las otras FSA de mi corpus. El objetivo final sería agrupar dentro de un espacio de similitud y crear 'clases' de segmentos de acuerdo con lo similares que sean sus métricas de construcción. Por lo tanto, de particular interés son las gramáticas que define cada FSA (que corresponden a ciertos componentes del contenido musical en el segmento) ¿Existen técnicas que podrían ser buenas para comparar algo como esto? Me viene a la mente la divergencia de KL (p. Ej., Al usarla, comparar la distribución sobre las cadenas asociadas con una determinada FSA), aunque puede haber técnicas mejores / más eficientes.
Además, disculpas si esta pregunta es (1) trivialmente fácil o (2) indicativa de algún malentendido más profundo o (3) respondida en otra parte. Soy un verdadero nudo, amigos!