Spaces:
Sleeping
Sleeping
import gradio as gr | |
from collections import Counter | |
import re | |
import textstat | |
from transformers import pipeline | |
from langdetect import detect | |
# Load a summarization model | |
summarizer = pipeline("summarization") | |
def word_and_char_counter(text): | |
# Clean and split text into words and sentences | |
words = re.findall(r'\w+', text.lower()) # Remove punctuation and make lowercase | |
sentences = re.split(r'[.!?]+', text) # Split text into sentences | |
num_sentences = len(sentences) - 1 # Adjusting for the last split being empty if text ends with a punctuation | |
num_words = len(words) | |
num_chars = len("".join(words)) # Count characters excluding spaces and punctuation | |
# Count the frequency of each word | |
word_freq = Counter(words) | |
most_common_words = word_freq.most_common(3) | |
unique_words = [word for word, count in word_freq.items() if count == 1] | |
# Calculate Flesch Reading Ease score | |
reading_ease = textstat.flesch_reading_ease(text) | |
# Detect language of the text | |
language = detect(text) | |
# Generate summary of the text using the transformer model | |
summary = summarizer(text, max_length=130, min_length=30, do_sample=False)[0]['summary_text'] | |
# Format the results | |
freq_results = ', '.join([f"'{word}': {count}" for word, count in most_common_words]) | |
unique_words_result = ', '.join(unique_words) | |
return f"Language: {language}. {num_sentences} sentences, {num_words} words, {num_chars} characters. Most common words: {freq_results}. Unique words: {unique_words_result}. Readability (Flesch Reading Ease): {reading_ease:.2f}. Summary: {summary}" | |
# Define your interface | |
interface = gr.Interface( | |
fn=word_and_char_counter, | |
inputs=gr.Textbox(lines=4, placeholder="Type something here..."), | |
outputs="text", | |
title="Comprehensive Text Analysis with Language Detection", | |
description="This app provides detailed analysis including language detection, sentence, word, and character counts, lists the most common and unique words, calculates readability, and provides a concise summary of the text." | |
) | |
# Launch the app | |
if __name__ == "__main__": | |
interface.launch() | |