IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Prolog Discussion :

Recommande des livres


Sujet :

Prolog

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 139
    Points : 76
    Points
    76
    Par défaut Recommande des livres
    Bonjour je vous écris car je dois faire un système de recommandation de livre et j'ai beaucoup de mal.

    J’ai des livres et des élèves et on me demande de faire un prédicat :

    -A-
    ressemblance(E1,E2,Pt)
    Ou pt est le pourcentage de ressemblance entre 2 élèves.

    -B-
    recommandation(E1,Livre,Dg)
    Ou dg est le degré de recommandation par rapport à la ressemblance.

    -C-
    Recommandationintegral(E1,Liste,SeuiDg).
    Vrai si Liste est la liste de tous les identifiants de livres ) conseillés à un eleve par
    d’autres individus qui ont un degré supérieur ou égal à SeuilDg.

    On peut aussi ecrire :
    nerecommandepas
    nerecommandepasintegral

    -D-
    Puis : Ecrire le programme loqique complet (c est à dire la partie prédicat principal) qui
    lance le programme et demande à l utilisateur s il veut ajouter un avis sur un mivre
    (prédicats « assert ») , ou bien s il veut être conseillé. Vous
    utiliserez un prédicat sans arguments go pour lancer l exécution du programme.

    Ce qui est donné :

    livre (Identifiant, titre,auteur,editeur).

    livre(l1,’martine à la plage’,’Marcel Marlier’,’Casterman’).
    livre(l2,’martine à la montagne’,’ Marcel Marlier’,’Casterman’).
    livre(l3,’martine à la campagne’,’ Marcel Marlier’,’Casterman’).
    livre(l4,’martine aux ski’,’ Marcel Marlier’,’Castermanr’).
    livre(l5,’martine à l’école’,’ Marcel Marlier’,’Casterman’).
    livre(l6,’martine à la ferme’,’ Marcel Marlier’,’Casterman’).

    eleve(Identifiant, identifiantlivre, note). (de 0 (pas lus),1(pas aimer) à 5(très bien)
    eleve(e1,l1,0).
    eleve(e1,l2,5).
    eleve(e1,l3,5).
    eleve(e1,l4,2).
    eleve(e1,l5,3).
    eleve(e1,l6,0).

    eleve(e2,l1,0).
    eleve(e2,l2,5).
    eleve(e2,l3,0).
    eleve(e2,l4,4).
    eleve(e2,l5,4).
    eleve(e2,l6,5).

    eleve(e3,l1,5).
    eleve(e3,l2,0).
    eleve(e3,l3,1).
    eleve(e3,l4,2).
    eleve(e3,l5,2).
    eleve(e3,l6,0).

    J'espere avoir votre aide.
    @+ Seb981

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 139
    Points : 76
    Points
    76
    Par défaut
    si je fais ressemblance(E1,E2,L,Pt):-eleve(E1,L,Pt),eleve(E2,L,Pt).

    si je fais dans prolog :ressemblance(e1,e2,L,_).
    il me donne tout les identifiants livre pour lesquels il y a une ressemblance.

    C'est pour cela que j'ai créer un topic pour compter le resultat parcequ'ensuite il faudrait que je multiplie le résultat par 100 et le divise par le nombre de livre dans la bibliothèque soit 6 pour avoir mon pourcentage de ressemblance.

    @+ Seb981

  3. #3
    Membre actif Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 225
    Points
    225
    Par défaut
    Je ne comprends pas vraiment où se situe le problème.

    Que veux-tu faire ?
    Qu'est-ce que t'as déjà fait ?
    Qu'est-ce qui ne fonctionne pas ?
    Wer nicht probiert, verliert !!

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 139
    Points : 76
    Points
    76
    Par défaut
    Salut ! Merci pour ton message.

    Le problème c'est que je ne connais pas bien toute les possibilités de Prolog et donc je sais pas quel prédicat utiliser à tel endroit.

    Je dois faire un système de recommandation de livre un peu comme le site de la FNAC ou il y a des adhérents et des livres. Et je doit voir pour chaque adhérent qui est le plus proche de nous c'est dire qui aime les mêmes livres que nous.

    Donc on m'impose de faire certain prédicat comme ressemblance(E1,E2,Pt) qui nous donnerais le pourcentage ressemblance entre 2 élèves.
    Par exemple 2 personnes qui ont lu les mêmes livres et qui n'ont pas lu les mêmes livres auraient une ressemblance de 100 %.

    Déjà avec cette première question je bloque car j'arrive à avoir toutes les ressemblances mais je ne sais pas comment faire un prédicat qui nous les
    compterait et après ferais un pourcentage.

    C'est vrai que l'énoncé nous dit de faire un prédicat. Mais faut-il en faire d'autre avant qui s'appellerai ça j'en sais trop rien.

    Merci pour ton aide,

    Sebastien

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut même projet
    Bonjour, je m'interesse actuellement au même sujet de projet mais avec des titres musicaux, nos profs ont copié-collé le même sujet au mot près!

    pour le prédicat ressemblance(E1,E2,Pt) je propose ceci sans en être sûre :

    Valeur similaire en % = (nombre de titre dont la note est proche entre les 2 profils / nombre total de titre noté par les 2 profils)*100

    Valeur difference en % = (nombre de titre jugé différemment par les 2 profils / nombre total de titre noté par les 2 profils) * 100

    la valeur Pt est donc valeur similaire - valeur difference

    mais j'ai quelques questions sur Prolog, comment faire des accesseurs pour extraire la note de l'utilisateur E1 et la note de l'utilisateur E2 dans eleve(Identifiant, identifiantlivre, note). ?
    Comment jugé si 2 notes sont proches ? faut-il utilser l'algo des k-plus proches voisins ?
    Comment déclare-t-on des variables intermédiaires comme mes valeurs difference et valeur similaire pour pouvoir calculer le pourcentage?

    Si quelqu'un pourrait m'orienter surtout au niveau de Prolog pour bien écrire ce prédicat, je le remercie d'avance.

    Cathy

  6. #6
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par cathytv
    nos profs ont copié-collé le même sujet au mot près!
    Ah ben ça c'est malin !

    Je crois qu'on aura tout vu :
    • les étudiants d'une même école se retrouvent tous sur le forum Prolog pour discuter de leur projet
    • les étudiants qui posent des questions par MP, de peur de se faire choper par leurs profs en train de demander de l'aide (ceux-là ne savent pas lire les signatures )
    • les profs qui se copient les uns les autres et proposent des sujets identiques dans des écoles différentes
    • les profs qui ne pensent pas à faire une recherche préalable pour vérifier si (par hasard) le sujet n'aurait pas déjà été traité sur internet
    Si vous êtes prof de Prolog, postez directement vos sujets sur ce forum, ça ira plus vite . D'autant que, pour rappel, nous sommes à la recherche de contributions de toutes sortes (cours, sources, exercices corrigés...). De nombreux profeseurs ont déjà fait confiance à developpez.com.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 139
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Je sais que l'on est pas sur www. onfaitvosdevoirs .com mais on a vraiment besoin d'aide. Toi qui a un bon niveau en Prolog saurais tu nous dire en gros quels méthodes de Prolog on doit utiliser du style bagof, findall ... pour résoudre ce devoir.

    En te remerciant,
    Seb

  8. #8
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par Seb981
    quels méthodes de Prolog on doit utiliser du style bagof, findall ... pour résoudre ce devoir.
    Avec un bagof, on y arrive:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    ressemblance(E1,E2,Pt):-
      bagof(
        R
      ,
        Li^N1^N2^
        (
          eleve(E1,Li,N1),
          eleve(E2,Li,N2),
          E1\=E2,
          comp(N1,N2,R)
        )
      , L),
     
      % Faire la moyenne des elements de L
      sumlist(L, Sum),
      length(L, Nb),  
      Pt is Sum/Nb.
     
    comp(N1,N2,R) :-
      R is (5-abs(N1-N2))*20.
    Pour lus de détails sur bagof et findall,
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 139
    Points : 76
    Points
    76
    Par défaut
    merci c'est très gentil !

    @+ Seb

Discussions similaires

  1. [MVC] Existe-t-il des livres en français ?
    Par Pierre8r dans le forum MVC
    Réponses: 9
    Dernier message: 20/07/2011, 15h18
  2. Réponses: 3
    Dernier message: 08/06/2007, 13h26
  3. au niveau des livres de Delphi
    Par wolverine1991 dans le forum Delphi
    Réponses: 10
    Dernier message: 28/12/2006, 09h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo