Final Code

This commit is contained in:
rota3015 2024-05-04 23:30:44 +00:00
parent e6f05a9465
commit 98c487f4cb

View File

@ -1,34 +1,19 @@
import pandas as pd import pandas as pd
import mysql.connector
import os
from flask_cors import CORS from flask_cors import CORS
from flask import ( from flask import (
Blueprint, request, jsonify Blueprint, request, jsonify
) )
conn = None
bp = Blueprint('routes', __name__,) bp = Blueprint('routes', __name__,)
df = pd.read_csv('rule.csv')
user_input = "Improve the living and working conditions of everyone everywhere Fair and humane laws and practices" @bp.route('/chat/request', methods=('GET', 'POST'))
compare_column1 = df['summary']
compare_column2 = df['modules']
return_column = df['name']
@bp.route('/request', methods=('GET', 'POST'))
def handle_request(): def handle_request():
#user_input = request.args.get('question')
#closest_value, ruleId = find_closest_match(user_input, df['summary'], df['modules'], df['name'], df['ruleID'])
#finalValue = "https://communityrule.info/create/?r=" + str(ruleId)
#response_message = f"{closest_value}"
#response_data = {
# 'community': response_message,
# 'link': finalValue
#}
#return jsonify(response_data)
user_input = request.args.get('question') user_input = request.args.get('question')
top_matches = find_closest_match(user_input, df['summary'], df['modules'], df['name'], df['ruleID']) top_matches = find_closest_match(user_input)
recommendations = [] recommendations = []
for similarity, name, ruleId in top_matches: for similarity, name, ruleId in top_matches:
@ -38,29 +23,38 @@ def handle_request():
'link': finalValue, 'link': finalValue,
}) })
print(jsonify(recommendations))
return jsonify(recommendations) return jsonify(recommendations)
def get_db_connection():
global conn
if conn is None or not conn.is_connected():
conn = mysql.connector.connect(
host=os.getenv('CLOUDRON_MYSQL_HOST'),
user=os.getenv('CLOUDRON_MYSQL_USERNAME'),
port=os.getenv('CLOUDRON_MYSQL_PORT'),
password=os.getenv('CLOUDRON_MYSQL_PASSWORD'),
database=os.getenv('CLOUDRON_MYSQL_DATABASE')
)
print("Database connection was successful")
#finalValue = "https://communityrule.info/create/?r=" + str(ruleId) return conn
#response_message = f"{closest_value}"
#response_data = {
# 'community': response_message,
# 'link': finalValue
#}
#return jsonify(response_data) def find_closest_match(user_input):
def find_closest_match(user_input, compare_column1_values, compare_column2_values, return_column_values, rule_id_values): conn = get_db_connection()
print(user_input)
max_similarity_curr = -1 max_similarity_curr = -1
closest_value = None closest_value = None
rule_id = None rule_id = None
user_tokens = user_input.split() user_tokens = user_input.split()
results = [] results = []
cursor = conn.cursor()
cursor.execute("SELECT summary, modules, name, rule_id FROM rules")
rows = cursor.fetchall()
cursor.close()
# Compare user input with each value in the compare columns # Compare user input with each value in the compare columns
for compare_value1, compare_value2, return_value, ruleId in zip(compare_column1_values, compare_column2_values, return_column_values, rule_id_values): for compare_value1, compare_value2, return_value, ruleId in rows:
# Convert compare_value2 to string if it's a float # Convert compare_value2 to string if it's a float
if isinstance(compare_value1, float): if isinstance(compare_value1, float):
compare_value1 = str(compare_value1) compare_value1 = str(compare_value1)
@ -77,7 +71,7 @@ def find_closest_match(user_input, compare_column1_values, compare_column2_value
# Take the maximum similarity between similarity1 and similarity2 # Take the maximum similarity between similarity1 and similarity2
max_similarity_curr = max(similarity1, similarity2) max_similarity_curr = max(similarity1, similarity2)
print(similarity1, similarity2)
# Update closest value if current similarity is greater # Update closest value if current similarity is greater
#if max_similarity_curr > max_similarity: #if max_similarity_curr > max_similarity:
#max_similarity = max_similarity_curr #max_similarity = max_similarity_curr
@ -100,4 +94,5 @@ def similarity_score(set1, set2):
return 0 return 0
else: else:
return intersection / union return intersection / union