Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
test_env/*
17 changes: 11 additions & 6 deletions app.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,19 @@
#create our "home" route using the "housingprice.html" page
@app.route('/')
def home():
return render_template('input.html')

context={
'sentences': 5,
'summary':2,
}
return render_template('base.html',context=context)

#Set a post method to yield predictions on page
@app.route('/predict', methods = ['POST'])

def predict():
document =request.form["z1"] #fetching text from html form

document =request.form["content"] #fetching text from html form
num = request.form["sentences"] #fetching text from html form
#Load English into Spacy
nlp = spacy.load("en_core_web_sm")
document = nlp(document)
Expand Down Expand Up @@ -54,16 +59,16 @@ def predict():
sent_strength[sent]=freq_word[word.text]

#Summarizing sentences
summarized_sentences = nlargest(4, sent_strength, key=sent_strength.get)
summarized_sentences = nlargest(int(num) if num else 4, sent_strength, key=sent_strength.get)

#final sentence
final_sentences= [w.text for w in summarized_sentences]
summary= ''.join(final_sentences)

# return summary
return render_template('output.html', summary=summary)
return summary
# print(summarise(text))

#Run app
if __name__ == "__main__":
app.run(debug=True)
app.run(debug=False)
145 changes: 145 additions & 0 deletions static/main.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
html {
scroll-behavior: smooth;
}

.bd-placeholder-img {
font-size: 1.125rem;
text-anchor: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}

@media (min-width: 768px) {
.bd-placeholder-img-lg {
font-size: 3.5rem;
}
}

body {
font-size: .875rem;
}

.feather {
width: 16px;
height: 16px;
vertical-align: text-bottom;
}

/* Sidebar*/

.sidebar {
position: fixed;
top: 0;
bottom: 0;
left: 0;
z-index: 100;
/* Behind the navbar */
padding: 48px 0 0;
/* Height of navbar */
box-shadow: inset -1px 0 0 rgba(0, 0, 0, .1);
}

@media (max-width: 767.98px) {
.sidebar {
top: 5rem;
}
}

.sidebar-sticky {
position: relative;
top: 0;
height: calc(100vh - 48px);
padding-top: .5rem;
overflow-x: hidden;
overflow-y: auto;
/* Scrollable contents if viewport is shorter than content. */
}

.sidebar .nav-link {
font-weight: 500;
color: #333;
}

.sidebar .nav-link .feather {
margin-right: 4px;
color: #727272;
}

.sidebar .nav-link.active {
color: #007bff;
}

.sidebar .nav-link:hover .feather,
.sidebar .nav-link.active .feather {
color: inherit;
}

.sidebar-heading {
font-size: .75rem;
text-transform: uppercase;
}

/*Navbar*/
.navbar-brand {
padding-top: .75rem;
padding-bottom: .75rem;
font-size: 1rem;
background-color: rgba(0, 0, 0, .25);
box-shadow: inset -1px 0 0 rgba(0, 0, 0, .25);
}

.navbar .navbar-toggler {
top: .25rem;
right: 1rem;
}

.navbar .form-control {
padding: .75rem 1rem;
border-width: 0;
border-radius: 0;
}

.form-control-dark {
color: #fff;
background-color: rgba(255, 255, 255, .1);
border-color: rgba(255, 255, 255, .1);
}

.form-control-dark:focus {
border-color: transparent;
box-shadow: 0 0 0 3px rgba(255, 255, 255, .25);
}

.loader {
width: 100px;
height: 100px;
border-radius: 50%;
border: 3px solid blue;
border-left: 3px solid white;
animation: loader 0.7s ease-in 0.1s infinite;
}

/* animations */
@keyframes loader {
0% {
transform: rotate(0deg);
}

25% {
transform: rotate(90deg);
}

50% {
transform: rotate(180deg);
}

75% {
transform: rotate(270deg);
}

100% {
transform: rotate(360deg);
}
}
197 changes: 197 additions & 0 deletions template/base.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
<!doctype html>
<html lang="en">

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="An article summarising tool">
<meta name="author" content="Puffy">
<title>Summariser</title>


