对于上下文,我要做的是创建一个小的webapp,您可以在其中粘贴Reddit讨论线程,并将线程中引用的歌曲名称转换为Spotify播放列表。
我正试图找出一种从某种自然语言中提取艺术家/歌曲名称的方法,格式为“artist - song name
”或“songname by artist
”。
所以,例如,假设我有以下字符串:
The Funeral by the Band of Horses is my favorite song.
you should check out the Acoustic version of Foo Fighters - Everlong.
Eminem- Stan. Not a fan of rap but I like this song.
结果输出为:
["The Funeral", "the Band of Horses"],
["Foo Fighters", "Everlong"],
["Eminem", "Stan"]
由于没有办法知道什么是艺术家与没有API调用的歌曲是什么,它们不需要以任何特定的方式存储,我只需要将艺术家和歌曲名称分成不同的数组部分
这是否可以在没有任何分隔符的情况下指示歌曲名称的结尾?
这是我到目前为止所做的......(半伪代码):
delimiters = [" - ", "-", " by ",];
strings = [
"The Funeral by the Band of Horses is my favorite song.",
"you should check out the Acoustic version of Foo Fighters - Everlong.",
"Eminem- Stan. Not a fan of rap but I like this song."
];
// loop over each string
for (var i=0; i<strings.length; i++ ) {
// loop through each delimiter possibility
for (var d=0; d<delimiters.length; d++) {
if ( strings[i].indexOf(delimiters[d]) > -1 ) {
// we have a delimiter match
// now figure out how to get the stuff on either side...
}
}
}
答案 0 :(得分:0)
有一个有趣的文本解析库:Knwl.js。 Knwl.js似乎没有用于解析艺术家或歌曲的插件,但它似乎应该易于实现。请参阅:plugin development
答案 1 :(得分:0)
那么,如果你正在使用自然语言,那么你如何区分乐队/艺术家名称与其他提及相同的词语。
可以有数以万计的方法来建立一个句子,你必须抓住所有可能的。
另一种方法是对数据库以字面和多字的方式检查字符串,数据库存储艺术家和乐队的名字。
否则你肯定会错过文中的一些名字。