update NSMusicS-GO The first step of recommendation system design: data collection strategy

This commit is contained in:
翔 程 2025-04-23 20:07:22 +08:00
parent 3cc8a2580f
commit 213b8261cb
7 changed files with 539 additions and 8 deletions

View File

@ -0,0 +1,47 @@
# 1.1.数据收集-收听次数权重计算
## 1.1 单曲推荐an_m_n、an_m_a_t
### 单曲已收听次数 an_m_nannotation_mediafile_num
- **定义**:当前用户对单曲的收听次数。
- **公式**:设 \( U \) 为当前用户,\( M \) 为单曲集合,\( an\_m\_n \) 表示用户 \( U \) 对单曲 \( m \) 的收听次数。
\[
an\_m\_n = \sum_{m \in M} \text{收听次数}(U, m)
\]
### 单曲已收听总时长 an_m_a_tannotation_mediafile_all_time
- **定义**:当前用户对单曲的收听总时长。
- **公式**:设 \( U \) 为当前用户,\( M \) 为单曲集合,\( T \) 为收听时长,\( an\_m\_a\_t \) 表示用户 \( U \) 对单曲 \( m \) 的收听总时长。
\[
an\_m\_a\_t = \sum_{m \in M} \text{收听时长}(U, m) \times T
\]
## 1.2 专辑推荐an_am_a_m_n、an_am_a_m_a_t
### 专辑内已经收听过的所有歌曲收听总次数 an_am_a_m_nannotation_album_all_mediafile_num
- **定义**:当前用户对专辑内所有歌曲的收听总次数。
- **公式**:设 \( U \) 为当前用户,\( A \) 为专辑集合,\( M \) 为专辑内的单曲集合,\( an\_am\_a\_m\_n \) 表示用户 \( U \) 对专辑 \( a \) 内所有歌曲的收听总次数。
\[
an\_am\_a\_m\_n = \sum_{a \in A} \sum_{m \in M} \text{收听次数}(U, m)
\]
### 专辑内已经收听过的所有歌曲收听总时长 an_am_a_m_a_tannotation_album_all_mediafile_all_time
- **定义**:当前用户对专辑内所有歌曲的收听总时长。
- **公式**:设 \( U \) 为当前用户,\( A \) 为专辑集合,\( M \) 为专辑内的单曲集合,\( T \) 为收听时长,\( an\_am\_a\_m\_a\_t \) 表示用户 \( U \) 对专辑 \( a \) 内所有歌曲的收听总时长。
\[
an\_am\_a\_m\_a\_t = \sum_{a \in A} \sum_{m \in M} \text{收听时长}(U, m) \times T
\]
## 1.3 艺术家推荐
艺术家推荐是单曲推荐和专辑推荐的混合推荐,结合了当前用户对单曲和专辑的收听行为。
### 混合推荐公式
- **定义**:综合单曲推荐和专辑推荐的结果,生成艺术家推荐。
- **公式**:设 \( \alpha \) 和 \( \beta \) 为权重系数,分别表示单曲推荐和专辑推荐的权重,\( R \) 为推荐结果。
\[
R = \alpha \times an\_m\_n + \beta \times an\_am\_a\_m\_n + \alpha \times an\_m\_a\_t + \beta \times an\_am\_a\_m\_a\_t
\]
其中,\( \alpha + \beta = 1 \)。
通过以上数学建模,可以量化当前用户对单曲、专辑和艺术家的喜好程度,为个性化推荐提供数据支持。

View File

