newapi / routers /textclas.py
habulaj's picture
Update routers/textclas.py
63cec85 verified
raw
history blame
2.06 kB
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)}"
)