Journal Crowd sourcing pour le nouveau data pipeline de linuxfr

Posté par . Licence CC by-sa.
8
22
juil.
2018

Bonjour'nal

L'outil de recherche integre a linuxfr est decevant. La population linuxfr gronde, en temoigne ce journal: computingfroggy/journaux/recherche-sur-dlfp. Les reproches sont nombreuses: impossible de retrouver un article lu recemment. Une recherche sur 0ad. renvoie un article de 2009 comme premier resultat, une recherche par les tags omet des articles recents aleatoirement. Et il y a plein d'autres problemes.

Certains utilisateurs desesperes se tournent meme vers "le grand mechant" (ref).

Considerant tout ceci, je propose de crowdsourcer un nouvel outil de recherche. Outre la configuration d'un outil de recherche de texte tel que grep, Postgres ou ElasticSearch, il nous faut un data pipeline qui va scrawler linuxfr, parser les pages et les rendre traitable par notre outil de recherche.

C'est par ce data pipeline que je propose de commencer. On pourrait l'ecrire dans le style pipes and filters qui fait la gloire d'unix. Chacun pourra s'attaquer au probleme qui lui plait le mieux dans le language qui lui plait. Il faut juste qu'on s'entende sur les interfaces pour faciliter la reutilisation des composants.

Le pipeline sera compose de 3 executables distincts. Voici un exemple d'utilisation du data pipeline et les interfaces et les composants que je propose pour commencer.

$ linuxfrReader -type "journal" -dateStart "2018-07-21" -dateEnd "2018-07-22" | pageParser | documentWriter

  • linuxfrReader:
    • [input]:
    • type: type de document a rapatrier. journal, forum, depeche
    • dateStart: date minimale du document a lire
    • dateEnd: date maximale du document a lire
    • [output]:
    • texte, json
    • utf-8
    • un document par ligne (pour le traitement en flux continu)
    • exemple:
{
  "type": "journal/depeche/forum/lien",
  "date": "YYYY-MM-DD",
  "html_content": "<html>Full content</html>"
}
  • pageParser:
    • [input] = output de linuxfrReader
    • [output]:
    • json
    • utf-8
    • un document par ligne
{
  "type": "journal/depeche/forum/lien",
  "date": "YYYY-MM-DD",
  "author": "j_m",
  "score": 21,
  "title": "Some title",
  "body": "corps de texte sans tag"
}
  • documentWriter:
    • [input] = output du pageParser
    • [output]: au choix
    • ElasticSearch
    • MySQL
    • Postgres

