1
resposta

Erro ao inserir a senha na API criada

Ao inserir a senha na API: [http://127.0.0.1:5000/sentimento/Python é ótimo] o seguinte erro aparece: urllib.error.HTTPError. Como posso corrigir?

1 resposta

Oii Tifane, como você está?

Peço desculpas pela demora em obter um retorno.

A biblioteca TextBlob passou por mudanças que fizeram com que o recurso de tradução não funcione da mesma forma apresentada no código disponível para download.

Como solução alternativa, utilize a biblioteca googletrans para efetuar a tradução e após isso, passe o texto traduzido para a biblioteca TextBlob para a análise de sentimento.

Abaixo o passo a passo para fazer isso:

1 - Instale a biblioteca googletrans:

pip install googletrans==3.1.0a0

2 - Adicione a importação desta biblioteca no cabeçalho do arquivo:

from googletrans import Translator

3 - Crie um objeto Translator logo abaixo da criação da variável app:

translator = Translator()

4 - Já no endpoint /'sentimento/<frase>', faremos a tradução da frase através do método translate e logo após isso, passamos a frase traduzida para a TextBlob:

frase_en = translator.translate(frase, dest='en')
tb_en = TextBlob(frase_en.text)

O código completo modificado ficará da seguinte forma:

from flask import Flask, request, jsonify
from flask_basicauth import BasicAuth
from textblob import TextBlob
from sklearn.linear_model import LinearRegression
from googletrans import Translator
import pickle, os

colunas = ['tamanho','ano','garagem']
modelo = pickle.load(open('../../models/modelo.sav','rb'))

app = Flask(__name__)
translator = Translator()

app.config['BASIC_AUTH_USERNAME'] = os.environ.get('BASIC_AUTH_USERNAME')
app.config['BASIC_AUTH_PASSWORD'] = os.environ.get('BASIC_AUTH_PASSWORD')

basic_auth = BasicAuth(app)

@app.route('/')
def home():
    return "Minha primeira API."

@app.route('/sentimento/<frase>')
def sentimento(frase):
    frase_en = translator.translate(frase, dest='en')
    tb_en = TextBlob(frase_en.text)
    polaridade = tb_en.sentiment.polarity
    return "polaridade: {}".format(polaridade)

@app.route('/cotacao/', methods=['POST'])
@basic_auth.required
def cotacao():
    dados = request.get_json()
    dados_input = [dados[col] for col in colunas]
    preco = modelo.predict([dados_input])
    return jsonify(preco=preco[0])

app.run(debug=True, host='0.0.0.0')

Após essas modificações tente executar o código novamente.

Qualquer dúvida fico a disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!