Spaces:
Sleeping
Sleeping
import pandas as pd | |
from rapidfuzz import process | |
# Load the dataset | |
df = pd.read_csv("./sci_fi_books.csv") | |
# Function to get author by book title | |
def get_author_by_title(title): | |
match = df[df["title"].str.lower() == title.lower()] | |
if not match.empty: | |
return match.iloc[0]["author"] | |
return f"Author not found for book '{title}'." | |
# Function to get year by book title | |
def get_year_by_title(title): | |
match = df[df["title"].str.lower() == title.lower()] | |
if not match.empty: | |
return int(match.iloc[0]["year"]) | |
return f"Year not found for book '{title}'." | |
# Function to get summary by book title | |
def get_summary_by_title(title): | |
match = df[df["title"].str.lower() == title.lower()] | |
if not match.empty: | |
return match.iloc[0]["summary"] | |
return f"Summary not found for book '{title}'." | |
# Function to find a book by summary similarity | |
def find_book_by_description(description): | |
summaries = df["summary"].tolist() | |
match = process.extractOne(description, summaries) | |
if match and match[1] > 80: # Threshold for similarity | |
matched_title = df[df["summary"] == match[0]]["title"].iloc[0] | |
return f"The closest book based on your description is '{matched_title}'." | |
return "No book matches your description closely enough." |