File size: 1,792 Bytes
e4d5a8e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
57
58
59
60
61
import gradio as gr
import google.generativeai as genai
import spacy
import yake

# Initialize Google Gemini AI
genai.configure(api_key="AIzaSyDnx_qUjGTFG1pv1otPUhNt_bGGv14aMDI")

# Load NLP Model
nlp = spacy.load("en_core_web_sm")

def analyze_text(text):
    """Perform AI-driven text analysis."""
    if not text:
        return "Please enter some text."

    # Summarization using Gemini AI
    prompt = f"Summarize this text:\n{text}"
    response = genai.generate_text(prompt)
    summary = response.text.strip() if response.text else "Error in summarization."

    # Sentiment Analysis
    sentiment = "Positive" if "good" in text.lower() else "Negative"  # Basic example

    # Keyword Extraction
    kw_extractor = yake.KeywordExtractor()
    keywords = [kw[0] for kw in kw_extractor.extract_keywords(text)[:5]]

    # Named Entity Recognition (NER)
    doc = nlp(text)
    entities = {ent.text: ent.label_ for ent in doc.ents}

    # AI-Generated Report
    report = f"""
    **Summary:** {summary}
    **Sentiment:** {sentiment}
    **Keywords:** {', '.join(keywords)}
    **Entities:** {entities if entities else 'None'}
    """

    return report

# Gradio Interface
with gr.Blocks() as demo:
    gr.Markdown("# AI-Powered Text & File Analyzer 🚀")
    input_text = gr.Textbox(label="Enter Text or Upload .txt File")
    file_input = gr.File(label="Upload .txt File", file_types=[".txt"])
    analyze_button = gr.Button("Analyze")
    output = gr.Markdown()
    
    def process_input(text, file):
        """Process text from input or file."""
        if file:
            with open(file.name, "r") as f:
                text = f.read()
        return analyze_text(text)

    analyze_button.click(process_input, inputs=[input_text, file_input], outputs=output)

demo.launch()