Pracuję z algorytmem dopasowywania wzorców, który generuje acykliczny automat stanów skończonych, który akceptuje dany ciąg tekstowy i wszystkie jego podciągi. Algorytm FSA jest uruchamiany na symbolicznej reprezentacji strumienia muzycznego (np. Dane MIDI). Strumień muzyczny został wstępnie przetworzony, aby podzielić każdą piosenkę na nieoznaczone „segmenty”. FSA jest generowany dla każdego z segmentów w każdym Song: jeśli mają piosenki, dzielone na segmentów będę mieć oddzielne FSA.
Chciałbym porównać FSA każdego segmentu z innymi FSA w moim korpusie. Ostatecznym celem byłoby tworzenie klastrów w przestrzeni podobieństwa i tworzenie „klas” segmentów zgodnie z tym, jak podobne są ich wskaźniki konstrukcyjne. Dlatego szczególnie interesujące są gramatyki, które definiuje każdy FSA (odpowiadające z grubsza niektórym komponentom treści muzycznych w segmencie). Czy istnieją techniki, które mogą być przydatne do porównania czegoś takiego? Przychodzi mi na myśl rozbieżność KL (np. Używając jej porównać rozkład między łańcuchami związanymi z danym FSA), chociaż mogą istnieć lepsze / bardziej wydajne techniki?
Przepraszamy również, jeśli to pytanie jest (1) trywialnie łatwe lub (2) wskazuje na jakieś głębsze nieporozumienie lub (3) odpowiedział w innym miejscu. Jestem niezły, ludzie!