# aarivan/graph-embeddings-for-recommender-systems architecture

> Architecture diagram of the GitHub repository aarivan/graph-embeddings-for-recommender-systems, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/aarivan/graph-embeddings-for-recommender-systems
- Repository: https://github.com/aarivan/graph-embeddings-for-recommender-systems

## Overview

Rec2vec builds a heterogeneous movie-rating graph, samples DeepWalk walks, learns node embeddings, then predicts ratings for held-out user–movie pairs and reports metrics. The README documents the graph entities and embedding approach; the sampled entry point confirms the execution sequence. Some graph-building details are omitted from the source excerpt, so uncertain internal data links are not shown.

Main entry points: [`rec2vec/graph.py`](https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/rec2vec/graph.py) (Heterogeneous graph), [`rec2vec/__main__.py`](https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/rec2vec/__main__.py) (Rating prediction), [`data/train_user_ratings.dat`](https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/data/train_user_ratings.dat) (Training ratings), [`data/test_user_ratings.dat`](https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/data/test_user_ratings.dat) (Test ratings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_inputs["Movie data"]
  node_ratings_train["Training ratings"]
  node_ratings_test["Test ratings"]
  node_movie_data["Movie metadata<br/>[movies.dat]"]
  node_actor_data["Actor links<br/>[movie_actors.dat]"]
  node_director_data["Director links"]
  node_genre_data["Genre links<br/>[movie_genres.dat]"]
end

subgraph group_network["Graph construction"]
  node_graph_builder["Heterogeneous graph<br/>[graph.py]"]
  node_adjacency[("Adjacency list<br/>[graph.py]")]
end

subgraph group_learning["Walks and embeddings"]
  node_walk_generator["DeepWalk walks<br/>[graph.py]"]
  node_embedding_model["Word2Vec model<br/>[__main__.py]"]
end

subgraph group_prediction["Rating evaluation"]
  node_rating_predictor["Rating prediction<br/>[__main__.py]"]
  node_metrics["Evaluation metrics<br/>[__main__.py]"]
end

node_operator(("CLI user"))

node_operator -->|"runs CLI"| node_rating_predictor
node_ratings_train -->|"builds graph"| node_graph_builder
node_movie_data -->|"adds movies"| node_graph_builder
node_actor_data -->|"adds actors"| node_graph_builder
node_director_data -->|"adds directors"| node_graph_builder
node_genre_data -->|"adds genres"| node_graph_builder
node_graph_builder -->|"writes graph"| node_adjacency
node_adjacency -->|"loads adjacency"| node_walk_generator
node_walk_generator -->|"provides walks"| node_embedding_model
node_ratings_test -->|"provides pairs"| node_rating_predictor
node_embedding_model -->|"scores nodes"| node_rating_predictor
node_rating_predictor -->|"provides predictions"| node_metrics

click node_ratings_train "https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/data/train_user_ratings.dat"
click node_ratings_test "https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/data/test_user_ratings.dat"
click node_movie_data "https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/data/movies.dat"
click node_actor_data "https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/data/movie_actors.dat"
click node_director_data "https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/data/movie_directors.dat"
click node_genre_data "https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/data/movie_genres.dat"
click node_graph_builder "https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/rec2vec/graph.py"
click node_adjacency "https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/rec2vec/graph.py"
click node_walk_generator "https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/rec2vec/graph.py"
click node_embedding_model "https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/rec2vec/__main__.py"
click node_rating_predictor "https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/rec2vec/__main__.py"
click node_metrics "https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/rec2vec/__main__.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_ratings_train,node_ratings_test,node_movie_data,node_actor_data,node_director_data,node_genre_data,node_operator toneBlue
class node_graph_builder,node_adjacency toneAmber
class node_walk_generator,node_embedding_model toneMint
class node_rating_predictor,node_metrics toneRose
```

## Components

### Movie data

- [Training ratings](https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/data/train_user_ratings.dat): `data/train_user_ratings.dat`
- [Test ratings](https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/data/test_user_ratings.dat): `data/test_user_ratings.dat`
- [Movie metadata](https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/data/movies.dat): `data/movies.dat`
- [Actor links](https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/data/movie_actors.dat): `data/movie_actors.dat`
- [Director links](https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/data/movie_directors.dat): `data/movie_directors.dat`
- [Genre links](https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/data/movie_genres.dat): `data/movie_genres.dat`

### Graph construction

- [Heterogeneous graph](https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/rec2vec/graph.py): `rec2vec/graph.py`
- [Adjacency list](https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/rec2vec/graph.py): `rec2vec/graph.py`

### Walks and embeddings

- [DeepWalk walks](https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/rec2vec/graph.py): `rec2vec/graph.py`
- [Word2Vec model](https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/rec2vec/__main__.py): `rec2vec/__main__.py`

### Rating evaluation

- [Rating prediction](https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/rec2vec/__main__.py): `rec2vec/__main__.py`
- [Evaluation metrics](https://github.com/aarivan/graph-embeddings-for-recommender-systems/blob/master/rec2vec/__main__.py): `rec2vec/__main__.py`

### Other components

- **CLI user**

## Connections

- CLI user → Rating prediction: runs CLI
- Training ratings → Heterogeneous graph: builds graph
- Movie metadata → Heterogeneous graph: adds movies
- Actor links → Heterogeneous graph: adds actors
- Director links → Heterogeneous graph: adds directors
- Genre links → Heterogeneous graph: adds genres
- Heterogeneous graph → Adjacency list: writes graph
- Adjacency list → DeepWalk walks: loads adjacency
- DeepWalk walks → Word2Vec model: provides walks
- Test ratings → Rating prediction: provides pairs
- Word2Vec model → Rating prediction: scores nodes
- Rating prediction → Evaluation metrics: provides predictions
