rioanggara commited on
Commit
8595152
·
1 Parent(s): 58ef530

Your commit message

Browse files
Files changed (1) hide show
  1. app.py +32 -7
app.py CHANGED
@@ -1,27 +1,52 @@
1
  import gradio as gr
2
  from collections import Counter
3
  import re
 
 
 
 
 
 
 
4
 
5
  def word_and_char_counter(text):
6
- # Clean and split text into words
7
  words = re.findall(r'\w+', text.lower()) # Remove punctuation and make lowercase
 
 
8
  num_words = len(words)
9
  num_chars = len("".join(words)) # Count characters excluding spaces and punctuation
10
 
11
  # Count the frequency of each word
12
- word_freq = Counter(words).most_common(3)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
- # Format the word frequency results
15
- freq_results = ', '.join([f"'{word}': {count}" for word, count in word_freq])
16
- return f"{num_words} words, {num_chars} characters. Most common words: {freq_results}"
 
 
17
 
18
  # Define your interface
19
  interface = gr.Interface(
20
  fn=word_and_char_counter,
21
  inputs=gr.Textbox(lines=4, placeholder="Type something here..."),
22
  outputs="text",
23
- title="Word and Character Counter",
24
- description="Counts the words and characters in your text and shows the most common words."
25
  )
26
 
27
  # Launch the app
 
1
  import gradio as gr
2
  from collections import Counter
3
  import re
4
+ from textblob import TextBlob
5
+ import textstat
6
+ from transformers import pipeline
7
+ from langdetect import detect
8
+
9
+ # Load a summarization model
10
+ summarizer = pipeline("summarization")
11
 
12
  def word_and_char_counter(text):
13
+ # Clean and split text into words and sentences
14
  words = re.findall(r'\w+', text.lower()) # Remove punctuation and make lowercase
15
+ sentences = re.split(r'[.!?]+', text) # Split text into sentences
16
+ num_sentences = len(sentences) - 1 # Adjusting for the last split being empty if text ends with a punctuation
17
  num_words = len(words)
18
  num_chars = len("".join(words)) # Count characters excluding spaces and punctuation
19
 
20
  # Count the frequency of each word
21
+ word_freq = Counter(words)
22
+ most_common_words = word_freq.most_common(3)
23
+ unique_words = [word for word, count in word_freq.items() if count == 1]
24
+
25
+ # Analyze sentiment
26
+ sentiment = TextBlob(text).sentiment
27
+
28
+ # Calculate Flesch Reading Ease score
29
+ reading_ease = textstat.flesch_reading_ease(text)
30
+
31
+ # Detect language of the text
32
+ language = detect(text)
33
+
34
+ # Generate summary of the text using the transformer model
35
+ summary = summarizer(text, max_length=130, min_length=30, do_sample=False)[0]['summary_text']
36
 
37
+ # Format the results
38
+ freq_results = ', '.join([f"'{word}': {count}" for word, count in most_common_words])
39
+ unique_words_result = ', '.join(unique_words)
40
+ sentiment_text = 'Positive' if sentiment.polarity > 0 else 'Negative' if sentiment.polarity < 0 else 'Neutral'
41
+ return f"Language: {language}. {num_sentences} sentences, {num_words} words, {num_chars} characters. Most common words: {freq_results}. Unique words: {unique_words_result}. Sentiment: {sentiment_text}. Readability (Flesch Reading Ease): {reading_ease:.2f}. Summary: {summary}"
42
 
43
  # Define your interface
44
  interface = gr.Interface(
45
  fn=word_and_char_counter,
46
  inputs=gr.Textbox(lines=4, placeholder="Type something here..."),
47
  outputs="text",
48
+ title="Comprehensive Text Analysis with Language Detection",
49
+ description="This app provides detailed analysis including language detection, sentence, word, and character counts, lists the most common and unique words, analyzes sentiment, calculates readability, and provides a concise summary of the text."
50
  )
51
 
52
  # Launch the app