<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css"
integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js"
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js"
integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/"
crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>

<link rel="stylesheet" href="../static/main.css">
</head>

<body>

<nav class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow">
<a class="navbar-brand col-md-3 col-lg-2 mr-0 px-3" href="#">Article Summariser</a>
<button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-toggle="collapse"
data-target="#sidebarMenu" aria-controls="sidebarMenu" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<input class="form-control form-control-dark w-100" type="text" placeholder="Search" aria-label="Search">

</nav>

<div class="container-fluid">
<div class="row">
<nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-light sidebar collapse">
<div class="position-sticky pt-3">
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">
<span data-feather="home"></span>
Dashboard
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="file"></span>
Orders
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="shopping-cart"></span>
Products
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="users"></span>
Customers
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="bar-chart-2"></span>
Reports
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="layers"></span>
Integrations
</a>
</li>
</ul>

<h6
class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted">
<span>Saved reports</span>
<a class="link-secondary" href="#" aria-label="Add a new report">
<span data-feather="plus-circle"></span>
</a>
</h6>
<ul class="nav flex-column mb-2">
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="file-text"></span>
Current month
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="file-text"></span>
Last quarter
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="file-text"></span>
Social engagement
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
<span data-feather="file-text"></span>
Year-end sale
</a>
</li>
</ul>
</div>
</nav>

<main class="col-md-9 ml-sm-auto col-lg-10 px-md-4">
<div
class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
<h1 class="h2">Article summariser</h1>
<div class="btn-toolbar mb-2 mb-md-0">
<div class="btn-group mr-2">
<button type="button" class="btn btn-sm btn-outline-secondary">Share</button>
<button type="button" class="btn btn-sm btn-outline-secondary">Export</button>
</div>
<button type="button" class="btn btn-sm btn-outline-secondary dropdown-toggle">
<span data-feather="calendar"></span>
This week
</button>
</div>

</div>

<form action="#summary" id="form" method="post">
<div class="form-floating mb-3">
<textarea class="form-control" name="content" id="floatingTextarea2" rows="18"
placeholder="Paste here" class="text-muted fs-3 fw-bold"></textarea>
<label for="floatingTextarea2" class="text-muted">Enter article to summarise</label>

</div>
<div class="mb-3">
<label for="sentences" class="form-label">Sentences</label>
<input type="number" class="form-control" name="sentences" id="sentences"
aria-describedby="numberHelpId" value={{context['sentences']}}>
<small id="numberHelpId" class="form-text text-muted">No. of sentences</small>
</div>
<div class="text-center mb-3">
<button class="btn btn-success rounded-pill btn-md" type="submit">Summarize</button>
</div>
</form>

<div class="p-5 mb-4 bg-light rounded-3">
<div class="container-fluid py-5 text-center">
<h1 class="display-5 fw-bold">Summary</h1>
<div class="loader mx-auto" style="display:none"></div>
<div class="text-dark-50 summary" id="summary">

</div>


</div>
</div>
</main>
</div>
</div>

<script>
$('#form').submit(function (event) {
document.querySelector('#summary').scrollIntoView({
behavior: 'smooth'
});
event.preventDefault();
var data = $('#form').serialize();
$.ajax({
type: "post",
url: "/predict",
data: data,
}).done(function (data) {
$('.summary').text(data);
}).fail(function (data) {
$('.summary').text('Please paste your article in the text box provided above to view the summary');
});

});

</script>

<script src="/docs/5.0/dist/js/bootstrap.bundle.min.js"
integrity="sha384-DBjhmceckmzwrnMMrjI7BvG2FmRuxQVaTfFYHgfnrdfqMhxKt445b7j3KBQLolRl"
crossorigin="anonymous"></script>


<script src="https://cdnjs.cloudflare.com/ajax/libs/feather-icons/4.24.1/feather.min.js"
integrity="sha384-EbSscX4STvYAC/DxHse8z5gEDaNiKAIGW+EpfzYTfQrgIlHywXXrM9SUIZ0BlyfF"
crossorigin="anonymous"></script>
</body>

</html>
Loading