我正在使用一种模式匹配算法,该算法生成一个非循环的有限状态自动机,该自动机接受给定的文本字符串及其所有子字符串。FSA算法正在音乐流(例如MIDI数据)的符号表示上运行。音乐流已经过预处理,可以将每首歌曲分为未标记的“段”。一个FSA被用于每首歌曲的每个段中产生:如果我有歌曲,各自分成ÿ段,我会Ñ ⋅ ý单独的FSA。
我想将每个部分的FSA与我的语料库中的其他FSA进行比较。最终目标将是在相似性空间内进行聚类,并根据其构造指标的相似性提出细分的“类别”。因此,特别令人感兴趣的是每个FSA定义的语法(大致对应于片段中音乐内容的某些组成部分)。是否有一些技巧可以比较这样的东西?尽管可能存在更好/更有效的技术,但我想到了KL散度(例如,使用它比较与给定FSA相关联的字符串的分布)。
同样,如果这个问题是(1)轻而易举的或(2)表示有更深的误解或(3)在其他地方回答了,则表示歉意。我是一个真正的小伙子,伙计们!
3
您需要告诉我们“相似”的含义。您必须选择指标;没有一项适合所有目的的正确指标。没有更多信息,我们无法告诉您要使用的指标。我建议编辑问题以解释为什么要测量相似性,对相似性度量的结果将要做什么以及进行了哪些研究。您可能首先查看基础字符串之间的相似性,而不是测量从这些字符串派生的FSA的相似性。想到编辑距离。
—
DW
字符串指标不错,但不尽人意。我不想比较特定的字符串,而是想比较可能产生这些字符串的规则系统(形式语法/ FSA)。我认识到可以产生任何特定字符串的语法有无限多种,因此我将搜索限制为使用一组特定规则构建的语法(FSA)。我想象在某些情况下,根据给定的字符串量度,两个单独的字符串在形式上相似,但是产生它们所需的语法却大不相同
—
Flip
从问题的陈述来看,每个FSA都接受一个字符串及其所有子字符串。从根本上讲,此FSA的特征在于它接受的最长字符串。它的整个结构都源于此。因此,比较FSA而不是直接比较构造它们的字符串没有什么意义。您的FSA构造技术可能强调了一些您认为重要的功能。然后,我们需要了解它们的外观,以了解重要的内容。归结为:相似之处,度量标准。实际上,这个问题没有任何意义。
—
babou 2015年