我在Delphi中创建了一个类似Winamp的音乐播放器。当然不是那么复杂。只是一个简单的。
但现在我想添加一个更复杂的功能:图书馆中的歌曲应根据用户的收听习惯自动评分。
这意味着:应用程序应“理解”用户是否喜欢某首歌。不仅是他/她喜欢它还是喜欢它多少。
到目前为止我的方法(可以使用的数据):
你能帮我解决这个问题吗?我想提出一些想法。我不需要在Delphi中实现。
答案 0 :(得分:10)
我会在中央数据库中跟踪所有用户的收听习惯,因此您可以根据其他人喜欢的方式提出建议(“喜欢这首歌的人,也喜欢这些其他歌曲”)
要考虑的其他一些指标:
该歌曲立即重播的次数比例(例如,这首歌在播放时间的12%时立即重播)
他们在比赛期间打开了“重复这首歌”按钮吗?
每小时,每天,每周,每月播放次数
跳过这首歌的比例。 (例如,这首歌被播放,但99%的时间立即跳过)
听过的歌曲比例(用户平均听了这首歌的50%,而另一首歌则听了100%)
也:
聆听用户的麦克风。他们一起唱歌吗? :d
他们播放这首歌的音量是多少?他们把它搞砸了吗?输入“向朋友推荐这首歌”按钮(将歌曲标题发送给朋友或其他东西)。他们推荐的歌曲,他们可能会喜欢。
您可能希望对音频流进行一些特征提取,并找到类似的歌曲。这很难,但你可以在这里阅读更多相关内容:
“用于分类音频数据的自动特征提取” http://www.springerlink.com/content/g71368g57x013j48/
“基于时间统计的详尽功能生成的音乐集合的可理解模型” http://portal.acm.org/citation.cfm?id=1150523
“在分布式系统中协作使用音乐收藏组织” http://www.idea-group.com/Bookstore/Chapter.aspx?TitleId=24432
答案 1 :(得分:4)
衡量一首歌的平均播放时间(分钟)。
我认为这不是一个好的指标,因为长歌会在短歌中获得不公平的优势。您应该使用百分比代替:
平均。播放时间/总歌曲长度
答案 2 :(得分:3)
请随着时间的推移降低可能性。如果你在过去的n天经常听到它们,你似乎更喜欢歌曲,而较老的歌曲应该只是随便提一下,因为你喜欢它们但是听得太多了,可能。
最少但不是最后你可以添加节拍检测(也许是频率频谱)来查找类似的歌曲,这可以为您提供比通过听到歌曲输入的用户更多的数据。
我还想在这里对具有相同MP3-Id标签的歌曲进行分组,因为这也提示了用户当前所处的位置。如果你想提供一些自动播放功能,它也会有所帮助。听到一首伟大的果阿歌后,即使我喜欢这两个世界的歌曲,转换到Punk也很奇怪。
答案 3 :(得分:1)
关于您的其他指标:不应该将指标#4和指标#5结合起来吗?如果立即跳过一首歌,那么听到的比例只有1%左右,对吗? - marco92w 5月21日15:08
这些应该是分开的。跳过应导致跳过的歌曲的评级为负。但是,如果用户在歌曲开始时关闭应用程序,则不应将其视为负评级,即使只播放了较低百分比的歌曲。
答案 4 :(得分:0)
(ListenPartCount * (ListenFullCount ^ 2)) + (AverageTotalListenTime * ListenPartTimeAverage)
--------------------------------------------------------------------------------------------
((AverageTotalListenTime - ListenPartTimeAverage) + 0.0001f)
这个公式会产生一个很好的结果,因为用户可能只喜欢歌曲的一部分,这应该在乐谱中看到,如果用户喜欢完整的歌曲,那么重量应该加倍。
你可以用各种方式调整这个folmula,f.ex包括听力的用户树,f.ex如果用户听一首歌,之后他会听另一首歌几次,等等。
答案 5 :(得分:0)
使用歌曲添加到库中的日期作为起点。
衡量歌曲/流派/艺术家/专辑的播放频率(完全,部分或跳过) - 这也可以衡量歌曲/流派/艺术家/专辑的播放频率。
基于这些参数进行加权,当一首歌,它的流派,艺术家或专辑没有经常播放时,它应该排名很差。当每天播放一位艺术家时,这位艺术家的歌曲应该得到提升,但是说艺术家的一首歌从未播放过,这首歌应该仍然排名很低
答案 6 :(得分:0)
只需衡量一首歌的频率 每次都玩。
通常情况下,我会播放一首特定的歌曲,然后让我的iPod一直播放到专辑的结尾。因此,这种方法会给专辑中的歌曲带来不公平的优势。如果您的音乐播放器以相同的方式工作,您可能需要补偿的东西。
答案 7 :(得分:0)
关于此问题的 人工智能 设备呢?
嘛!让我说从头开始可能真的很有趣 一个拥有自己“智慧”的客户网络,最后收集 客户的结果是一个中心的“情报”。
每个客户都可以根据用户的喜好制作自己的 “用户评分” (正如已经说过的那样:平均听力,听力计数等......)。
比中央“智能”收藏家可以将个人评级合并为 “全球评级” 显示您需要的交易,建议和所有高级别评级。
无论如何要训练这样一个 “大脑” 意味着你必须首先以分析的方式解决问题,但真的可能有趣的是建立这样的云相互关联的小脑,以产生更高水平的“智力”。
像往常一样,由于我不了解您的技能,请查看 神经网络 , 遗传算法 , 模糊逻辑 , 模式识别 以及类似的问题,以便更深入地理解。
答案 8 :(得分:0)
您可以使用一些简单的功能:
listened_time_of_song/(length_of_song + 15s)
或
listened_time_of_song/(length_of_song * 1.1)
这意味着如果歌曲在15秒内被停止,那么它将被评为负分,或者第二种情况甚至更好(如果用户听完整首歌,则歌曲的长度无论最后的音符都是如此)
如果你对这个主题很常见,另一种方法可能是使用神经网络。