Merge pull request 'cleanup' (#15) from cleanup into master
Reviewed-on: #15
This commit is contained in:
commit
7edaac24f1
4
prepare_app.py
Normal file
4
prepare_app.py
Normal file
@ -0,0 +1,4 @@
|
||||
import src.model.prepare_llm as prepare_llm
|
||||
|
||||
prepare_llm.prepare_mistral()
|
||||
|
56
readme.md
56
readme.md
@ -1,6 +1,52 @@
|
||||
System rekomendacyjny filmów dla opisu wyrażonego językiem naturalnym - "Filmosfera"
|
||||
# 🎥 Filmosfera 🎥
|
||||
**System rekomendacyjny filmów dla opisu wyrażonego językiem naturalnym**
|
||||
|
||||
Jak uruchomić?
|
||||
- python 3.12.7
|
||||
- pip install requirements.txt
|
||||
By zdobyć prawidłową listę filmów, scrappera należy uruchamiać z włączonym VPN na kraj anglojęzyczny.
|
||||
---
|
||||
|
||||
## 🚀 Jak uruchomić? 🚀
|
||||
|
||||
### Wymagania przed uruchomieniem:
|
||||
- **Python**: <= 3.12.x
|
||||
- **Wirtualne środowisko Python**:
|
||||
Upewnij się, że wirtualne środowisko jest utworzone i aktywowane, aby zapewnić zgodność dodatkowych bibliotek.
|
||||
Z aktywowanego środowiska uruchom:
|
||||
pip install -r requirements.txt
|
||||
|
||||
- Następnie uruchom skrypt `prepare_app.py`, aby pobrać wymaganego do działania projektu LLM'a.
|
||||
|
||||
### Uruchamianie Filmosfery w celu podpowiedzi filmowych:
|
||||
1. W katalogu głównym projektu wywołaj komendę:
|
||||
python src/app/main.py
|
||||
2. Poczekaj na uruchomienie się serwera.
|
||||
3. Otwórz stronę internetową w przeglądarce, korzystając z adresu podanego w terminalu (domyślnie: [http://127.0.0.1:5000](http://127.0.0.1:5000)).
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Samodzielne zdobycie oraz przygotowanie danych 🛠️
|
||||
|
||||
### Zdobycie danych:
|
||||
Aby uruchomić część projektu związaną ze zdobyciem danych (folder `/src/data_scrapper`):
|
||||
💡 *Proces trwa około 10 godzin ze względu na ostrożne podejście do rate limitów serwisu IMDB.* 💡
|
||||
|
||||
#### Wymagania:
|
||||
- **VPN**: Ustaw na kraj anglojęzyczny, aby:
|
||||
- IMDB automatycznie nie tłumaczył niektórych części stron.
|
||||
- Zapewnić wyświetlanie anglojęzycznych plakatów filmowych (polskie IP wyświetla polskie plakaty).
|
||||
|
||||
#### Kroki:
|
||||
1. Uruchom z katalogu głównego skrypt `scrapper.py` z `/src/data_scrapper` , aby utworzyć bazę filmową Filmosfery:
|
||||
python src/data_scrapper/scrapper.py
|
||||
|
||||
2. Uruchom z katalogu głównego skrypt `get_images` z foldeu `/src/data_scrapper`, aby:
|
||||
- Pobrać plakaty filmów.
|
||||
- Zaktualizować bazę filmową, aby zawierała pobrane plakaty:
|
||||
python src/data_scrapper/get_images.py
|
||||
|
||||
### Preprocessing danych (folder `/src/process_data`):
|
||||
1. Uruchom kolejno z katalogu głównego znajdujące się w folderze : `/src/process_data` następujące skrypty:
|
||||
- python preprocess_data.py
|
||||
- python make_actors_set.py
|
||||
- python make_directors_set.py
|
||||
- python make_genres_set.py
|
||||
|
||||
Po zakończeniu, dane są gotowe do wykorzystania w Filmosferze.
|
BIN
requirements.txt
BIN
requirements.txt
Binary file not shown.
@ -22,14 +22,15 @@ def get_image(url,id):
|
||||
if(response.status_code!=200):
|
||||
return default_img_path
|
||||
# Save image
|
||||
with open(f"assets/static/{id}.jpg", 'wb') as f:
|
||||
with open(f"src/app/assets/static/{id}.jpg", 'wb') as f:
|
||||
f.write(response.content)
|
||||
print("Image saved")
|
||||
return f"assets/static/{id}.jpg"
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return default_img_path
|
||||
|
||||
data_path = "../data/movies_data.csv"
|
||||
data_path = "data/movies_data.csv"
|
||||
|
||||
# Edit movies_data.csv to include image path
|
||||
|
||||
@ -39,5 +40,5 @@ def get_images(data):
|
||||
|
||||
# Uncomment the below line to get images
|
||||
|
||||
#get_images(pd.read_csv(data_path))
|
||||
get_images(pd.read_csv(data_path))
|
||||
|
||||
|
@ -4,8 +4,6 @@ import config
|
||||
import json
|
||||
import re
|
||||
import pandas as pd
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.chrome.options import Options
|
||||
import html
|
||||
"""
|
||||
QUICK INFO
|
||||
|
@ -72,14 +72,14 @@ sentence_transformer_embeddings_path = "../../data/sentence_transformer_embeddin
|
||||
sentence_bert_embeddings_path = "../../data/sentence_bert_embeddings.pkl"
|
||||
alibaba_embeddings_path = "../../data/alibaba_embeddings.pkl"
|
||||
|
||||
"""print("Generating embeddings with lightweight model all-MiniLM-L6-v2 ...")
|
||||
print("Generating embeddings with lightweight model all-MiniLM-L6-v2 ...")
|
||||
lightweight_generate_and_save_embeddings(data_path, sentence_transformer_embeddings_path, model_name='all-MiniLM-L6-v2')
|
||||
|
||||
print("Generating embeddings with BERT...")
|
||||
generate_and_save_embeddings(data_path, bert_embeddings_path, model_name='bert-base-uncased')
|
||||
|
||||
print("Generating embeddings with Sentence BERT...")
|
||||
lightweight_generate_and_save_embeddings(data_path, sentence_bert_embeddings_path, model_name='paraphrase-mpnet-base-v2')"""
|
||||
lightweight_generate_and_save_embeddings(data_path, sentence_bert_embeddings_path, model_name='paraphrase-mpnet-base-v2')
|
||||
|
||||
print("Generating embeddings with Alibaba model...")
|
||||
generate_and_save_embeddings_with_trust_remote_code(data_path, alibaba_embeddings_path, model_name='Alibaba-NLP/gte-large-en-v1.5')
|
@ -60,8 +60,8 @@ def prepare_set_from_list(data_path, save_path=None):
|
||||
return
|
||||
|
||||
|
||||
data_path = "../../data/movies_data.csv"
|
||||
save_path = "../../data/actors_set.csv"
|
||||
data_path = "data/movies_data.csv"
|
||||
save_path = "data/actors_set.csv"
|
||||
|
||||
prepare_set_with_regex(data_path, save_path)
|
||||
# prepare_set_from_list(data_path, save_path)
|
||||
|
@ -20,7 +20,7 @@ def prepare_set_from_list(data_path, save_path=None):
|
||||
writer.writerow([director])
|
||||
|
||||
|
||||
data_path = "../../data/movies_data.csv"
|
||||
save_path = "../../data/directors_set.csv"
|
||||
data_path = "data/movies_data.csv"
|
||||
save_path = "data/directors_set.csv"
|
||||
|
||||
prepare_set_from_list(data_path, save_path)
|
@ -55,8 +55,8 @@ def prepare_set_from_list(data_path, save_path=None):
|
||||
return
|
||||
|
||||
|
||||
data_path = "../../data/movies_data.csv"
|
||||
save_path = "../../data/genres_set.csv"
|
||||
data_path = "data/movies_data.csv"
|
||||
save_path = "data/genres_set.csv"
|
||||
|
||||
prepare_set_with_regex(data_path, save_path)
|
||||
# prepare_set_from_list(data_path, save_path)
|
@ -59,8 +59,8 @@ def load_and_preprocess(data_path, save_path=None):
|
||||
return df
|
||||
|
||||
|
||||
data_path = "../../data/movies_data.csv"
|
||||
save_path = "../../data/preprocessed_data.csv"
|
||||
data_path = "data/movies_data.csv"
|
||||
save_path = "data/preprocessed_data.csv"
|
||||
|
||||
df = load_and_preprocess(data_path, save_path)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user