File size: 4,195 Bytes
4423396
 
 
 
 
 
 
648362a
 
 
 
 
 
faf7270
 
 
 
 
 
648362a
 
 
 
 
 
 
 
 
 
 
faf7270
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
title: Book Recommender 01  # Your Space's title
emoji: 📊                  # An emoji for your Space (optional)
colorFrom: red             # Color for the Space's theme (optional)
colorTo: gray              # Color for the Space's theme (optional)
sdk: gradio                # Important: Specifies the Gradio SDK
app_file: app.py           # The name of your main Python file (case-sensitive!)
# sdk_version: 5.14.0       # Remove this line unless you have a VERY specific reason to pin an older version
# Book Recommender App

This is a book recommendation app built using Python, scikit-learn, and Gradio. It uses TF-IDF vectorization and cosine similarity to recommend books based on their summaries.

## Functionality

*   **File Upload and Processing:** Users can upload CSV or Excel files containing book data (title and summary). This uses the `pandas` library.
*   **Data Preprocessing:** Handles missing values and removes duplicates using `pandas`.
*   **TF-IDF Vectorization:** Converts book summaries to numerical vectors using `scikit-learn`'s `TfidfVectorizer`.
*   **Similarity Calculation:** Calculates cosine similarity between TF-IDF vectors using `scikit-learn`.
*   **Book Recommendation:** Recommends similar books based on a user-provided title.
*   **User Interface:** Provides an interactive interface using `gradio`.

## Dependencies

*   **pandas:** For data loading, manipulation, and preprocessing (CSV and Excel file handling).
*   **scikit-learn:** For TF-IDF vectorization and cosine similarity calculation.
*   **gradio:** For creating the interactive user interface.

## How to Run Locally

1.  **Clone the repository:**

    ```bash
    git clone [https://github.com/](https://github.com/)<your_username>/<your_repo_name>.git  # Replace with your repo URL
    cd <your_repo_name>
    ```

2.  **Create a virtual environment (recommended):**

    ```bash
    python3 -m venv .venv       # Create a virtual environment (Linux/macOS)
    source .venv/bin/activate  # Activate the environment (Linux/macOS)
    .venv\Scripts\activate    # Activate the environment (Windows)
    ```

3.  **Install the dependencies:**

    ```bash
    pip install -r requirements.txt
    ```

4.  **Run the app:**

    ```bash
    python app.py
    ```

5.  **Open the app in your browser:** Gradio will provide a URL (usually `http://127.0.0.1:7860/`).

## How to Deploy on Hugging Face Spaces

1.  **Create a Hugging Face account:** If you don't have one, sign up at [huggingface.co](https://huggingface.co).

2.  **Create a new Space:**
    *   Click on "New Space."
    *   Give your Space a name.
    *   Select the "Gradio" SDK.
    *   Choose a hardware and storage upgrade if needed.
    *   Select a license (e.g., MIT).
    *   Click "Create Space."

3.  **Push your code to the Space:**
    *   Clone the newly created Git repository:

        ```bash
        git clone [https://huggingface.co/spaces/](https://huggingface.co/spaces/)<your_username>/<your_space_name>
        cd <your_space_name>
        ```

    *   Copy all the necessary files (`app.py`, `requirements.txt`, your data file, `README.md`, `config.yaml`) into the cloned repository.
    *   Commit and push your changes:

        ```bash
        git add .
        git commit -m "Initial commit"
        git push origin main
        ```

4.  **Wait for the build:** Hugging Face Spaces will automatically build your app. Monitor the build progress on your Space page.

5.  **Access your deployed app:** Once the build is successful, your app will be live at a URL provided by Hugging Face.

## Data File

The app requires a CSV or Excel file containing book data, including at least the `title` and `summary` columns.  The file should be named (e.g., `books.csv`) and placed in the same directory as `app.py`. The path to the file is specified in the `load_data` method of the `BookRecommender` class within `app.py`.

## Example Usage

1.  Upload your book data file.
2.  Enter the title of a book you like.
3.  The app will recommend similar books.

## Contributing

Contributions are welcome! Please open an issue or submit a pull request.

## License

[MIT License](LICENSE) (Or your chosen license)