{"id":29275737,"url":"https://github.com/zenwor/article_gnn","last_synced_at":"2025-07-05T07:04:23.502Z","repository":{"id":264756292,"uuid":"894286560","full_name":"zenwor/article_gnn","owner":"zenwor","description":"Predict the number of article reads using graph neural networks.","archived":false,"fork":false,"pushed_at":"2024-11-30T04:10:29.000Z","size":13,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-09T23:18:34.961Z","etag":null,"topics":["bash","bert","conda","dl","graph-neural-networks","llm","machine-learning","ml","mlp","python","pytorch","regression"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zenwor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-26T04:56:50.000Z","updated_at":"2024-11-30T04:10:32.000Z","dependencies_parsed_at":"2024-11-26T07:20:11.915Z","dependency_job_id":"e9de148f-f38c-4ddb-9025-4746d855994b","html_url":"https://github.com/zenwor/article_gnn","commit_stats":null,"previous_names":["lukanedimovic/article_gnn","zenwor/article_gnn"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zenwor/article_gnn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenwor%2Farticle_gnn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenwor%2Farticle_gnn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenwor%2Farticle_gnn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenwor%2Farticle_gnn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zenwor","download_url":"https://codeload.github.com/zenwor/article_gnn/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenwor%2Farticle_gnn/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263699742,"owners_count":23497962,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","bert","conda","dl","graph-neural-networks","llm","machine-learning","ml","mlp","python","pytorch","regression"],"created_at":"2025-07-05T07:04:22.560Z","updated_at":"2025-07-05T07:04:23.494Z","avatar_url":"https://github.com/zenwor.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1\u003e📝 Article GNN - Predicting the Number of Article Reads \u003c/h1\u003e\n\n\u003cb\u003eArticle GNN\u003c/b\u003e is a project implementing Graph Neural Networks, for the purpose of predicting the number of reads an article is going to get. \n\n\u003ch2\u003e ℹ️ General Information \u003c/h2\u003e\n\nThis project aims to understand the effect of locality graphs could create.\n\nGraph generation is very simple in itself - articles of the same domain (source) are connected to each other, forming the connected components. This creates an isolated environment for each domain, and no communication is happening amongst the articles.\n\nLeveraging these connected components, GNNs learn that the environment also matters, aside from the content. This leads to the obvious point - even if two different sources published the article with exactly the same content, we don't expect the same number of reads, simply because of the popularity and timing of the article publishing.\n\nThe architecture is relatively simple: \u003cb\u003eGNN block\u003c/b\u003e, followed by an \u003cb\u003eMLP block\u003c/b\u003e. \u003cbr/\u003e\nGNN block consists of several \u003cb\u003eGraph Attention Network (GAT)\u003c/b\u003e layers, whilst the MLP consists of several \u003cb\u003eFully Connected Layers\u003c/b\u003e.\n\n\u003cb\u003eTesting\u003c/b\u003e is performed by adding a single article into the graph, and then evaluating the precision of the inferred value, compared to the ground truth value present within the dataset.\n\n\u003ch2\u003e 🚀 Quick Start \u003c/h2\u003e\n\u003cpre\u003e\n\u003ccode\u003egit clone https://github.com/LukaNedimovic/article_gnn.git\ncd article_gnn\nsource ./setup.sh\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch2\u003e 📁 Project Structure \u003c/h2\u003e\n\u003cpre\u003e\u003ccode\u003earticle_gnn\n├── data\n│   ├── make_graph.py        # Graph generation script  \n│   └── preprocess.py        # Preprocess the dataset\n├── model\n│   ├── gnn.py               # Core GNN block implementation\n│   ├── mlp.py               # Core MLP block implementation\n│   └── model.py             # Combining GNN -\u003e MLP into general model\n├── requirements.txt        \n├── setup.sh                 # Use this to set up the project!      \n├── train\n│   ├── train.py             # Main code used for training the model\n│   └── train.sh             # Run training, as described in `train.py`\n└── utils\n    ├── argparser.py         # Parse cmdline arguments\n    ├── merge.py             # Utility file, used to merge CSVs together\n    ├── merge.sh             # Run CSV merging\n    └── path.py              # Utility file, expand environment variables within the path\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch2\u003e 🔍 References \u003c/h2\u003e\nThis model leverages the Graph Attention Networks, as described in the original paper \u003ci\u003e\"Graph Attention Networks\"\u003c/i\u003e (Veličković et al.):\n\u003cpre\u003e\u003ccode\u003e@article{\n  velickovic2018graph,\n  title=\"{Graph Attention Networks}\",\n  author={Veli{\\v{c}}kovi{\\'{c}}, Petar and Cucurull, Guillem and Casanova, Arantxa and Romero, Adriana and Li{\\`{o}}, Pietro and Bengio, Yoshua},\n  journal={International Conference on Learning Representations},\n  year={2018},\n  url={https://openreview.net/forum?id=rJXMpikCZ},\n  note={accepted as poster},\n}\u003c/code\u003e\u003c/pre\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzenwor%2Farticle_gnn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzenwor%2Farticle_gnn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzenwor%2Farticle_gnn/lists"}