News Summarization Website

Python NodeJS NumPy MongoDB Flask

We have developed a news summarization website that displays summaries of news articles. Our project aims to be a one stop website where visitors can browse news articles, receive recommendations, check categories and read summaries.. We aim to continue developing our application in the future and add other features and optimize them as well.

A separate script get article links from NewsAPI, scrapes the article content, summarizes it and stores relevant content in mongoDB database which is then accessed by the website. There is also a script for on-demand summarization. Available in the Summarizer module. Scripts can also be found in the summarizer folder of this repo.

This web app is developed with Node.js, Python 3.8 and MongoDB. The web app is a blog CMS. Everything is dynamic. You don't need to edit any code manually.

Features:

  • Self-implemented summarizer based on TextRank
  • Posting articles
  • Highlighted articles
  • Slideshow of articles
  • Popular articles
  • Most viewed articles
  • Recent articles
  • Breaking news articles
  • On-demand summarization
  • Categories and Subcategories
  • Search of articles by article title and keywords
  • Contact page with Google recaptcha
  • About page
  • REST API for fetching the articles
  • Push Notification for visitors
  • Advanced Admin Panel dashboard

Getting Started

Use exported DB files from the 'db' folder and import it your database called 'magazine'.
You can do the same thing manually, but you have to be careful of using the right document properties names. For example, in the Admin document there is no page to register admin account. you need to add it manually or import admin.json file to your database in admin collection.

If you imported it:

admin username: Demo
admin Email: demo@example.com
admin Password: demo

TextRank Paper

[Rada Mihalcea and Paul Tarau, TextRank: Bringing Order into Texts, in Proceedings of the Conference on Empirical Methods in Natural Language Processing (EMNLP 2004), Barcelona, Spain, July 2004.] (https://web.eecs.umich.edu/~mihalcea/papers/mihalcea.emnlp04.pdf)

Jupyter Notebook contains algorithm implementation and comparison with Gensim's summarizer. Comparable performance is achieved.

Tech Stack

  • Frontend-HTML,CSS,JavaScript
  • Backend-Node.js,Express,Python
  • Database-Mongodb
  • API-https://newsapi.org/
  • News Summarization-Algorithm based on TextRank

Prerequisites and Installing

1.Nodes.js installer- https://nodejs.org/en/download/
2.Install all modules from the package.json file by typing:
npm install from CMD on the project directory path

npm install

Also check Python requirements in the summarizer folder for running the summarizer script and on-demand summarization Flask API.

How to use the application:

User Guide


Developed by Nishi, Vatsal and Bhuvnesh.