@ -0,0 +1,74 @@
# 1.2.数据收集-收藏与评分相似度计算
## 2.1 单曲推荐建模
### 基于收听记录的单曲推荐
- **定义**:基于当前用户对单曲的收听记录,推荐相似或相关的单曲。
- **公式**:设 \( U \) 为当前用户,\( M \) 为单曲集合,\( an\_m\_n \) 表示用户 \( U \) 对单曲 \( m \) 的收听次数,\( an\_m\_a\_t \) 表示用户 \( U \) 对单曲 \( m \) 的收听总时长,\( rating \) 为用户对单曲的评分。单曲推荐分数 \( S \) 可表示为:
\[
S(m) = \alpha \times \frac{an\_m\_n}{\max\_play\_count} + \beta \times \frac{an\_m\_a\_t}{\max\_play\_time} + \gamma \times \frac{rating}{\max\_rating}
\]
其中,\( \alpha + \beta + \gamma = 1 \)\( \max\_play\_count \) 为最大收听次数,\( \max\_play\_time \) 为最大收听时长,\( \max\_rating \) 为最大评分。
### 基于相似性的单曲推荐
- **定义**:基于单曲之间的相似性,推荐与用户收听过的单曲相似的其他单曲。
- **公式**:设 \( sim(m_i, m_j) \) 表示单曲 \( m_i \) 和单曲 \( m_j \) 之间的相似度,基于内容属性(如艺术家、专辑、流派等)。相似度可以通过余弦相似度或其他相似性度量方法计算。单曲推荐分数 \( S \) 可表示为:
\[
S(m_j) = \sum_{m_i \in M} \text{sim}(m_i, m_j) \times \frac{an\_m\_n(i)}{\max\_play\_count}
\]
其中,\( an\_m\_n(i) \) 为用户对单曲 \( m_i \) 的收听次数。
## 2.2 专辑推荐建模
### 基于收听记录的专辑推荐
- **定义**:基于当前用户对专辑内单曲的收听记录,推荐相关的专辑。
- **公式**:设 \( U \) 为当前用户,\( A \) 为专辑集合,\( M \) 为专辑内的单曲集合,\( an\_am\_a\_m\_n \) 表示用户 \( U \) 对专辑 \( a \) 内所有单曲的收听总次数,\( an\_am\_a\_m\_a\_t \) 表示用户 \( U \) 对专辑 \( a \) 内所有单曲的收听总时长,\( rating \) 为用户对专辑的评分。专辑推荐分数 \( S \) 可表示为:
\[
S(a) = \alpha \times \frac{an\_am\_a\_m\_n}{\max\_album\_play\_count} + \beta \times \frac{an\_am\_a\_m\_a\_t}{\max\_album\_play\_time} + \gamma \times \frac{rating}{\max\_rating}
\]
其中,\( \alpha + \beta + \gamma = 1 \)\( \max\_album\_play\_count \) 为最大专辑收听次数,\( \max\_album\_play\_time \) 为最大专辑收听时长,\( \max\_rating \) 为最大评分。
### 基于相似性的专辑推荐
- **定义**:基于专辑之间的相似性,推荐与用户收听过的专辑相似的其他专辑。
- **公式**:设 \( sim(a_i, a_j) \) 表示专辑 \( a_i \) 和专辑 \( a_j \) 之间的相似度,基于专辑的属性(如艺术家、流派、发行年份等)。相似度可以通过余弦相似度或其他相似性度量方法计算。专辑推荐分数 \( S \) 可表示为:
\[
S(a_j) = \sum_{a_i \in A} \text{sim}(a_i, a_j) \times \frac{an\_am\_a\_m\_n(i)}{\max\_album\_play\_count}
\]
其中,\( an\_am\_a\_m\_n(i) \) 为用户对专辑 \( a_i \) 内所有单曲的收听总次数。
## 2.3 艺术家推荐建模
### 基于收听记录的艺术家推荐
- **定义**:基于当前用户对艺术家的单曲和专辑的收听记录,推荐相关的艺术家。
- **公式**:设 \( U \) 为当前用户,\( Ar \) 为艺术家集合,\( M \) 为单曲集合,\( A \) 为专辑集合,\( an\_m\_n \) 表示用户 \( U \) 对艺术家 \( ar \) 的单曲的收听总次数,\( an\_am\_a\_m\_n \) 表示用户 \( U \) 对艺术家 \( ar \) 的专辑的收听总次数,\( rating \) 为用户对艺术家的评分。艺术家推荐分数 \( S \) 可表示为:
\[
S(ar) = \alpha \times \frac{an\_m\_n}{\max\_artist\_play\_count} + \beta \times \frac{an\_am\_a\_m\_n}{\max\_artist\_album\_play\_count} + \gamma \times \frac{rating}{\max\_rating}
\]
其中,\( \alpha + \beta + \gamma = 1 \)\( \max\_artist\_play\_count \) 为最大艺术家单曲收听次数,\( \max\_artist\_album\_play\_count \) 为最大艺术家专辑收听次数,\( \max\_rating \) 为最大评分。
### 基于相似性的艺术家推荐
- **定义**:基于艺术家之间的相似性,推荐与用户收听过的艺术家相似的其他艺术家。
- **公式**:设 \( sim(ar_i, ar_j) \) 表示艺术家 \( ar_i \) 和艺术家 \( ar_j \) 之间的相似度,基于艺术家的属性(如音乐风格、活跃年代等)。相似度可以通过余弦相似度或其他相似性度量方法计算。艺术家推荐分数 \( S \) 可表示为:
\[
S(ar_j) = \sum_{ar_i \in Ar} \text{sim}(ar_i, ar_j) \times \left( \frac{an\_m\_n(i)}{\max\_artist\_play\_count} + \frac{an\_am\_a\_m\_n(i)}{\max\_artist\_album\_play\_count} \right)
\]
其中,\( an\_m\_n(i) \) 为用户对艺术家 \( ar_i \) 的单曲的收听总次数,\( an\_am\_a\_m\_n(i) \) 为用户对艺术家 \( ar_i \) 的专辑的收听总次数。
## 2.4 综合推荐建模
### 综合单曲、专辑和艺术家的推荐
- **定义**:综合单曲、专辑和艺术家的推荐结果,生成最终的个性化推荐列表。
- **公式**:设 \( \gamma \)、\( \delta \) 和 \( \epsilon \) 为权重系数,分别表示单曲推荐、专辑推荐和艺术家推荐的权重,\( R \) 为最终推荐结果。
\[
R = \gamma \times S\_{\text{单曲}} + \delta \times S\_{\text{专辑}} + \epsilon \times S\_{\text{艺术家}}
\]
其中,\( \gamma + \delta + \epsilon = 1 \)。
通过以上数学建模,可以量化当前用户对单曲、专辑和艺术家的喜好程度,为个性化推荐提供数据支持。

View File

