[Python] Optimizing DBpedia Queries for a Knowledge-Based Movie Recommender System

Discussão em 'Python' iniciado por Stack, Fevereiro 21, 2025.

  1. Stack

    Stack Membro Participativo

    I am working on creating a Knowledge-Based Recommender System for movies using the MovieLens Small dataset and retrieving additional information from DBpedia. I have implemented a solution that extracts the directors for all the movies in the dataset present in DBpedia, but it is quite slow when loading. Could you suggest a way to speed up the search?

    def fetch_director_from_dbpedia(title):
    movie_title_clean = normalize_title(title)

    print(f"Searching for director of: {movie_title_clean}") # Debug: mostra il titolo del film senza la data
    sparql = SPARQLWrapper("http://dbpedia.org/sparql")
    sparql.setReturnFormat(JSON)

    # Query SPARQL per cercare il regista del film con il titolo esatto
    query = f"""
    SELECT ?director
    WHERE {{
    ?film rdf:type dbo:Film .
    ?film foaf:name "{movie_title_clean}"@en .
    ?film dbo:director ?directorResource .
    ?directorResource foaf:name ?director .

    }}
    """

    sparql.setQuery(query)
    results = sparql.query().convert()

    print(f"Query result: {results}") # Debug: mostra il risultato della query

    director = None
    if results['results']['bindings']:
    for result in results['results']['bindings']:
    director = result['director']['value']
    print(f"Director found: {director}") # Debug: mostra il regista trovato
    else:
    print(f"No director found for: {movie_title_clean}") # Debug: mostra se non si trova un regista

    return director


    Thank you

    I expect a list of all directors for the movies present in the dataset, retrieved from DBpedia

    Continue reading...

Compartilhe esta Página