-1

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

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

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

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

4

1 回答 1

0

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

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

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

此方法与 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

于 2018-04-14T09:13:59.690 回答