@ -0,0 +1,146 @@
# 1.3.数据收集-tag内容相似度计算
## 3.1 单曲推荐建模
### 基于相似年份的单曲推荐
- **定义**:根据单曲的发行年份,推荐与用户收听过的单曲年份相似的其他单曲。
- **公式**:设 \( M \) 为单曲集合,\( year(m_i) \) 表示单曲 \( m_i \) 的发行年份,\( year(m_j) \) 表示单曲 \( m_j \) 的发行年份。相似年份推荐分数 \( S \) 可表示为:
\[
S_{\text{年份}}(m_j) = \sum_{m_i \in M} e^{-\alpha |year(m_i) - year(m_j)|} \times \frac{an\_m\_n(i)}{\max\_play\_count}
\]
其中,\( an\_m\_n(i) \) 为用户对单曲 \( m_i \) 的收听次数,\( \alpha \) 为控制年份差异影响的参数。
### 基于相似国家地区的单曲推荐
- **定义**:根据单曲所属艺术家的国家地区,推荐与用户收听过的单曲来自相似国家地区的其他单曲。
- **公式**:设 \( M \) 为单曲集合,\( country(ar_i) \) 表示单曲 \( m_i \) 所属艺术家的国家地区,\( country(ar_j) \) 表示单曲 \( m_j \) 所属艺术家的国家地区。相似国家地区推荐分数 \( S \) 可表示为:
\[
S_{\text{地区}}(m_j) = \sum_{m_i \in M} \text{sim}_{\text{国家}}(country(ar_i), country(ar_j)) \times \frac{an\_m\_n(i)}{\max\_play\_count}
\]
其中,\( \text{sim}_{\text{国家}} \) 为国家地区之间的相似度,可以通过地理或文化相近性预先定义。
### 基于相同流派的单曲推荐
- **定义**:根据单曲的音乐流派,推荐与用户收听过的单曲流派相同的其他单曲。
- **公式**:设 \( M \) 为单曲集合,\( genre(m_i) \) 表示单曲 \( m_i \) 的流派,\( genre(m_j) \) 表示单曲 \( m_j \) 的流派。相同流派推荐分数 \( S \) 可表示为:
\[
S_{\text{流派}}(m_j) = \sum_{m_i \in M} \delta_{genre(m_i), genre(m_j)} \times \frac{an\_m\_n(i)}{\max\_play\_count}
\]
其中,\( \delta \) 为克罗内克δ函数,当 \( genre(m_i) = genre(m_j) \) 时为1否则为0。
### 基于歌词相似性的单曲推荐
- **定义**:根据单曲歌词的内容相似性,推荐与用户收听过的单曲歌词相似的其他单曲。
- **公式**:设 \( M \) 为单曲集合,\( lyrics(m_i) \) 表示单曲 \( m_i \) 的歌词,\( lyrics(m_j) \) 表示单曲 \( m_j \) 的歌词。歌词相似性可以通过TF-IDF或词嵌入模型计算。歌词相似性推荐分数 \( S \) 可表示为:
\[
S_{\text{歌词}}(m_j) = \sum_{m_i \in M} \text{sim}_{\text{歌词}}(lyrics(m_i), lyrics(m_j)) \times \frac{an\_m\_n(i)}{\max\_play\_count}
\]
其中,\( \text{sim}_{\text{歌词}} \) 为歌词相似度。
### 基于评论描述相似性的单曲推荐
- **定义**:根据单曲的用户评论描述相似性,推荐与用户收听过的单曲评论描述相似的其他单曲。
- **公式**:设 \( M \) 为单曲集合,\( comment(m_i) \) 表示单曲 \( m_i \) 的用户评论,\( comment(m_j) \) 表示单曲 \( m_j \) 的用户评论。评论描述相似性可以通过文本相似性方法计算。评论相似性推荐分数 \( S \) 可表示为:
\[
S_{\text{评论}}(m_j) = \sum_{m_i \in M} \text{sim}_{\text{评论}}(comment(m_i), comment(m_j)) \times \frac{an\_m\_n(i)}{\max\_play\_count}
\]
其中,\( \text{sim}_{\text{评论}} \) 为评论描述相似度。
## 3.2 专辑推荐建模
### 基于相似年份的专辑推荐
- **定义**:根据专辑的发行年份,推荐与用户收听过的专辑年份相似的其他专辑。
- **公式**:设 \( A \) 为专辑集合,\( year(a_i) \) 表示专辑 \( a_i \) 的发行年份,\( year(a_j) \) 表示专辑 \( a_j \) 的发行年份。相似年份推荐分数 \( S \) 可表示为:
\[
S_{\text{年份}}(a_j) = \sum_{a_i \in A} e^{-\alpha |year(a_i) - year(a_j)|} \times \frac{an\_am\_a\_m\_n(i)}{\max\_album\_play\_count}
\]
其中,\( an\_am\_a\_m\_n(i) \) 为用户对专辑 \( a_i \) 内所有单曲的收听总次数,\( \alpha \) 为控制年份差异影响的参数。
### 基于相似国家地区的专辑推荐
- **定义**:根据专辑所属艺术家的国家地区,推荐与用户收听过的专辑来自相似国家地区的其他专辑。
- **公式**:设 \( A \) 为专辑集合,\( country(ar_i) \) 表示专辑 \( a_i \) 所属艺术家的国家地区,\( country(ar_j) \) 表示专辑 \( a_j \) 所属艺术家的国家地区。相似国家地区推荐分数 \( S \) 可表示为:
\[
S_{\text{地区}}(a_j) = \sum_{a_i \in A} \text{sim}_{\text{国家}}(country(ar_i), country(ar_j)) \times \frac{an\_am\_a\_m\_n(i)}{\max\_album\_play\_count}
\]
其中,\( \text{sim}_{\text{国家}} \) 为国家地区之间的相似度。
### 基于相同流派的专辑推荐
- **定义**:根据专辑的音乐流派,推荐与用户收听过的专辑流派相同的其他专辑。
- **公式**:设 \( A \) 为专辑集合,\( genre(a_i) \) 表示专辑 \( a_i \) 的流派,\( genre(a_j) \) 表示专辑 \( a_j \) 的流派。相同流派推荐分数 \( S \) 可表示为:
\[
S_{\text{流派}}(a_j) = \sum_{a_i \in A} \delta_{genre(a_i), genre(a_j)} \times \frac{an\_am\_a\_m\_n(i)}{\max\_album\_play\_count}
\]
其中,\( \delta \) 为克罗内克δ函数。
### 基于专辑描述相似性的专辑推荐
- **定义**:根据专辑的描述(如评论、标签等)相似性,推荐与用户收听过的专辑描述相似的其他专辑。
- **公式**:设 \( A \) 为专辑集合,\( comment(a_i) \) 表示专辑 \( a_i \) 的描述,\( comment(a_j) \) 表示专辑 \( a_j \) 的描述。描述相似性可以通过文本相似性方法计算。描述相似性推荐分数 \( S \) 可表示为:
\[
S_{\text{描述}}(a_j) = \sum_{a_i \in A} \text{sim}_{\text{描述}}(comment(a_i), comment(a_j)) \times \frac{an\_am\_a\_m\_n(i)}{\max\_album\_play\_count}
\]
其中,\( \text{sim}_{\text{描述}} \) 为描述相似度。
## 3.3 艺术家推荐建模
### 基于相似国家地区的艺术家推荐
- **定义**:根据艺术家的国家地区,推荐与用户收听过的艺术家来自相似国家地区的其他艺术家。
- **公式**:设 \( Ar \) 为艺术家集合,\( country(ar_i) \) 表示艺术家 \( ar_i \) 的国家地区,\( country(ar_j) \) 表示艺术家 \( ar_j \) 的国家地区。相似国家地区推荐分数 \( S \) 可表示为:
\[
S_{\text{地区}}(ar_j) = \sum_{ar_i \in Ar} \text{sim}_{\text{国家}}(country(ar_i), country(ar_j)) \times \left( \frac{an\_m\_n(i)}{\max\_artist\_play\_count} + \frac{an\_am\_a\_m\_n(i)}{\max\_artist\_album\_play\_count} \right)
\]
其中,\( an\_m\_n(i) \) 为用户对艺术家 \( ar_i \) 的单曲的收听总次数,\( an\_am\_a\_m\_n(i) \) 为用户对艺术家 \( ar_i \) 的专辑的收听总次数,\( \text{sim}_{\text{国家}} \) 为国家地区之间的相似度。
### 基于相同流派的艺术家推荐
- **定义**:根据艺术家的音乐流派,推荐与用户收听过的艺术家流派相同的其他艺术家。
- **公式**:设 \( Ar \) 为艺术家集合,\( genre(ar_i) \) 表示艺术家 \( ar_i \) 的流派,\( genre(ar_j) \) 表示艺术家 \( ar_j \) 的流派。相同流派推荐分数 \( S \) 可表示为:
\[
S_{\text{流派}}(ar_j) = \sum_{ar_i \in Ar} \delta_{genre(ar_i), genre(ar_j)} \times \left( \frac{an\_m\_n(i)}{\max\_artist\_play\_count} + \frac{an\_am\_a\_m\_n(i)}{\max\_artist\_album\_play\_count} \right)
\]
其中,\( \delta \) 为克罗内克δ函数。
### 基于艺术家传记相似性的艺术家推荐
- **定义**:根据艺术家的传记内容相似性,推荐与用户收听过的艺术家传记相似的其他艺术家。
- **公式**:设 \( Ar \) 为艺术家集合,\( bio(ar_i) \) 表示艺术家 \( ar_i \) 的传记,\( bio(ar_j) \) 表示艺术家 \( ar_j \) 的传记。传记相似性可以通过文本相似性方法计算。传记相似性推荐分数 \( S \) 可表示为:
\[
S_{\text{传记}}(ar_j) = \sum_{ar_i \in Ar} \text{sim}_{\text{传记}}(bio(ar_i), bio(ar_j)) \times \left( \frac{an\_m\_n(i)}{\max\_artist\_play\_count} + \frac{an\_am\_a\_m\_n(i)}{\max\_artist\_album\_play\_count} \right)
\]
其中,\( \text{sim}_{\text{传记}} \) 为传记相似度。
## 3.4 综合内容属性推荐建模
### 综合内容属性的单曲推荐
- **定义**:综合相似年份、相似国家地区、相同流派、歌词相似性和评论描述相似性,生成最终的单曲推荐列表。
- **公式**:设 \( \alpha, \beta, \gamma, \delta, \epsilon \) 为权重系数,分别表示相似年份、相似国家地区、相同流派、歌词相似性和评论描述相似性的权重,\( R_{\text{单曲}} \) 为最终单曲推荐结果。
\[
R_{\text{单曲}} = \alpha \times S_{\text{年份}} + \beta \times S_{\text{地区}} + \gamma \times S_{\text{流派}} + \delta \times S_{\text{歌词}} + \epsilon \times S_{\text{评论}}
\]
其中,\( \alpha + \beta + \gamma + \delta + \epsilon = 1 \)。
### 综合内容属性的专辑推荐
- **定义**:综合相似年份、相似国家地区、相同流派和专辑描述相似性,生成最终的专辑推荐列表。
- **公式**:设 \( \alpha, \beta, \gamma, \delta \) 为权重系数,分别表示相似年份、相似国家地区、相同流派和专辑描述相似性的权重,\( R_{\text{专辑}} \) 为最终专辑推荐结果。
\[
R_{\text{专辑}} = \alpha \times S_{\text{年份}} + \beta \times S_{\text{地区}} + \gamma \times S_{\text{流派}} + \delta \times S_{\text{描述}}
\]
其中,\( \alpha + \beta + \gamma + \delta = 1 \)。
### 综合内容属性的艺术家推荐
- **定义**:综合相似国家地区、相同流派和艺术家传记相似性,生成最终的艺术家推荐列表。
- **公式**:设 \( \alpha, \beta, \gamma \) 为权重系数,分别表示相似国家地区、相同流派和艺术家传记相似性的权重,\( R_{\text{艺术家}} \) 为最终艺术家推荐结果。
\[
R_{\text{艺术家}} = \alpha \times S_{\text{地区}} + \beta \times S_{\text{流派}} + \gamma \times S_{\text{传记}}
\]
其中,\( \alpha + \beta + \gamma = 1 \)。
通过以上基于内容属性的推荐建模,可以充分利用单曲、专辑和艺术家的未使用属性,为用户生成更加多样化和个性化的推荐列表。这不仅丰富了推荐系统的维度,还提升了推荐结果的准确性和相关性。

