8

Delphi で Winamp のような音楽プレーヤーを作成しました。もちろん、それほど複雑ではありません。シンプルなものです。

しかしここで、より複雑な機能を追加したいと思います。ライブラリ内の曲は、ユーザーの視聴習慣に基づいて自動的に評価される必要があります。

つまり、アプリケーションは、ユーザーが曲を気に入るかどうかを「理解」する必要があります。そして、彼/彼女がそれを好きかどうかだけでなく、どれだけ好きか。

これまでの私のアプローチ(使用できるデータ):

  • 1 曲あたりの再生回数を単純に測定します。最近の曲が不利にならないように、曲がライブラリに追加された時点からカウントを開始します。
  • 曲の平均再生時間 (分) を測定します。
  • 曲を開始してすぐに別の曲に変更すると、ユーザーがその曲を気に入らなかったように見えるため、ランキングに悪影響を与えるはずです。
  • ...

この問題について教えてください。アイデアが欲しいだけです。Delphi での実装は必要ありません。

4

9 に答える 9

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

于 2010-05-19T19:58:06.860 に答える
4

曲の平均再生時間 (分) を測定します。

長い曲は短い曲よりも不当に有利になるため、これは良い指標ではないと思います。代わりにパーセンテージを使用する必要があります。

平均 再生時間/全曲の長さ

于 2010-05-19T18:39:06.247 に答える
3

時間の経過とともに可能性を低下させてください。過去 n 日間に頻繁に聞いた曲の方が好きだと思われますが、古い曲は好きだけどよく聞きすぎたので、さりげなく言及するだけに留めるべきです。

最後になりましたが、ビート検出 (およびおそらく周波数スペクトル) を追加して類似の曲を見つけることができます。これにより、ユーザーが曲を聞いて入力したよりも多くのデータが提供される可能性があります。

また、ここでは同じ MP3-Id タグを持つ曲をグループ化します。これは、ユーザーが現在何をしているかのヒントにもなるからです。また、自動再生機能を提供したい場合も役立ちます。ゴアの素晴らしい曲を聴いた後、両方の世界の曲が好きでも、パンクに切り替えるのは奇妙です。

于 2010-05-30T19:53:37.607 に答える
1

追加の指標について: 指標 #4 と指標 #5 を組み合わせるべきではありませんか? すぐに曲を飛ばすと、聞く割合は1%くらいですよね?– marco92w 5 月 21 日 15:08

これらは別々にする必要があります。スキップすると、スキップされた曲の評価が低くなります。ただし、曲の開始時にユーザーがアプリケーションを閉じた場合、曲の再生率が低い場合でも、それを否定的な評価と見なすべきではありません。

于 2010-05-27T17:48:50.303 に答える
0
(ListenPartCount * (ListenFullCount ^ 2)) + (AverageTotalListenTime * ListenPartTimeAverage)
--------------------------------------------------------------------------------------------
               ((AverageTotalListenTime - ListenPartTimeAverage) + 0.0001f)

この式は素晴らしい結果を生み出します。ユーザーは曲の一部だけを本当に好きになる可能性があるため、これはスコアに表示されます。また、ユーザーが曲全体を好きな場合は、重みを2倍にする必要があります。

この形式はさまざまな方法で調整できます。f.exにはリスニングのユーザーツリーが含まれ、ユーザーが1つの曲を聴いた後、別の曲を数回聴いた場合のf.exなどが含まれます。

于 2010-05-26T09:34:14.713 に答える
0

1回の曲の再生頻度を測定するだけです。

多くの場合、私は特定の曲を再生し、アルバムの最後までiPodを実行します。したがって、この方法は、アルバムの後半の曲に不当な利点をもたらします。あなたの音楽プレーヤーが同じように機能する場合、あなたが補償したいと思うかもしれない何か。

于 2010-05-28T03:43:28.670 に答える
0

開始点として、曲がライブラリに追加された日付を使用します。

曲/ジャンル/アーティスト/アルバムが再生される頻度 (完全に、または一部またはスキップ) を測定します。これにより、曲/ジャンル/アーティスト/アルバムが再生されない頻度も測定できます。

これらのパラメーターに基づいて重み付けを考え出すと、曲、ジャンル、アーティスト、またはアルバムが頻繁に再生されていない場合、ランク付けが低くなるはずです。アーティストが毎日再生される場合、このアーティストの曲はブーストされるはずですが、そのアーティストの曲の 1 つが再生されていないとしても、この曲は依然としてかなり低いランクにあるはずです。

于 2010-05-26T10:01:55.550 に答える
0

この問題に関する人工知能アプライアンスはどうですか?

良い!独自の「インテリジェンス」を備えたクライアントのネットワークを使用し、最終的に中央の「インテリジェンス」でクライアントの結果を収集するのは、ゼロから始めるのは本当に面白いかもしれません。

各クライアントは、ユーザーの習慣に基づいて独自の「ユーザー評価」を作成できます (既に述べたように、平均視聴回数、視聴回数など...)。

中央の「インテリジェントな」コレクターよりも、個々の評価を「グローバルな評価」に マージして、トランジション、提案、および必要なすべての高レベルの評価を表示できます。

とにかく、そのような「脳」を訓練するということは、最初に分析的な方法で問題を解決しなければならないことを意味しますが、相互接続された小さな脳の雲を構築して、より高いレベルの「知性」を生み出すことは本当に面白いかもしれません.

いつものように、私はあなたのスキルを知りませんが、ニューラル ネットワーク遺伝的アルゴリズムファジー ロジックパターン認識、および同様の問題を調べて、理解を深めてください。

于 2010-05-28T09:05:30.190 に答える
0

次のような単純な関数を使用できます。

listened_time_of_song/(length_of_song + 15s) 

また

 listened_time_of_song/(length_of_song * 1.1) 

つまり、曲が 15 秒で停止された場合、マイナス スコアで評価されるか、または 2 番目のケースの方が優れている可能性があります (ユーザーが曲全体を聞いた場合、曲の長さは最終的なメモに関係ありません)。

このテーマに精通している場合は、別の方法としてニューラル ネットワークを使用することもできます。

于 2010-05-28T09:29:45.307 に答える