模糊匹配句到诗节

时间:2018-04-14 08:58:46

标签: machine-learning nlp sentence-similarity

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

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

我也尝试过动态编程,但成功率较低。由于歌词和节的结构差异很大,有时结果会完全移位或搞砸,特别是如果有重复的合唱。

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

1 个答案:

答案 0 :(得分:0)

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

因此关注的矢量将非常相似,这些矢量会保留其他一些很酷的属性,例如,如果你减去或添加它们,你可以得到一个拥有一些的词变电站的意义或添加诱导

一旦你得到单词或文档的向量,你可以用各种方法检查向量之间的相似性,常用的是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