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?
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?
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!