MySQL と Ruby on Rails を使用して簡単な音楽レコメンデーション機能を開発する方法、具体的なコード例が必要です
音楽市場の継続的な拡大と増加に伴い、音楽の種類が多いため、ユーザーが自分の好みに合った音楽を見つけるのは困難です。したがって、音楽レコメンド機能の開発が非常に必要です。この記事では、MySQL データベースと Ruby on Rails フレームワークをベースに、簡単な音楽レコメンド機能の開発方法と具体的なコード例を紹介します。
ステップ 1: データベースの作成
まず、音楽データとユーザー設定を保存するための MySQL データベースを作成する必要があります。以下は、データベース テーブルの作成に使用される Rails 移行ファイルの例です:
class CreateSongs < ActiveRecord::Migration[6.0] def change create_table :songs do |t| t.string :title t.string :artist t.string :genre end end end class CreateUserPreferences < ActiveRecord::Migration[6.0] def change create_table :user_preferences do |t| t.references :user t.references :song t.integer :rating end end end
上記のコードは 2 つのテーブルを作成します: songs
は、title
などの音楽情報を保存するために使用されます。 (曲名)、artist
(アーティスト)、および genre
(音楽タイプ); user_preferences
は、各曲に対するユーザーの評価を保存するために使用されます。
ステップ 2: モデルの関係とデータの入力
Rails では、モデル間の関係を定義する必要があります。この例のモデル コードは次のとおりです。
class Song < ApplicationRecord has_many :user_preferences has_many :users, through: :user_preferences end class User < ApplicationRecord has_many :user_preferences has_many :songs, through: :user_preferences end class UserPreference < ApplicationRecord belongs_to :user belongs_to :song end
上記のコードは、Song
、User
、および UserPreference
の間の関係を定義します。 Song
と User
の間には多対多の関係があり、接続は UserPreference
を通じて確立されます。
次に、サンプル データをデータベースに入力する必要があります。例の入力コードを次に示します。
Song.create(title: 'Song 1', artist: 'Artist 1', genre: 'Pop') Song.create(title: 'Song 2', artist: 'Artist 2', genre: 'Rock') Song.create(title: 'Song 3', artist: 'Artist 3', genre: 'Jazz') User.create(name: 'User 1') User.create(name: 'User 2') User.create(name: 'User 3') UserPreference.create(user_id: 1, song_id: 1, rating: 4) UserPreference.create(user_id: 1, song_id: 2, rating: 5) UserPreference.create(user_id: 2, song_id: 2, rating: 3) UserPreference.create(user_id: 3, song_id: 3, rating: 2)
上記のコードは、3 つの曲、3 人のユーザー、および 4 つのユーザー設定の例 (曲のユーザー評価) を作成します。
ステップ 3: 音楽推奨アルゴリズムを実装する
次に、単純な音楽推奨アルゴリズムを実装する必要があります。以下は、推奨アルゴリズムの例です。
class RecommendationController < ApplicationController def index user = User.find(params[:user_id]) rated_songs = user.songs similar_users = User.where.not(id: user.id).joins(:songs) .where('songs.id IN (?)', rated_songs.pluck(:id)).distinct recommended_songs = similar_users.joins(:songs).where.not('songs.id IN (?)', rated_songs.pluck(:id)) .group(:song_id).average(:rating) @recommendations = Song.where(id: recommended_songs.keys) .order(recommended_songs.values.map(&:to_f).reverse) end end
上記のコードは、RecommendationsController
コントローラーを定義します。ここで、index
メソッドは、ユーザーの好み (つまり、ユーザーの評価) に基づいています。曲) 類似ユーザーと推奨曲を計算し、結果を @recommendations
変数に保存します。
ステップ 4: ビューの作成
最後のステップは、おすすめの曲を表示するビューを作成することです。以下は簡単なサンプル ビュー コードです:
<h1>Recommendations for User <%= @user.name %></h1> <% @recommendations.each do |song| %> <p><%= song.title %></p> <p>Artist: <%= song.artist %></p> <p>Genre: <%= song.genre %></p> <% end %>
上記のコードは、ユーザーに推奨される曲のリストを表示します。
概要:
この記事では、MySQL と Ruby on Rails を使用して簡単な音楽レコメンド機能を開発する手順を紹介します。データベースの作成とデータの入力から、モデルの関係の定義と推奨アルゴリズムの実装、結果を表示するビューの作成まで。この簡単な例が、読者が MySQL と Ruby on Rails を使用して音楽レコメンデーション機能を開発する方法を理解するのに役立つことを願っています。
以上がMySQLとRuby on Railsを使った簡単な音楽レコメンド機能の開発方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。