Ich arbeite mit einem Pattern-Matching-Algorithmus, der einen azyklischen Finite-State-Automaten generiert, der eine bestimmte Textzeichenfolge und alle ihre Teilzeichenfolgen akzeptiert. Der FSA-Algorithmus wird auf einer symbolischen Darstellung eines Musikstroms (z. B. MIDI-Daten) ausgeführt. Der Musikstrom wurde vorverarbeitet, um jedes Lied in unbeschriftete "Segmente" zu unterteilen. Für jedes Segment in jedem Song wird eine FSA generiert: Wenn ich Songs habe, die jeweils in y Segmente unterteilt sind, habe ich n ⋅ y separate FSAs.
Ich möchte die FSA jedes Segments mit den anderen FSAs in meinem Korpus vergleichen. Das ultimative Ziel wäre es, Clustering innerhalb eines Ähnlichkeitsraums durchzuführen und "Klassen" von Segmenten zu erstellen, je nachdem, wie ähnlich ihre Konstruktionsmetriken sind. Von besonderem Interesse sind daher die Grammatiken, die jede FSA definiert (die ungefähr bestimmten Komponenten des Musikinhalts in dem Segment entsprechen). Gibt es Techniken, mit denen man so etwas vergleichen kann? KL-Divergenz kommt in den Sinn (z. B. Vergleichen Sie die Verteilung über Zeichenfolgen, die mit einer bestimmten FSA verbunden sind), obwohl es möglicherweise bessere / effizientere Techniken gibt?
Wir entschuldigen uns auch, wenn diese Frage entweder (1) trivial einfach ist oder (2) auf ein tieferes Missverständnis hinweist oder (3) an anderer Stelle beantwortet wird. Ich bin ein echter Noppen, Leute!