0% acharam este documento útil (0 voto)
4 visualizações2 páginas

Back-End (Python) Chatbot

O documento descreve um aplicativo web em Flask que utiliza um arquivo JSON para responder perguntas frequentes (FAQ) com base na similaridade textual. Ele carrega dados de um arquivo 'faq.json', processa perguntas do usuário e retorna respostas apropriadas utilizando a biblioteca RapidFuzz. O servidor Flask é configurado para rodar na porta 5000, permitindo conexões externas.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
4 visualizações2 páginas

Back-End (Python) Chatbot

O documento descreve um aplicativo web em Flask que utiliza um arquivo JSON para responder perguntas frequentes (FAQ) com base na similaridade textual. Ele carrega dados de um arquivo 'faq.json', processa perguntas do usuário e retorna respostas apropriadas utilizando a biblioteca RapidFuzz. O servidor Flask é configurado para rodar na porta 5000, permitindo conexões externas.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

# Importa bibliotecas padrão do Python

import json # Para trabalhar com arquivos JSON


import os # Para manipular caminhos de arquivos

# Importa módulos do Flask para criar a aplicação web


from flask import Flask, render_template, request, jsonify

# Importa funções do RapidFuzz para cálculo de similaridade textual


from rapidfuzz import fuzz, process

# Cria a instância principal da aplicação Flask


app = Flask(__name__)

# Define o caminho absoluto para o diretório onde o script está localizado


BASE_DIR = [Link]([Link](__file__))

# Monta o caminho completo para o arquivo '[Link]' dentro da pasta 'static'


CAMINHO_FAQ = [Link](BASE_DIR, 'static', '[Link]')

# Abre o arquivo JSON contendo a base de conhecimento (FAQ) e carrega os dados


with open(CAMINHO_FAQ, 'r', encoding='utf-8') as f:
base_conhecimento = [Link](f)

# Função para encontrar a resposta mais apropriada baseada na pergunta do usuário


def encontrar_resposta(pergunta_usuario, dados):
todas_perguntas = [] # Lista que irá conter todas as perguntas do FAQ
mapa_respostas = {} # Dicionário que mapeia cada pergunta à sua resposta

# Itera por todas as categorias e itens do JSON


for categoria in dados:
for item in dados[categoria]:
pergunta = item["pergunta"]
resposta = item["resposta"]

todas_perguntas.append(pergunta) # Adiciona a pergunta à lista


mapa_respostas[pergunta] = resposta # Mapeia pergunta → resposta

# Usa RapidFuzz para encontrar a pergunta mais parecida com a do usuário


melhor_correspondencia = [Link](
pergunta_usuario, # Pergunta do usuário
todas_perguntas, # Lista de perguntas conhecidas
scorer=[Link] # Algoritmo de comparação baseado em pesos
)

# Verifica se encontrou uma correspondência suficientemente boa


if melhor_correspondencia and melhor_correspondencia[1] > 80:
return mapa_respostas[melhor_correspondencia[0]] # Retorna a resposta
else:
# Se a similaridade for baixa, retorna uma mensagem padrão
return "Desculpe, não entendi sua dúvida. Pode reformular?"
# Rota principal: renderiza o arquivo HTML principal do site
@[Link]('/')
def index():
return render_template('[Link]')

# Rota que recebe a pergunta via POST e responde com base no JSON
@[Link]('/responder', methods=['POST'])
def responder():
data = request.get_json() # Lê o conteúdo JSON enviado pelo front-end
msg = [Link]('mensagem', '') # Extrai a chave 'mensagem'
resposta = encontrar_resposta(msg, base_conhecimento) # Busca a resposta
return jsonify({"resposta": resposta}) # Retorna a resposta no formato JSON

# Faz o servidor Flask rodar se o script for executado diretamente


if __name__ == '__main__':
[Link](host='[Link]', port=5000) # Executa na porta 5000 e aceita conexões externas

Você também pode gostar