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 :

Fouille de texte


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Mic75
    Homme Profil pro
    Développeur Frontend
    Inscrit en
    Janvier 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Frontend
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 143
    Par défaut Fouille de texte
    Bonjour à tous,

    Dans le cadre d'un stage, je dois réaliser un module capable de reconnaître des champs, sans ambiguités, dans du code source html
    Je précise...Mon entreprise d'accueil aspire tous les matins a peu près 4500 sites d'appels d'offres de marchés publiques de collectivités réparties dans toute la France.
    Ensuite elle extrait les données utiles de ces sites (c'est là que j'interviens) et les envoie à ses clients, de manière automatisée.
    Le hic est que chaque collectivité utilise un formalisme propre pour ses pages web d'appels d'offres. En d'autres termes, il s'avère compliqué de faire une fonction de parsing générique étant donné que les champs n'ont pas tous le même nom en fonction des collectivités.
    Exemple : le champs "date limite de dépot" peut correspondre à "échéance, date de péremption, date fin de dépot, etc, ...".

    La solution actuelle est de coder des fonctions pour chaque collectivité, autrement dit un ENORME switch qui teste le nom de la collectivité et appelle la fonction de parsing correspondante. Ce qui a la longue risque de devenir catastrophique !

    Mon sujet de stage est de mettre en place une fonction générique, applicable à toutes les pages possibles d'appels d'offres.

    J'ai recherché dans divers directions (stockage de mot clefs dans des fichiers, IA apprenante type réseaux de neurones, ...)
    Cependant rien de concluant.
    J'opte de préférence pour une solution java, donc si quelqu'un parmis vous à connaissance d'une api ou d'un projet se rapprochant du mien, merci de m'en faire part. Toutes les suggestions sont les bienvenues.

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Je crains qu'il soit impossible d'avoir une fonction générique si les sites cibles ne respectent aucune norme.

    C'est comme si on te demandait de faire un module d'import de fichiers XML sans connaitre le format du fichier XML (genre <toto prop="tata" /> pour un; <toto><prop>tata</prop></toto> pour l'autre; <toto propriete1="tata" propriete2="titi" /> pour le troisième; ...).

    => IMPOSSIBLE

    Par contre tu pourrais développer un système plugable afin d'ajouter facilement de nouveaux sites pour l'administrateur. Genre ton appli affiche la page cible et l'utilisateur sélectionne les champs nécessaires à récupérer (que tu pourrais présélectionner via un algorithme de détection intelligent). Mais jamais tu ne pourras te passer de l'intervention humaine.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Par défaut
    Pour rejoindre natha, tu peux faire une "fonction" générique dont la configuration de parsing est décrite dans un fichier xml propre à chaque site. La fonction se base ainsi sur quelque chose de spécifique au site. L'avantage est le temps de developpement réduit et une maintenance rapide.

    Et si tout se passe bien tu peux automatiser la création du fichier xml via une interface intelligente (Natha).

    Petite remarque tu risques d'avoir des problèmes lors de maintenance/évolution des sites aspirés, puisque tu n'as aucun contact avec les equipes de developpement. Donc assure toi de metre en place une routine permettant de tester la pertinence du parsing. (Un jour un champ Adresse, peut se transformer en AdresseMail, et là tu risques de ne pas pouvoir le detecter).

    C'est interressant tient nous au courant

  4. #4
    Membre confirmé Avatar de Mic75
    Homme Profil pro
    Développeur Frontend
    Inscrit en
    Janvier 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Frontend
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 143
    Par défaut
    Merci à vous pour vos remarques. L'idée d'une interface pour la génération des fonctions de parsing me plaît.
    Cependant, nous n'utilisons pas de fichier xml pour la configuration du parsing, tout est écrit en dur dans le code windev pour chaque collectivité.

    Cela aurait était une bonne initiative si les développeurs précédents y avaient pensé, malheureusement ce n'est pas le cas et trop de fonctions ont été codées pour mettre ça en place maintenant.

    Donc ce que je pense faire, c'est élaborer un module graphique (en java) dans lequel on définit pour chaque champs à récupérer (objet du marché, organisme, etc...) les "balises" de début et de fin. Puis une fois ce travail effectué le module génère la fonction au format windev. Cela fera gagner beaucoup de temps, au lieu de réécrire à chaque fois les fonctions sous windev.

    J'en ai touché 2 mots à mon tuteur, l'idée lui plaît également, il aimerait quand même que je mette en place une fonction générique pour la récupération du champs date limite du dépôt.
    Auriez vous une idée pour récupérer cette date de manière non ambigüe ? En sachant que les variations sont multiples : échéance, date de péremtion, dernier délais, etc ...

    Delwyn :
    Petite remarque tu risques d'avoir des problèmes lors de maintenance/évolution des sites aspirés
    C'est également un gros problème de la méthode actuelle. Pour la maintenance tout se fait à la main. Si le formalisme des sites d'une collectivité change, il faut réécrire la fonction de parsing. Actuellement cette vérification s'effectue à la main, ce qui à terme risque de devenir ingérable (+4500 collectivités actuellement), d'où la volonté de mettre en place une solution générique.

  5. #5
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Très bonne idée de Delwyn d'utiliser un fichier descriptif en XML.

    Ce que tu peux envisager c'est conserver le code actuel pour les anciens sites, créer un nouveau système pour les nouveaux sites et les anciens qui sont mis à jour. Bâtir ta solution autour de ce qui a été fait avant te mène droit au mur (alors oui, ça se verra peut-être pas sur la durée d'un stage, mais si c'était moi qui était embauché après toi pour prendre la suite, j'me tirerais des balles car greffer des modules sur des usines à gaz... ça fait des usines à gaz x10 même si tes ajouts sont exemplaires).

    Citation Envoyé par MPKA
    la volonté de mettre en place une solution générique
    Il n'y aura pas de solution miracle. Tu vas devoir coder quelque chose qui essaiera de répertorier tous les cas possibles. Si tu as déjà +4500 exemples, ça te permettra déjà de voir si c'est réalisable => si tu as plus de 100 cas différents il va falloir sérieusement penser à laisser tomber la solution générique.

    Dans ce genre de cas il est souvent plus judicieux que les organismes concluent des contrats entre elle permettant de définir un format d'échange standardisé (webservice, fichiers XML). Sinon c'est ingérable et il n'y a aucune solution.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2004
    Messages : 327
    Par défaut
    Citation Envoyé par MPKA
    J'en ai touché 2 mots à mon tuteur, l'idée lui plaît également, il aimerait quand même que je mette en place une fonction générique pour la récupération du champs date limite du dépôt.
    Auriez vous une idée pour récupérer cette date de manière non ambigüe ? En sachant que les variations sont multiples : échéance, date de péremtion, dernier délais, etc ...
    Utilises les Expressions régulières pour faire ce travail.
    Et débarasse toi vite de Windev !!

  7. #7
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Si le nombre de possibilités pour une même donnée est limité, alors tu peux effectuer une recherche par mots clés et expressions régulières. Ces mots clés peuvent être listés en configuration (xml), ce qui permet d'étendre la liste au besoin.

    Ensuite, si les formats d'échanges de données ne sont pas standards (chacun fait ce qu'il veut), tu n'auras aucun moyen de bosser correctement.
    Bon courage !

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/03/2014, 10h51
  2. fouille de texte
    Par jmjmjm dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/02/2011, 11h16
  3. Réponses: 1
    Dernier message: 02/11/2010, 12h41
  4. afficher du texte
    Par Mau dans le forum OpenGL
    Réponses: 10
    Dernier message: 24/06/2003, 16h31
  5. Réponses: 2
    Dernier message: 10/06/2002, 12h03

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