Я работаю с алгоритмом сопоставления с образцом, который генерирует ациклический конечный автомат, который принимает заданную текстовую строку и все ее подстроки. Алгоритм FSA выполняется на символическом представлении музыкального потока (например, данных MIDI). Музыкальный поток был предварительно обработан, чтобы разделить каждую песню на немеченые «сегменты». FSA генерируется для каждого сегмента в каждой песне: если у меня есть песни, каждая из которых делится на у сегментов, у меня будет п ⋅ Y отдельные FSAS.
Я хотел бы сравнить FSA каждого сегмента с другими FSA в моем корпусе. Конечной целью было бы создать кластеризацию в пространстве сходства и создать «классы» сегментов в зависимости от того, насколько похожи их метрики построения. Таким образом, особый интерес представляют грамматики, которые определяет каждый FSA (соответствующие примерно определенные компоненты музыкального контента в сегменте). Существуют ли методы, которые могут быть полезны для сравнения чего-то подобного? На ум приходит KL-дивергенция (например, используя ее для сравнения распределения по строкам, связанным с данным FSA), хотя могут быть более эффективные / более эффективные методы?
Кроме того, приносим извинения, если этот вопрос либо (1) тривиально прост, либо (2) свидетельствует о каком-то более глубоком недопонимании, либо (3) ответил в другом месте. Я настоящий нуб, ребята!