View File

@ -0,0 +1,177 @@
# 4. 基于网络知识图谱的相似度计算
## 4.1 单曲推荐建模
### 基于运营公司的单曲推荐
- **定义**:根据单曲的运营公司,推荐与用户收听过的单曲来自相同运营公司的其他单曲。
- **公式**:设 \( M \) 为单曲集合,\( company(m_i) \) 表示单曲 \( m_i \) 的运营公司,\( company(m_j) \) 表示单曲 \( m_j \) 的运营公司。相同运营公司推荐分数 \( S \) 可表示为:
\[
S_{\text{公司}}(m_j) = \sum_{m_i \in M} \delta_{company(m_i), company(m_j)} \times \frac{an\_m\_n(i)}{\max\_play\_count}
\]
其中,\( \delta \) 为克罗内克δ函数,\( an\_m\_n(i) \) 为用户对单曲 \( m_i \) 的收听次数。
### 基于作词者的单曲推荐
- **定义**:根据单曲的作词者,推荐与用户收听过的单曲来自相同作词者的其他单曲。
- **公式**:设 \( M \) 为单曲集合,\( lyricist(m_i) \) 表示单曲 \( m_i \) 的作词者,\( lyricist(m_j) \) 表示单曲 \( m_j \) 的作词者。相同作词者推荐分数 \( S \) 可表示为:
\[
S_{\text{作词者}}(m_j) = \sum_{m_i \in M} \delta_{lyricist(m_i), lyricist(m_j)} \times \frac{an\_m\_n(i)}{\max\_play\_count}
\]
### 基于作曲者的单曲推荐
- **定义**:根据单曲的作曲者,推荐与用户收听过的单曲来自相同作曲者的其他单曲。
- **公式**:设 \( M \) 为单曲集合,\( composer(m_i) \) 表示单曲 \( m_i \) 的作曲者,\( composer(m_j) \) 表示单曲 \( m_j \) 的作曲者。相同作曲者推荐分数 \( S \) 可表示为:
\[
S_{\text{作曲者}}(m_j) = \sum_{m_i \in M} \delta_{composer(m_i), composer(m_j)} \times \frac{an\_m\_n(i)}{\max\_play\_count}
\]
### 基于合作出品专辑的单曲推荐
- **定义**:根据单曲所属专辑的合作出品关系,推荐与用户收听过的单曲来自相同合作出品专辑的其他单曲。
- **公式**:设 \( M \) 为单曲集合,\( album(m_i) \) 表示单曲 \( m_i \) 所属的专辑,\( album(m_j) \) 表示单曲 \( m_j \) 所属的专辑,\( collaboration\_album \) 为合作出品专辑的集合。合作出品专辑推荐分数 \( S \) 可表示为:
\[
S_{\text{合作专辑}}(m_j) = \sum_{m_i \in M} \delta_{album(m_i), album(m_j)} \times \delta_{album(m_j), collaboration\_album} \times \frac{an\_m\_n(i)}{\max\_play\_count}
\]
### 基于合作出品单曲的单曲推荐
- **定义**:根据单曲的合作出品关系,推荐与用户收听过的单曲来自相同合作出品单曲的其他单曲。
- **公式**:设 \( M \) 为单曲集合,\( collaboration\_singles \) 为合作出品单曲的集合。合作出品单曲推荐分数 \( S \) 可表示为:
\[
S_{\text{合作单曲}}(m_j) = \sum_{m_i \in M} \delta_{m_i, collaboration\_singles} \times \delta_{m_j, collaboration\_singles} \times \frac{an\_m\_n(i)}{\max\_play\_count}
\]
### 基于单曲版本相似性的单曲推荐
- **定义**:根据单曲的不同版本(如录音室版、演唱会版等),推荐与用户收听过的单曲版本相似的其他单曲。
- **公式**:设 \( M \) 为单曲集合,\( version(m_i) \) 表示单曲 \( m_i \) 的版本类型,\( version(m_j) \) 表示单曲 \( m_j \) 的版本类型。版本相似性推荐分数 \( S \) 可表示为:
\[
S_{\text{版本}}(m_j) = \sum_{m_i \in M} \text{sim}_{\text{版本}}(version(m_i), version(m_j)) \times \frac{an\_m\_n(i)}{\max\_play\_count}
\]
其中,\( \text{sim}_{\text{版本}} \) 为版本类型之间的相似度。
### 基于发布公司的单曲推荐
- **定义**:根据单曲的发布公司,推荐与用户收听过的单曲来自相同发布公司的其他单曲。
- **公式**:设 \( M \) 为单曲集合,\( publisher(m_i) \) 表示单曲 \( m_i \) 的发布公司,\( publisher(m_j) \) 表示单曲 \( m_j \) 的发布公司。相同发布公司推荐分数 \( S \) 可表示为:
\[
S_{\text{发布公司}}(m_j) = \sum_{m_i \in M} \delta_{publisher(m_i), publisher(m_j)} \times \frac{an\_m\_n(i)}{\max\_play\_count}
\]
## 4.2 专辑推荐建模
### 基于运营公司的专辑推荐
- **定义**:根据专辑的运营公司,推荐与用户收听过的专辑来自相同运营公司的其他专辑。
- **公式**:设 \( A \) 为专辑集合,\( company(a_i) \) 表示专辑 \( a_i \) 的运营公司,\( company(a_j) \) 表示专辑 \( a_j \) 的运营公司。相同运营公司推荐分数 \( S \) 可表示为:
\[
S_{\text{公司}}(a_j) = \sum_{a_i \in A} \delta_{company(a_i), company(a_j)} \times \frac{an\_am\_a\_m\_n(i)}{\max\_album\_play\_count}
\]
### 基于作词者的专辑推荐
- **定义**:根据专辑的作词者,推荐与用户收听过的专辑来自相同作词者的其他专辑。
- **公式**:设 \( A \) 为专辑集合,\( lyricist(a_i) \) 表示专辑 \( a_i \) 的作词者,\( lyricist(a_j) \) 表示专辑 \( a_j \) 的作词者。相同作词者推荐分数 \( S \) 可表示为:
\[
S_{\text{作词者}}(a_j) = \sum_{a_i \in A} \delta_{lyricist(a_i), lyricist(a_j)} \times \frac{an\_am\_a\_m\_n(i)}{\max\_album\_play\_count}
\]
### 基于作曲者的专辑推荐
- **定义**:根据专辑的作曲者,推荐与用户收听过的专辑来自相同作曲者的其他专辑。
- **公式**:设 \( A \) 为专辑集合,\( composer(a_i) \) 表示专辑 \( a_i \) 的作曲者,\( composer(a_j) \) 表示专辑 \( a_j \) 的作曲者。相同作曲者推荐分数 \( S \) 可表示为:
\[
S_{\text{作曲者}}(a_j) = \sum_{a_i \in A} \delta_{composer(a_i), composer(a_j)} \times \frac{an\_am\_a\_m\_n(i)}{\max\_album\_play\_count}
\]
### 基于合作出品专辑的专辑推荐
- **定义**:根据专辑的合作出品关系,推荐与用户收听过的专辑来自相同合作出品专辑的其他专辑。
- **公式**:设 \( A \) 为专辑集合,\( collaboration\_albums \) 为合作出品专辑的集合。合作出品专辑推荐分数 \( S \) 可表示为:
\[
S_{\text{合作专辑}}(a_j) = \sum_{a_i \in A} \delta_{a_i, collaboration\_albums} \times \delta_{a_j, collaboration\_albums} \times \frac{an\_am\_a\_m\_n(i)}{\max\_album\_play\_count}
\]
### 基于发布公司的专辑推荐
- **定义**:根据专辑的发布公司,推荐与用户收听过的专辑来自相同发布公司的其他专辑。
- **公式**:设 \( A \) 为专辑集合,\( publisher(a_i) \) 表示专辑 \( a_i \) 的发布公司,\( publisher(a_j) \) 表示专辑 \( a_j \) 的发布公司。相同发布公司推荐分数 \( S \) 可表示为:
\[
S_{\text{发布公司}}(a_j) = \sum_{a_i \in A} \delta_{publisher(a_i), publisher(a_j)} \times \frac{an\_am\_a\_m\_n(i)}{\max\_album\_play\_count}
\]
## 4.3 艺术家推荐建模
### 基于运营公司的艺术家推荐
- **定义**:根据艺术家的运营公司,推荐与用户收听过的艺术家来自相同运营公司的其他艺术家。
- **公式**:设 \( Ar \) 为艺术家集合,\( company(ar_i) \) 表示艺术家 \( ar_i \) 的运营公司,\( company(ar_j) \) 表示艺术家 \( ar_j \) 的运营公司。相同运营公司推荐分数 \( S \) 可表示为:
\[
S_{\text{公司}}(ar_j) = \sum_{ar_i \in Ar} \delta_{company(ar_i), company(ar_j)} \times \left( \frac{an\_m\_n(i)}{\max\_artist\_play\_count} + \frac{an\_am\_a\_m\_n(i)}{\max\_artist\_album\_play\_count} \right)
\]
### 基于作词者的艺术家推荐
- **定义**:根据艺术家的作词者,推荐与用户收听过的艺术家来自相同作词者的其他艺术家。
- **公式**:设 \( Ar \) 为艺术家集合,\( lyricist(ar_i) \) 表示艺术家 \( ar_i \) 的作词者,\( lyricist(ar_j) \) 表示艺术家 \( ar_j \) 的作词者。相同作词者推荐分数 \( S \) 可表示为:
\[
S_{\text{作词者}}(ar_j) = \sum_{ar_i \in Ar} \delta_{lyricist(ar_i), lyricist(ar_j)} \times \left( \frac{an\_m\_n(i)}{\max\_artist\_play\_count} + \frac{an\_am\_a\_m\_n(i)}{\max\_artist\_album\_play\_count} \right)
\]
### 基于作曲者的艺术家推荐
- **定义**:根据艺术家的作曲者,推荐与用户收听过的艺术家来自相同作曲者的其他艺术家。
- **公式**:设 \( Ar \) 为艺术家集合,\( composer(ar_i) \) 表示艺术家 \( ar_i \) 的作曲者,\( composer(ar_j) \) 表示艺术家 \( ar_j \) 的作曲者。相同作曲者推荐分数 \( S \) 可表示为:
\[
S_{\text{作曲者}}(ar_j) = \sum_{ar_i \in Ar} \delta_{composer(ar_i), composer(ar_j)} \times \left( \frac{an\_m\_n(i)}{\max\_artist\_play\_count} + \frac{an\_am\_a\_m\_n(i)}{\max\_artist\_album\_play\_count} \right)
\]
### 基于合作出品专辑的艺术家推荐
- **定义**:根据艺术家的合作出品专辑关系,推荐与用户收听过的艺术家合作出品过专辑的其他艺术家。
- **公式**:设 \( Ar \) 为艺术家集合,\( collaboration\_albums(ar_i) \) 表示艺术家 \( ar_i \) 合作出品的专辑集合,\( collaboration\_albums(ar_j) \) 表示艺术家 \( ar_j \) 合作出品的专辑集合。合作出品专辑推荐分数 \( S \) 可表示为:
\[
S_{\text{合作专辑}}(ar_j) = \sum_{ar_i \in Ar} \text{sim}_{\text{合作}}(collaboration\_albums(ar_i), collaboration\_albums(ar_j)) \times \left( \frac{an\_m\_n(i)}{\max\_artist\_play\_count} + \frac{an\_am\_a\_m\_n(i)}{\max\_artist\_album\_play\_count} \right)
\]
其中,\( \text{sim}_{\text{合作}} \) 为合作出品专辑的相似度。
### 基于发布公司的艺术家推荐
- **定义**:根据艺术家的发布公司,推荐与用户收听过的艺术家来自相同发布公司的其他艺术家。
- **公式**:设 \( Ar \) 为艺术家集合,\( publisher(ar_i) \) 表示艺术家 \( ar_i \) 的发布公司,\( publisher(ar_j) \) 表示艺术家 \( ar_j \) 的发布公司。相同发布公司推荐分数 \( S \) 可表示为:
\[
S_{\text{发布公司}}(ar_j) = \sum_{ar_i \in Ar} \delta_{publisher(ar_i), publisher(ar_j)} \times \left( \frac{an\_m\_n(i)}{\max\_artist\_play\_count} + \frac{an\_am\_a\_m\_n(i)}{\max\_artist\_album\_play\_count} \right)
\]
## 4.4 综合网络属性推荐建模
### 综合网络属性的单曲推荐
- **定义**:综合运营公司、作词者、作曲者、合作出品专辑、合作出品单曲、单曲版本相似性和发布公司,生成最终的单曲推荐列表。
- **公式**:设 \( \alpha, \beta, \gamma, \delta, \epsilon, \zeta, \eta \) 为权重系数,分别表示运营公司、作词者、作曲者、合作出品专辑、合作出品单曲、单曲版本相似性和发布公司的权重,\( R_{\text{单曲}} \) 为最终单曲推荐结果。
\[
R_{\text{单曲}} = \alpha \times S_{\text{公司}} + \beta \times S_{\text{作词者}} + \gamma \times S_{\text{作曲者}} + \delta \times S_{\text{合作专辑}} + \epsilon \times S_{\text{合作单曲}} + \zeta \times S_{\text{版本}} + \eta \times S_{\text{发布公司}}
\]
其中,\( \alpha + \beta + \gamma + \delta + \epsilon + \zeta + \eta = 1 \)。
### 综合网络属性的专辑推荐
- **定义**:综合运营公司、作词者、作曲者、合作出品专辑和发布公司,生成最终的专辑推荐列表。
- **公式**:设 \( \alpha, \beta, \gamma, \delta, \epsilon \) 为权重系数,分别表示运营公司、作词者、作曲者、合作出品专辑和发布公司的权重,\( R_{\text{专辑}} \) 为最终专辑推荐结果。
\[
R_{\text{专辑}} = \alpha \times S_{\text{公司}} + \beta \times S_{\text{作词者}} + \gamma \times S_{\text{作曲者}} + \delta \times S_{\text{合作专辑}} + \epsilon \times S_{\text{发布公司}}
\]
其中,\( \alpha + \beta + \gamma + \delta + \epsilon = 1 \)。
### 综合网络属性的艺术家推荐
- **定义**:综合运营公司、作词者、作曲者、合作出品专辑和发布公司,生成最终的艺术家推荐列表。
- **公式**:设 \( \alpha, \beta, \gamma, \delta, \epsilon \) 为权重系数,分别表示运营公司、作词者、作曲者、合作出品专辑和发布公司的权重,\( R_{\text{艺术家}} \) 为最终艺术家推荐结果。
\[
R_{\text{艺术家}} = \alpha \times S_{\text{公司}} + \beta \times S_{\text{作词者}} + \gamma \times S_{\text{作曲者}} + \delta \times S_{\text{合作专辑}} + \epsilon \times S_{\text{发布公司}}
\]
其中,\( \alpha + \beta + \gamma + \delta + \epsilon = 1 \)。
通过以上基于网络知识图谱的推荐建模,可以充分利用单曲、专辑和艺术家的网络相关属性,为用户生成更加多样化和个性化的推荐列表。这不仅丰富了推荐系统的维度,还提升了推荐结果的准确性和相关性。

