Maison > Article > base de données > Comment développer une fonction simple de recommandation musicale en utilisant MySQL et Ruby on Rails
Comment utiliser MySQL et Ruby on Rails pour développer une fonction simple de recommandation musicale, des exemples de code spécifiques sont nécessaires
Avec l'expansion continue du marché de la musique et la variété croissante de la musique, il est difficile pour les utilisateurs de trouver de la musique qui correspond à leurs goûts. Il est donc indispensable de développer une fonction de recommandation musicale. Cet article utilisera la base de données MySQL et le framework Ruby on Rails comme base pour présenter comment développer une fonction simple de recommandation musicale et fournir des exemples de code spécifiques.
Première étape : créer une base de données
Tout d'abord, nous devons créer une base de données MySQL pour stocker les données musicales et les préférences de l'utilisateur. Voici un exemple de fichier de migration Rails pour créer des tables de base de données :
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
Le code ci-dessus crée deux tables : songs
est utilisé pour stocker des informations musicales, y compris title
( Titre de la chanson ), artist
(artiste) et genre
(genre musical) ; user_preferences
est utilisé pour stocker la note de l'utilisateur pour chaque chanson. songs
用于存储音乐信息,包括title
(歌曲标题)、artist
(艺术家)和genre
(音乐类型);user_preferences
用于存储用户对每首歌曲的评分。
第二步:模型关系和数据填充
在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个用户偏好示例(用户对歌曲的评分)。
第三步:实现音乐推荐算法
接下来,我们需要实现一个简单的音乐推荐算法。以下是一个示例的推荐算法:
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
Dans Rails, nous devons définir les relations entre les modèles. Voici le code du modèle pour l'exemple :
<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 %>Le code ci-dessus définit la relation entre
Song
, User
et UserPreference
. Il existe une relation plusieurs-à-plusieurs entre Chanson
et Utilisateur
, et la relation est établie via UserPreference
. Ensuite, nous devons remplir quelques exemples de données dans la base de données. Voici le code de remplissage pour un exemple : rrreee
Le code ci-dessus crée 3 chansons, 3 utilisateurs et 4 exemples de préférences utilisateur (évaluations des chansons par les utilisateurs).
RecommendationsController
, où la méthode index
calcule les similitudes en fonction des préférences de l'utilisateur (c'est-à-dire les notes des chansons). ) l'utilisateur et les chansons recommandées, et stocke les résultats dans la variable @recommendations
. 🎜🎜Étape 4 : Créer une vue🎜La dernière étape consiste à créer une vue pour afficher les chansons recommandées. Voici un exemple simple de code d'affichage : 🎜rrreee🎜Le code ci-dessus affiche une liste de chansons recommandées à l'utilisateur. 🎜🎜Résumé : 🎜Cet article présente les étapes pour développer une fonction simple de recommandation musicale à l'aide de MySQL et Ruby on Rails. De la création de bases de données et du remplissage des données, à la définition des relations de modèle et à la mise en œuvre d'algorithmes de recommandation, en passant par la création de vues pour afficher les résultats. Espérons que cet exemple simple aidera les lecteurs à comprendre comment développer une fonctionnalité de recommandation musicale à l'aide de MySQL et Ruby on Rails. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!