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

Java Discussion :

Etude sur une collection de Folksonomies


Sujet :

Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Etude sur une collection de Folksonomies
    Bonjour à tous!!

    je me permet de faire appel a vous car voila 3 jours je butte sur un probléme qui m'empeche d'avancer :-(.
    je travail sur une collection de folksonomies (pour ceux d'entre vous qui ne savent pas ce que cela veux dire je laisse le soin à Marziah Karch de vous l'explique : http://google.about.com/bio/Marziah-Karch-20906.htm :-) )

    Je dois traiter une collection de folksonomies sur plus de 8go ,c'est un fichier texte, et donc j'ai préféré la splitter en 47 fichiers de 100 mo ..enfin la n'est pas le probléme.
    aprés avoir parser les fichiers en utilisant l'api regex de java j'obtiens des fichiers qui ressemble plutot à ça:
    Nom : Sans titre.jpg
Affichages : 75
Taille : 24,2 Ko
    chaque colonne représente respectivement: les utilisateur , les ressources , les tags.

    Mon probléme est le suivant:

    il me faut pondérer les tags en ayant la structure suivante:
    user=(tag1:vix1 , tag2 vix2.....)

    En sachant que :
    vix=N(i,x)/Ni

    N(i,x) nombre de fois que l'utilisateur i use du tag x pour annoter des ressources.
    Ni nombre de ressource taggués par i.

    exemple:

    187=(newyears2004:1.01,roma:2.012....)

    Quelqu'un pourrais m'aider je suis au bord du gouffre la !!??

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Personnellement,

    Je travaillerai cela sur une base de donnée.

    Car si on suppose la table :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    create table tag (
    `user` int(30) NOT NULL,
    `ressource` int(30) NOT NULL,
    `tag` varchar(256) NOT NULL,
    )
    Ton Ni correspond pour l'utilisateur i à la requête suivante :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
     select count(*) from tag where user = %i%;
    Et N(i,x) correspond pour l'utilisateur i à la requête suivante :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
     select count(*) from tag where user = %i% and ressource = %x%;

    Et la liste des ressources taguées pour l'utilisateur i correspond à la requête suivante :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select DISTINCT ressource from tag where user = %i%

    Sinon ton exemple est par définition faux.
    Car N(i,x) est forcément inférieur à Ni car un sous ensemble de Ni. Donc inférieur à 1

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta suggestion patrick , j'ai deja esseyé avec access , pour un traitement avec un LMD , cela ne marche pas trop vu l'immension collection, et le fait que j'ai plusieurs objects a manipuler.

    1)Au faite quand tu dis de "travaille ça avec une base de données " est ce que tu insinue qu'il faudrais entrés d'abord la collection sur la base puis ecrire un java code qui effectue le traitement ou alors travailler directement dessus??
    2) Je précise par ailleurs, que N(i,x) est le nombre de fois que l'utilisateur i use du tag x pour annoter des ressources (quelque soit la ressource), et que Ni est le nombre de ressources tagués par i .

    Merci aussi pour ta correction cela est vrai , l'exemple a été mal illustré.

    Mais pourrais tu m'en dire un peu plus sur le point 1.??

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    De plus, dans le code sql: SELECT count(*) FROM tag WHERE user = %i%; le i reste à définir , alors que ce qui m'interesse corrspond plus a une généralisation c'est à dire que le programme en sortie retournerais:

    18=(etoile:0.18,play:0.14.....)
    19=(dors:0.189,twain:0.17.....)
    198=(base:0.11,marks:0.98.....)
    779=(ariel:0.19,rock:0.56.....)
    .
    .
    .
    .

  5. #5
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Dans les FAQ du site, tu trouvera une section expliquant comment réaliser une connexion avec une base de donnée.
    A partir de là tu n'aura plus qu'à boucler sur les résultats des requêtes pour obtenir le résultat voulu.
    Par exemple un foreach sur les utilisateurs ?

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  6. #6
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par ralfcmoi Voir le message
    Merci pour ta suggestion patrick , j'ai deja esseyé avec access , pour un traitement avec un LMD , cela ne marche pas trop vu l'immension collection, et le fait que j'ai plusieurs objects a manipuler.
    Euh au contraire, s'il y a beaucoup de données, c'est bien plus adapté d'utiliser une base de données qu'un fichier texte ou bien que de tout mettre en mémoire. Ca évite de réinventer la roue et ce sera beaucoup plus rapide.
    Vu le type de travail, je pencherais pour une base type sqlite ou bien h2 (ma préférée). Tu trouveras facilement des tutos pour trouver comment la peupler et comment extraire tes infos.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci!!!! je m'y met de suite je vous tiens au courant!!!

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Au faite j'ai réussi la connexion la base de données et tout mais pour la sélection afin d'obtenir les résultats , exemple : le nombre de fois qu'un utilisateur distinct i utilise le tag x pour annoter des ressources, je ne trouve pas de solution pour boucler sur l'ensemble de tout les utilisateurs avec une requete sql, de plus pas trop de doc concernant la manipulation de collection dans une base de données, quelqu'un aurait une idée sur le code adéquat? Merci

  9. #9
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Il faudrait dire la base de données que tu utilises. Certaines ont une syntaxe SQL un peu exotique.

    Dans ton cas, en supposant que tu as correctement rempli la base, la requete devrait ressembler à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ID_UTIL, TAG, COUNT(TAG) AS NB_TAG
    FROM MES_TAGS
    GROUP BY ID_UTIL, TAG

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci hwoarang , j'utilise access (pour des raisons de simplicité mais je peux faire la transition vers n'importe qu'elle autre SGBD si il le fautça ne me dérange pas), au faite mes données ressemblent plutot à ça:
    Nom : Sans titre.jpg
