Introducing News App - News App is an online news platform that sources news articles around the world from the Internet. Users can enter their interested topics in the search bar to find specific news on demand.
Additionally, News App allows its users to find related articles and updates based on another article of interest. Furthermore, the platform learns the user's preferences based on their liked articles. Therefore, future search results will include more personalised topics and content.
The web application is built with an Python backend and an HTML frontend. The main underlying framework is Flask that handles web requests and their corresponding response including the rendering of corresponding webpage (HTML).
The frontend layout is based on an online template with my personal adjustments that tailor to the project functionality. The decision to deploy an template entails that the emphasis of the project is to demonstrate my skills in backend development, specifically in Python.
The development takes an object-oriented approach that transforms each of the news articles into a collection of News objects. These news objects are then managed by another master object, News_Manager.
The creation of the content on the platform involves multiple API calls. It facilitates the Bing News API to source news articles on the Internet based on given queries. As soon as the backend receives a response, it turns news articles into objects managed by the News_Manager object. The list of objects are then sent to the frontend and parsed into news feeds with a title, description, link to the news website and thumbnail. The News_Manager is responsible for news object creation based on the news given and several other auxiliary class methods outlined in the previous section.
The project also utilises the One AI language model, accessed through API calls. When the user likes an article, the article's title and description are sent to the model to produce keywords and a summary. Subsequently, the backend tokenises the strings and calculate the term frequency for each word. The words are ranked based on their frequency of being used with the top two being the preferred keywords that will be automatically included in the future queries.
Another use case of the language model is that when the user chooses to view more related content and updates based on another article (reference article), the reference article's title is summarised and used to query the Bing News API.
All API calls are done with the Python requests module.
The specification involves a pain point where 'it can be difficult to filter through the news to find things you’re interested in'. Therefore, the project is designed to enable users to search a topic of interest, learn about their interests through article keywords and establish a method for them to read more related content based on an article of interest.
The object oriented approach maximises the simplicity and organisation of the development process as classes reduces the need for repetitive code while many elements share the same set of attributes and functions. This also makes the access and modification of an element (represented by an object) more efficient and organised.
Additionally, in terms of the scalability, the object-oriented structure allows the expansion on features and functionality with more flexibility as elements are 'modularised' into objects that isolate the scope of a bigger problem and increase the reusability of the code.
The purpose of this project is to mainly showcase the skills in backend development. Therefore, the Flask framework allows frontend development to be simplified. This is because with an existing HTML template as the base, the frontend design only involves sending requests into the backend and passing parameters back into the frontend.
In terms of the long-term scalability, deploying a React frontend may be an optimal solution. This is because React supports reusable frontend elements, making the expansion more flexible and efficient though the current preliminary solution fulfils all the desired functionality.
The current model of preference learning is based on the simple term frequency ranking with stop word filtering and keyword finding. Nevertheless, the system does not make meaning of the keywords and nor does it understand the semantics. As a result, the improve in the current preliminary solution could include a more robust natural language processing to find not only the keywords themselves, but also the other associated keywords to build keyword clusters.
In today’s world it can be difficult to filter through the news to find things you’re interested in.
We want you to build an application or service that allows users to enter a news topic they want to hear about. The application provides them with recent news stories about that topic, and updates them on new stories as they’re released.
They could view these stories on a webpage, or receive updates through email or another channel (and unsubscribe if they wish). Perhaps they can filter the news sources they wish to receive updates from. You can decide how users receive these news stories, and what they can do with it.
You can choose which programming languages and/or frameworks to use based on your expertise and chosen approach. Our advice is to complete this task in a way which shows your strengths.
Your submission should have 3 parts: