{"id":13856875,"url":"https://github.com/tomasff/positivum","last_synced_at":"2025-07-13T19:33:03.118Z","repository":{"id":39739563,"uuid":"231084242","full_name":"tomasff/positivum","owner":"tomasff","description":"📰 A web application which categorizes news articles by sentiment","archived":true,"fork":false,"pushed_at":"2022-12-08T03:22:39.000Z","size":129,"stargazers_count":12,"open_issues_count":14,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-08-06T03:03:03.491Z","etag":null,"topics":["machine-learning","news-articles","sentiment"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tomasff.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-12-31T12:19:39.000Z","updated_at":"2023-08-19T20:37:19.000Z","dependencies_parsed_at":"2023-01-25T04:01:04.251Z","dependency_job_id":null,"html_url":"https://github.com/tomasff/positivum","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasff%2Fpositivum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasff%2Fpositivum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasff%2Fpositivum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasff%2Fpositivum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tomasff","download_url":"https://codeload.github.com/tomasff/positivum/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225912346,"owners_count":17544153,"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":["machine-learning","news-articles","sentiment"],"created_at":"2024-08-05T03:01:17.016Z","updated_at":"2024-11-22T14:31:07.438Z","avatar_url":"https://github.com/tomasff.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/tomasff/positivum/master/images/logo.png\" /\u003e\n\u003c/p\u003e\n\n\u003chr\u003e\n\nPositivum consits of a web application and a backend service which categorizes news articles by their sentiment.\n\n**NOTE:** As of 30/06/2020 the public demo is no longer available. While the demo was run, around 34000 articles were collected and classified.\n       I will release the categorized articles under an open-source license at a later time.\n\n## How it works\nEvery few minutes, a background service written in Python queries different RSS feeds stored in the database and classifies them using a model.\nThe web application written in flask then displays the articles in the database to the users.\n\n## Model\nThe model is based on BERT. I used the transformers library to create a classification model using BBC articles annotated by myself.\nCurrently, the dataset is quite small and this is why the sentiment analysis is not as accurate as I would like.\nIn the future, this could be improved by completing some of the goals mentioned below.\n\nFor documentation purposes all iterations of my training scripts were saved.\n\nThe most up-to-date model can be found below:\n- [Model (tf_model.h5)](https://storage.tomasfernandes.dev/positivum/model/tf_model.h5)\n- [Config (config.json)](https://storage.tomasfernandes.dev/positivum/model/config.json)\n\n## Dependencies\nThe required dependencies for each component of Positivum are listed in the `requirements.txt` file inside the corresponding directory.\n\n## Goals\n- [x] Create a reasonable model which is able to classify the title of news articles as positive/neutral and negative.\n- [x] Create a backend service which is able to query and store articles from different RSS feeds which are fetched from the database.\n- [x] Create a web application which displays the articles stored in the database.\n- [x] Improve the web application appearance.\n- [x] Show a shorter page navigation when the number of pages is big.\n- [ ] Use feedback from users to train and improve the model.\n- [ ] Share articles feature.\n- [ ] Show confidence in each sentiment on the web application.\n- [ ] Release document describing the progress of this project.\n\n## Disclaimer\nThis is a personal project developed for the Extend Project Qualification.\nYou are welcome to use this project but I will not be providing support for it.\n\n## Dataset Source\nThe current dataset was annotated by myself, but is based on the following publication:\n\nD. Greene and P. Cunningham. \"Practical Solutions to the Problem of Diagonal Dominance in Kernel Document Clustering\", Proc. ICML 2006. [PDF](http://mlg.ucd.ie/files/publications/greene06icml.pdf) [BibTex](http://mlg.ucd.ie/files/bib/greene06icml.bib).\n\n\n## License\n[MIT License](https://github.com/tomasff/positivum/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomasff%2Fpositivum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomasff%2Fpositivum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomasff%2Fpositivum/lists"}