Affichages : 67
Taille : 20,3 Ko

  11. #11
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Et la requete que j'ai mise, elle fonctionne avec access (en changeant les champs et le nom de la table pour coller à ce que tu as créé) ? De memoire, il me semble que c'est la bonne syntaxe. Si ca ne donne pas le resultat que tu veux, poste ce que tu as par rapport à ce que tu voudrais...

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci hwoarang , ta requete marche mais j'ai a calculer maintenant le nombre de ressources taggués par chaque utilisateur i, je me demandais au faite une fois que j'aurai mais N(i,x) et Ni comment j'allais calculais mes v(i,x)???? sachant que v(i,x)=N(i,x)/Ni??? quelqu'un a une idée?? est il possible d'effectuer des operation arithmetique en sql en combinant deux requete ?? ou faudrat-il que je parse encore et mette tout ça dans un tableau en java ( une fois de plus )

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Salut au faite aprés un cassage de tete intensif qui a duré assez longtemps , j'en profite pour remercier hwoarang et patrick , qui m'ont assez bien aidé je me retrouve une nouvelle fois bloquer !!! !!!
    Je m'explique : aprés etre passé sous oracle 11g r2 pour bosser sur ma collection je suis parvenu au résultat suivant:

    Nom : grrrr.jpg
Affichages : 63
Taille : 76,9 Ko

    et cela grace à la requete suivante:
    select id_user,sum(occurence),listagg( tags|| '= ' ||occurence ,';') within group (order by id_user)


    from (select id_user,tags,count(tags) as occurence from folk group by id_user,tags ) group by id_user ;

    seulement j'aimerai diviser le nombre d'occurence dans listagg( tags|| '= ' ||occurence ,';') par la somme des occurence , de sorte a avoir enfin mes n(i,x)!!!

    ce qui donnerais :

    select id_user,sum(occurence),listagg( tags|| '= ' ||occurence/sum(occurence) ,';') within group (order by id_user)


    from (select id_user,tags,count(tags) as occurence from folk group by id_user,tags ) group by id_user ;

    simplement oracle me retourne le message suivant:
    not a GROUP BY expression

    Est ce que quelqu'un veux bien m'aider !!! que je puisse enfin cliquer sur le bouton résolu!!!!! merci d'avance!

Discussions similaires

  1. tri alphabétique sur une collection
    Par samtheh dans le forum VBA Access
    Réponses: 6
    Dernier message: 18/06/2007, 14h50
  2. Probleme de scope sur une collection
    Par ataya dans le forum Struts 1
    Réponses: 10
    Dernier message: 23/02/2007, 19h19
  3. VBNET : Agir sur une collection de contrôles ?
    Par VinZent dans le forum Windows Forms
    Réponses: 3
    Dernier message: 12/11/2006, 09h01
  4. Réponses: 1
    Dernier message: 25/10/2006, 13h41
  5. [Struts] <logic:iterate> sur une collection d objets c
    Par trax020 dans le forum Struts 1
    Réponses: 2
    Dernier message: 12/05/2005, 00h11

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