KIRANKALLA commited on
Commit
ef64219
·
verified ·
1 Parent(s): fa4d1da

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +55 -0
  2. requirements.txt +8 -0
app.py ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ from nltk.tokenize import sent_tokenize
4
+ from sentence_transformers import SentenceTransformer
5
+ from sklearn.metrics.pairwise import cosine_similarity
6
+ import nltk
7
+ nltk.download('punkt')
8
+
9
+ def generate_summary(teacher_feedback):
10
+ # Tokenize the feedback into sentences
11
+ sentences = sent_tokenize(teacher_feedback)
12
+
13
+ if len(sentences) == 0:
14
+ st.text("No feedback available.")
15
+
16
+ # Encode sentences into BERT embeddings
17
+ sentence_embeddings = model.encode(sentences)
18
+
19
+ # Calculate the mean embedding of all sentences
20
+ mean_embedding = sentence_embeddings.mean(axis=0, keepdims=True)
21
+
22
+ # Calculate cosine similarity between each sentence embedding and the mean embedding
23
+ cos_similarities = cosine_similarity(sentence_embeddings, mean_embedding)
24
+
25
+ # Sort sentences by cosine similarity in descending order
26
+ sorted_indices = cos_similarities.flatten().argsort()[::-1]
27
+
28
+ # Select the top two sentences as representative
29
+ num_sentences = min(1,2) # Adjust the number of sentences as needed
30
+ representative_sentences = [sentences[idx] for idx in sorted_indices[:num_sentences]]
31
+
32
+ # Generate summary
33
+ summary = ' '.join(representative_sentences)
34
+ return summary
35
+
36
+ st.header('RAMACHANDRA COLLEGE OF ENGINEERING')
37
+ st.title('STUDENT FEEDBACK ANALYZER')
38
+ model = SentenceTransformer('paraphrase-MiniLM-L6-v2')
39
+
40
+ csv=st.file_uploader('Enter CSV')
41
+ if csv:
42
+ df = pd.read_csv(csv)
43
+ # Load the dataset
44
+ # Specify the range of teachers to consider
45
+ start_teacher = 1
46
+ end_teacher = 5 # Adjust as needed
47
+ # Generate summary for each teacher in the specified range
48
+ for i in range(start_teacher, end_teacher + 1):
49
+ if 'Teacher '+str(i) in df.columns and not df['Teacher '+str(i)].isnull().all():
50
+ teacher_feedback = df['Teacher '+str(i)].dropna().str.cat(sep=' ')
51
+ st.text("Summary of feedback for :"+'Teacher '+str(i))
52
+ st.text(generate_summary(teacher_feedback))
53
+
54
+ else:
55
+ st.text("No feedback available for Teacher"+str(i))
requirements.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ pandas
2
+ streamlit
3
+ numpy
4
+ seaborn
5
+ matplotlib
6
+ nltk
7
+ sentence_transformers
8
+ scikit-learn