mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-07-04 14:43:08 +02:00
Cachowanie works dla AI
This commit is contained in:
parent
f702d18251
commit
a1f48c2c4f
15
movie_recommendations/Test.http
Normal file
15
movie_recommendations/Test.http
Normal file
@ -0,0 +1,15 @@
|
||||
### GET request to example server
|
||||
GET http://127.0.0.1:5000/boop
|
||||
|
||||
###
|
||||
|
||||
POST http://127.0.0.1:5000/api/v3/AI_recommendations
|
||||
Content-Type: application/json
|
||||
|
||||
[
|
||||
49026,
|
||||
155,
|
||||
312113
|
||||
]
|
||||
|
||||
###
|
||||
@ -1,8 +1,26 @@
|
||||
import hashlib
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
from ast import literal_eval
|
||||
from sklearn.feature_extraction.text import CountVectorizer
|
||||
from sklearn.metrics.pairwise import cosine_similarity
|
||||
from flask import Flask, request, jsonify
|
||||
from flask_caching import Cache
|
||||
|
||||
|
||||
config = {
|
||||
"DEBUG": True, # some Flask specific configs
|
||||
"CACHE_TYPE": "SimpleCache",
|
||||
"CACHE_DEFAULT_TIMEOUT": 300
|
||||
}
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
app.config.from_mapping(config)
|
||||
cache = Cache(app)
|
||||
|
||||
|
||||
def get_director(x):
|
||||
@ -104,16 +122,38 @@ class MovieRecommender:
|
||||
if recommended_id in movie_ids:
|
||||
continue
|
||||
|
||||
if recommended_movies.get(recommended_id) is None:
|
||||
recommended_movies[recommended_id] = sim_score / len(movie_ids)
|
||||
if recommended_movies.get(int(recommended_id)) is None:
|
||||
recommended_movies[int(recommended_id)] = float(round((sim_score / len(movie_ids)), 4))
|
||||
else:
|
||||
recommended_movies[recommended_id] += sim_score / len(movie_ids)
|
||||
recommended_movies[int(recommended_id)] += float(round((sim_score / len(movie_ids)), 4))
|
||||
return recommended_movies
|
||||
|
||||
|
||||
recommender = MovieRecommender()
|
||||
recommender.fit('movie_recommendations/datasets/tmdb_5000_credits.csv',
|
||||
'movie_recommendations/datasets/tmdb_5000_movies.csv')
|
||||
|
||||
|
||||
def make_cache_key():
|
||||
data = request.get_json()
|
||||
if isinstance(data, list):
|
||||
data = sorted(data)
|
||||
key = hashlib.md5(json.dumps(data).encode('utf-8')).hexdigest()
|
||||
return key
|
||||
|
||||
|
||||
@app.route("/api/v3/AI_recommendations", methods=["POST"])
|
||||
@cache.cached(timeout=300, key_prefix=make_cache_key)
|
||||
def AI_recommendations():
|
||||
ids = request.get_json()
|
||||
recommendations = recommender.get_recommendations(ids)
|
||||
recommendations[0] = datetime.now()
|
||||
return jsonify(recommendations)
|
||||
|
||||
|
||||
# Przykładowe użycie:
|
||||
if __name__ == "__main__":
|
||||
recommender = MovieRecommender()
|
||||
recommender.fit('datasets/tmdb_5000_credits.csv', 'datasets/tmdb_5000_movies.csv')
|
||||
recommendations = recommender.get_recommendations([49026, 155, 312113])
|
||||
print(recommendations)
|
||||
# if __name__ == "__main__":
|
||||
# recommender = MovieRecommender()
|
||||
# recommender.fit('datasets/tmdb_5000_credits.csv', 'datasets/tmdb_5000_movies.csv')
|
||||
# recommendations = recommender.get_recommendations([49026, 155, 312113])
|
||||
# print(recommendations)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user