Je ne sais pas si c'est tres important d'avoir un outil de recherche. Mais je suis curieux de voir si on peut crowdsourcer un developpement :-)

  • # Commentaire supprimé

    Posté par (page perso) . Évalué à -10 (+1/-11). Dernière modification le 22/07/18 à 19:20.

    Ce commentaire a été supprimé par l'équipe de modération.

    • [^] # Re: Merci !

      Posté par . Évalué à 7 (+6/-1).

      Mon dieu. J'ai attire des spammeurs.

      Ca doit etre a cause des buzzwords. J'aurai du me relire :-/

  • # Source des données

    Posté par (page perso) . Évalué à 6 (+6/-0).

    Plutôt que de crawler des pages web (ce qui peut être fait avec GOPA: https://github.com/infinitbyte/gopa), n'est il pas possible d'avoir accès à la source qui génère les pages (genre une base de données) ou mieux à l'application qui écrit ces données en base ?

    Developer | Evangelist at elastic

    • [^] # Re: Source des données

      Posté par . Évalué à 1 (+0/-0).

      n'est il pas possible d'avoir accès à la source qui génère les pages (genre une base de données)

      Il faut pour ça que les admins de linuxfr nettoient la base de données. Ils peuvent le faire, mais ça prend du temps (et ce n'est pas particulièrement amusant).

      mieux à l'application qui écrit ces données en base ?

      L'objectif c'est d'avoir des données, le code qui les produit ne sert à rien dans ce contexte.


      Pour répondre à la dépêche, je ne trouve pas que le problème est pris dans le bon sens. AMHA il faut limiter le crawling de linuxfr.

      Il vaut mieux le faire une fois et fournir une archive (ça pourrait même être mis à dispo par l'équipe de manière (bi ?)mensuelle). À partir de là tout ceux que ça intéresse peuvent monter leur propre solution.

      • [^] # Re: Source des données

        Posté par (page perso) . Évalué à 3 (+0/-0). Dernière modification le 23/07/18 à 17:02.

        Il faut pour ça que les admins de linuxfr nettoient la base de données. Ils peuvent le faire, mais ça prend du temps (et ce n'est pas particulièrement amusant).

        Cf la discussion sur l'entrée de suivi https://linuxfr.org/suivi/dump-anonymise-de-la-base-de-donnees#comment-1744512

      • [^] # Re: Source des données

        Posté par . Évalué à 2 (+0/-0). Dernière modification le 23/07/18 à 20:13.

        Pour répondre à la dépêche, je ne trouve pas que le problème est pris dans le bon sens. AMHA il faut limiter le crawling de linuxfr.

        Je suis d'accord. J'ai commence la premiere partie, qui doit downloader les pages de linuxfr et je fais mes tests de parsing localement sur une copie de page qui est dans le repertoire resources de mes unit tests.

        Si quelqu'un d'autre travaille sur cette partie, j'espere qu'elle fait de meme.

        Il vaut mieux le faire une fois et fournir une archive (ça pourrait même être mis à dispo par l'équipe de manière (bi ?)mensuelle). À partir de là tout ceux que ça intéresse peuvent monter leur propre solution.

        Oui, parser une fois, pour avoir des donnees de test ca sera bon.

        • [^] # Re: Source des données

          Posté par . Évalué à 0 (+0/-0).

          pour le crawl il y a plein d outils.
          j'avais eu des expériences réussies avec scrapy (python) il y a quelques années,
          pour un besoin perso.

          si tu parviens à une archive, peux tu y donner accès? cela limiterait le crawl.
          je ne sais pas s'il faut ou pas limiter l'accès à cette archive ni comment.

    • [^] # Re: Source des données

      Posté par . Évalué à 2 (+0/-0). Dernière modification le 23/07/18 à 20:56.

      ce qui peut être fait avec GOPA: https://github.com/infinitbyte/gopa

      Pourquoi pas. C'est bien configurable?

      Tu penses qu'on peut tout remplacer avec ca? Extraire les dates de creation et tout ce qu'on veut?

      Moi je vais continuer sur le truc que j'ai propose mais si tu avances dans cette direction ou quelqu'un d'autres, je participerai volontier a ameliorer les requetes ES pour avoir quelque chose d'un peu mieux que Duck Duck go.

  • # Faire appel aux utilisateurs de weboob

    Posté par . Évalué à 4 (+2/-0).

    Il existe une fonctionnalité pour suivre le site comme une liste de diffusion. Peut-être que quelqu'un pourrait t'envoyer une copie de son dossier d'archive.

    http://weboob.org/applications/monboob.html

    • [^] # Re: Faire appel aux utilisateurs de weboob

      Posté par . Évalué à 3 (+2/-0).

      Ou juste réutiliser le parseur qu'ils ont fait.

    • [^] # Re: Faire appel aux utilisateurs de weboob

      Posté par . Évalué à 2 (+0/-0).

      Il faut un format qui contient les dates de créations et les urls.

      Et pour que ca soit utile il faut que ca soit plus facile à parser que linuxfr lui-même.

      De ce que j'ai essayé pour l'instant linuxfr a l'air déjà plutôt facile.

      • [^] # Re: Faire appel aux utilisateurs de weboob

        Posté par . Évalué à 1 (+1/-0).

        il faudrait que tu ajoutes un champ "url" à ton linuxfrReader dans ton journal.
        ainsi, l'association url/donnée ne serait pas perdue.
        je fais un truc de mon côté aussi.
        j'aurais voulu pondre un truc en c pour la beauté mais pff pas la maîtrise.
        ca sera un langage de script, donc.

        une fois au moteur de recherche, j'aimerais bcp pouvoir échanger.

        as tu ouvert une source accessible en ligne?

        • [^] # Re: Faire appel aux utilisateurs de weboob

          Posté par . Évalué à 2 (+0/-0).

          il faudrait que tu ajoutes un champ "url" à ton linuxfrReader dans ton journal.
          ainsi, l'association url/donnée ne serait pas perdue.

          Bien vu. On ne peut malheureusement pas editer un journal. Mais c'est note.

          je fais un truc de mon côté aussi.
          j'aurais voulu pondre un truc en c pour la beauté mais pff pas la maîtrise.
          ca sera un langage de script, donc.

          Tu fais comme tu veux. On n'est pas presse.

          une fois au moteur de recherche, j'aimerais bcp pouvoir échanger.

          as tu ouvert une source accessible en ligne?

          J'ai cree un tchat sur framateam: https://framateam.org/linuxfr-search/

          Et j'ai cree un projet framagit: https://framagit.org/j_m/linuxfr-reader

          Pour l'instant c'est le desordre. J'ai ecris quelque methodes dans les units tests et je les mettrais proprement dans le code de production quand j'aurais reflechis a l'organisation du code.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.