View File

@ -0,0 +1,87 @@
# 5. 基于深度学习与音频编码信息的相似度计算
## 5.1 单曲推荐建模
### 基于音频特征的单曲推荐
- **定义**:利用深度学习模型提取音频的特征,如旋律、节奏、和声等,推荐与用户收听过的单曲音频特征相似的其他单曲。
- **公式**:设 \( M \) 为单曲集合,\( audio\_features(m_i) \) 表示单曲 \( m_i \) 的音频特征向量,\( audio\_features(m_j) \) 表示单曲 \( m_j \) 的音频特征向量。音频特征相似度可以通过余弦相似度计算。单曲推荐分数 \( S \) 可表示为:
\[
S_{\text{音频}}(m_j) = \sum_{m_i \in M} \text{cosine\_similarity}(audio\_features(m_i), audio\_features(m_j)) \times \frac{an\_m\_n(i)}{\max\_play\_count}
\]
### 基于编码信息的单曲推荐
- **定义**:根据音频文件的编码信息(如比特率、采样率等),推荐与用户收听过的单曲编码格式相似的其他单曲。
- **公式**:设 \( M \) 为单曲集合,\( codec(m_i) \) 表示单曲 \( m_i \) 的编码信息,\( codec(m_j) \) 表示单曲 \( m_j \) 的编码信息。编码信息相似性可以通过比较编码参数计算。单曲推荐分数 \( S \) 可表示为:
\[
S_{\text{编码}}(m_j) = \sum_{m_i \in M} \text{sim}_{\text{编码}}(codec(m_i), codec(m_j)) \times \frac{an\_m\_n(i)}{\max\_play\_count}
\]
其中,\( \text{sim}_{\text{编码}} \) 为编码信息相似度。
## 5.2 专辑推荐建模
### 基于音频特征的专辑推荐
- **定义**:利用深度学习模型提取专辑内单曲的音频特征,推荐与用户收听过的专辑音频特征相似的其他专辑。
- **公式**:设 \( A \) 为专辑集合,\( audio\_features(a_i) \) 表示专辑 \( a_i \) 内所有单曲的音频特征向量集合,\( audio\_features(a_j) \) 表示专辑 \( a_j \) 内所有单曲的音频特征向量集合。专辑音频特征相似度可以通过聚合单曲特征计算。专辑推荐分数 \( S \) 可表示为:
\[
S_{\text{音频}}(a_j) = \sum_{a_i \in A} \text{cosine\_similarity}(audio\_features(a_i), audio\_features(a_j)) \times \frac{an\_am\_a\_m\_n(i)}{\max\_album\_play\_count}
\]
### 基于编码信息的专辑推荐
- **定义**:根据专辑内单曲的编码信息,推荐与用户收听过的专辑编码格式相似的其他专辑。
- **公式**:设 \( A \) 为专辑集合,\( codec(a_i) \) 表示专辑 \( a_i \) 内所有单曲的编码信息集合,\( codec(a_j) \) 表示专辑 \( a_j \) 内所有单曲的编码信息集合。编码信息相似性可以通过比较编码参数计算。专辑推荐分数 \( S \) 可表示为:
\[
S_{\text{编码}}(a_j) = \sum_{a_i \in A} \text{sim}_{\text{编码}}(codec(a_i), codec(a_j)) \times \frac{an\_am\_a\_m\_n(i)}{\max\_album\_play\_count}
\]
## 5.3 艺术家推荐建模
### 基于音频特征的艺术家推荐
- **定义**:利用深度学习模型提取艺术家作品的音频特征,推荐与用户收听过的艺术家作品音频特征相似的其他艺术家。
- **公式**:设 \( Ar \) 为艺术家集合,\( audio\_features(ar_i) \) 表示艺术家 \( ar_i \) 的所有作品的音频特征向量集合,\( audio\_features(ar_j) \) 表示艺术家 \( ar_j \) 的所有作品的音频特征向量集合。艺术家音频特征相似度可以通过聚合作品特征计算。艺术家推荐分数 \( S \) 可表示为:
\[
S_{\text{音频}}(ar_j) = \sum_{ar_i \in Ar} \text{cosine\_similarity}(audio\_features(ar_i), audio\_features(ar_j)) \times \left( \frac{an\_m\_n(i)}{\max\_artist\_play\_count} + \frac{an\_am\_a\_m\_n(i)}{\max\_artist\_album\_play\_count} \right)
\]
### 基于编码信息的艺术家推荐
- **定义**:根据艺术家作品的编码信息,推荐与用户收听过的艺术家作品编码格式相似的其他艺术家。
- **公式**:设 \( Ar \) 为艺术家集合,\( codec(ar_i) \) 表示艺术家 \( ar_i \) 的所有作品的编码信息集合,\( codec(ar_j) \) 表示艺术家 \( ar_j \) 的所有作品的编码信息集合。编码信息相似性可以通过比较编码参数计算。艺术家推荐分数 \( S \) 可表示为:
\[
S_{\text{编码}}(ar_j) = \sum_{ar_i \in Ar} \text{sim}_{\text{编码}}(codec(ar_i), codec(ar_j)) \times \left( \frac{an\_m\_n(i)}{\max\_artist\_play\_count} + \frac{an\_am\_a\_m\_n(i)}{\max\_artist\_album\_play\_count} \right)
\]
## 5.4 综合深度学习特征推荐建模
### 综合深度学习特征的单曲推荐
- **定义**:综合音频特征和编码信息,生成最终的单曲推荐列表。
- **公式**:设 \( \alpha \) 和 \( \beta \) 为权重系数,分别表示音频特征和编码信息的权重,\( R_{\text{单曲}} \) 为最终单曲推荐结果。
\[
R_{\text{单曲}} = \alpha \times S_{\text{音频}} + \beta \times S_{\text{编码}}
\]
其中,\( \alpha + \beta = 1 \)。
### 综合深度学习特征的专辑推荐
- **定义**:综合音频特征和编码信息,生成最终的专辑推荐列表。
- **公式**:设 \( \alpha \) 和 \( \beta \) 为权重系数,分别表示音频特征和编码信息的权重,\( R_{\text{专辑}} \) 为最终专辑推荐结果。
\[
R_{\text{专辑}} = \alpha \times S_{\text{音频}} + \beta \times S_{\text{编码}}
\]
其中,\( \alpha + \beta = 1 \)。
### 综合深度学习特征的艺术家推荐
- **定义**:综合音频特征和编码信息,生成最终的艺术家推荐列表。
- **公式**:设 \( \alpha \) 和 \( \beta \) 为权重系数,分别表示音频特征和编码信息的权重,\( R_{\text{艺术家}} \) 为最终艺术家推荐结果。
\[
R_{\text{艺术家}} = \alpha \times S_{\text{音频}} + \beta \times S_{\text{编码}}
\]
其中,\( \alpha + \beta = 1 \)。
通过以上基于深度学习与音频编码信息的相似度计算,可以充分利用音频的内在特征和编码属性,为用户生成更加精准和个性化的推荐列表。这不仅丰富了推荐系统的维度,还提升了推荐结果的准确性和相关性。

