【问题标题】:Fuzzy matching sentences to stanzas模糊匹配句子到节
【发布时间】:2026-01-02 07:05:02
【问题描述】:

我有来自 srt 字幕文件的歌词。如果我想将它们与另一个歌词网站上的节进行匹配,最好的方法是什么?

我的方法是使用 tf-idf 向量每个歌词行并尝试模糊匹配到 staza,使用歌词行的开始和结束时间作为线索是否该行可能属于前一个节,下一个节,或属于它自己的节。

我也尝试过动态编程,但不太成功。由于歌词和节的结构差异很大,有时结果会完全偏移或混乱,特别是如果有重复的合唱。

如果有循环神经网络或其他机器学习算法,是否有解决此类问题的现有方法?

【问题讨论】:

    标签: machine-learning nlp sentence-similarity


    【解决方案1】:

    我建议使用 Doc2Vec 或 Word2Vec 方法,基本上你用一些语料库训练一个 NN,NN 将为每个单词/文档生成一个向量,这些向量将根据现实世界中单词的相似性(语料库)具有相似性

    所以 lovecare 的向量将非常相似,这些向量具有一些其他很酷的属性,例如,如果你减去或添加它们,你可以得到一个拥有一些的词变电站或加法的含义

    一旦你得到单词或文档的向量,你可以用各种方法检查向量之间的相似性,常用的是cosine similarity

    此方法与 tf-idf 混合以生成权重以获得最佳结果

    使用很简单,例如

    from gensim.models import Word2Vec
    from nltk.corpus import brown
    
    b = Word2Vec(brown.sents())
    print b.most_similar('money', topn=5)
    

    输出

    [(u'care', 0.9145717024803162), (u'chance', 0.9034961462020874), (u'job', 0.8980690240859985), (u'trouble', 0.8751360774040222), (u'everything', 0.873866856098175)]
    

    建议去gensim看看

    【讨论】: