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