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)}"
) |