File size: 2,060 Bytes
51e360e
 
63cec85
51e360e
 
63cec85
51e360e
 
63cec85
 
 
51e360e
 
63cec85
 
51e360e
 
63cec85
51e360e
 
63cec85
 
 
 
51e360e
63cec85
 
 
 
 
 
 
51e360e
 
 
 
63cec85
51e360e
63cec85
51e360e
63cec85
 
51e360e
63cec85
51e360e
 
 
63cec85
51e360e
 
 
 
63cec85
 
 
 
 
 
 
 
51e360e
 
 
 
 
 
63cec85
51e360e
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
62
63
64
65
66
67
68
from fastapi import APIRouter, Query, HTTPException
from textblob import TextBlob
from langdetect import detect
import time

# Cria um roteador para a API de análise de texto
router = APIRouter()

@router.get("/textclas/")
def analyze_text(
    text: str = Query(..., description="Texto a ser analisado")
):
    """
    Analisa o texto fornecido para sentimento, correção ortográfica, 
    contagem de palavras e sentenças, e detecta o idioma.
    """
    try:
        # Cria o objeto TextBlob
        blob = TextBlob(text)

        # Início da análise
        start_time = time.time()

        # Análise de Sentimento
        sentiment = blob.sentiment
        polarity = sentiment.polarity
        subjectivity = sentiment.subjectivity
        sentiment_label = "Neutral"
        if polarity > 0:
            sentiment_label = "Positive"
        elif polarity < 0:
            sentiment_label = "Negative"

        # Correção ortográfica
        corrected_text = str(blob.correct())

        # Contagem de palavras e sentenças
        word_count = len(text.split())
        sentence_count = len(blob.sentences)

        # Detecção de idioma
        detected_language = detect(text)

        # Tempo de processamento
        end_time = time.time()
        processing_time = round(end_time - start_time, 4)

        # Retorna a resposta com dados adicionais
        return {
            "original_text": text,
            "corrected_text": corrected_text,
            "sentiment": {
                "polarity": polarity,
                "subjectivity": subjectivity,
                "label": sentiment_label
            },
            "word_count": word_count,
            "sentence_count": sentence_count,
            "detected_language": detected_language,
            "processing_time_seconds": processing_time
        }

    except Exception as e:
        # Em caso de erro, retorna uma mensagem de erro
        raise HTTPException(
            status_code=500,
            detail=f"An error occurred during text analysis: {str(e)}"
        )