Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| import spacy | |
| import gradio as gr | |
| import csv | |
| from nrclex import NRCLex | |
| from transformers import pipeline | |
| from rake_nltk import Rake | |
| # Initialize objects | |
| emotion_pipeline = pipeline('sentiment-analysis', model='nlptown/bert-base-multilingual-uncased-sentiment') | |
| nlp = spacy.load('en_core_web_sm') | |
| rake = Rake() | |
| def process_csv(file): | |
| reader = csv.DictReader(file) | |
| emotions = [] | |
| sentiments = [] | |
| entities = [] | |
| keywords = [] | |
| for row in reader: | |
| text = row['Content'] # Replace 'Content' with the correct column name | |
| nrc_obj = NRCLex(text) | |
| emotion_scores = nrc_obj.affect_frequencies | |
| emotions.append(emotion_scores) | |
| sentiment = analyze_emotion(text) | |
| sentiments.append(sentiment) | |
| entities.append(analyze_entities(text)) | |
| keywords.append(extract_keywords(text)) # Extract keywords for each text | |
| fieldnames = reader.fieldnames + list(emotions[0].keys()) + ['sentiment', 'entities', 'keywords'] | |
| output = [] | |
| for row, emotion_scores, sentiment, entity, keyword in zip(reader, emotions, sentiments, entities, keywords): | |
| row.update(emotion_scores) # Update the row dictionary with emotion scores | |
| row.update({'sentiment': sentiment, 'entities': entity, 'keywords': keyword}) # Update the row dictionary with sentiment, entities and keywords | |
| output.append({field: row.get(field, '') for field in fieldnames}) # Write row with matching fields or empty values | |
| return pd.DataFrame(output).to_csv(index=False) | |
| def analyze_emotion(text): | |
| result = emotion_pipeline(text)[0] | |
| sentiment = result['label'] | |
| return sentiment | |
| def analyze_entities(text): | |
| doc = nlp(text) | |
| entities = [(ent.text, ent.label_) for ent in doc.ents] | |
| return entities | |
| def extract_keywords(text): | |
| rake.extract_keywords_from_text(text) | |
| return rake.get_ranked_phrases() # Extract keywords from text | |
| iface = gr.Interface(fn=process_csv, inputs=gr.inputs.File(type='csv'), outputs=gr.outputs.File()) | |
| iface.launch() | |