View File

@ -110,7 +110,7 @@
icon: renderIcon(Home28Regular),
},
{
label: computed(() => renderRouterLink('categories', t('Categories'))),
label: computed(() => renderRouterLink('categories', t('entity.smartPlaylist') + t('Categories'))),
key: 'categories',
icon: renderIcon(Apps20Regular),
},

View File

@ -446,18 +446,18 @@ onBeforeUnmount(() => {
<n-space vertical
style="margin-top: 20px;margin-left: 8px;">
<div
v-contextmenu:contextmenu
@contextmenu.prevent="() => {
store_playlist_list_info.playlist_Menu_Item = store_view_home_page_info.home_selected_top_album;
store_playlist_list_info.playlist_Menu_Item_Id =store_view_home_page_info.home_selected_top_album?.id
}">
v-contextmenu:contextmenu
@contextmenu.prevent="() => {
store_playlist_list_info.playlist_Menu_Item = store_view_home_page_info.home_selected_top_album;
store_playlist_list_info.playlist_Menu_Item_Id =store_view_home_page_info.home_selected_top_album?.id
}">
<div
:style="{
width: 'calc(100vw - ' + (collapsed_width - 20) + 'px)',
}"
style="
height: calc(41vh);
border-radius: 5px;
border-radius: 7px;
overflow: hidden;
background-size: cover;
background-position: center;
@ -488,7 +488,7 @@ onBeforeUnmount(() => {
transformOrigin: 'left bottom',
marginTop: `calc(-20vh - 50px)`,
}"
style="margin-left: 20px;margin-top: -202px;">
style="margin-left: calc(3.5vh);margin-top: -202px;">
<img
:src="getAssetImage(store_view_home_page_info.home_selected_top_album_medium_image_url)"
@error="handleImageError(store_view_home_page_info.home_selected_top_album)"