Marotte ⛧ a écrit 8798 commentaires

  • [^] # Re: En memoire

    Posté par  . En réponse au journal Analyse de texte. Évalué à 2.

    Attention avec les dict ça bouffe très vite énormément de mémoire.

    Oui… quand on parcourt toutes les combinaisons possibles rien qu’entre caractères lus ça va vite très vite.

    Pour la mémoire j’ai abandonné le deque pour stocker mon tampon, le problème étant qu’un deque n’est pas adressable à l’aide de slices ([:4])… contrairement à un string. J’ai bien profité du conseil concernant collections.Counter(), c’est vraiment le type de variable dont j’avais besoin.

    J’ai un peu changé d’approche pour conserver les « strings » (sentences), je me base sur des expressions régulières, c’est plus propre. Dès que j’ai un truc correct je le postici.

    De plus tu utilise sqlite, je ne connais pas les performance de ce moteur pour les update mais peut être que choisir mysql(ou mariadb)

    Alors là attention, que ça puisse fonctionner plus ou ou moins vite sous MariaDB c’est clairement pas un angle d’étude pour le moment… J’utilise sqlite parce que c’est parfaitement adapté à la modélisation (et c’est par ailleurs l’un des meilleurs moteur opensource de base relationnelle). SQLite ça marche partout. sqlite passe le test ACID : https://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID je n’en suis pas si sûr pour MarioleDB…

  • [^] # Re: I like =

    Posté par  . En réponse au journal Analyse de texte. Évalué à 2.

    Je viens de tester avec = à la place de like les performances sont bien meilleures effectivement :)

    Merci à vous deux. Le temps d’exécution est passé de 15 min à 40 s (environ)…

    Pour le nombre de chaque requête je ne sais pas encore, je garde en tête ta remarque très judicieuse sur l’ordre d’exécution.

  • [^] # Re: Je ne ferais pas ça comme ça.

    Posté par  . En réponse au journal Analyse de texte. Évalué à 2.

    En incluant les suites telles que "a ma" je peux toujours par la suite filtrer avec une expression régulière pour n’avoir que les mots.

  • [^] # Re: occurrence des mots

    Posté par  . En réponse au journal Analyse de texte. Évalué à 3.

    C’est volontaire de vouloir prendre les signes de ponctuation…

    Pour moi 'mice' et 'mice.' ne sont pas deux chaînes identiques. De la deuxième on peut présager que le mot « mice » a des chances de terminer une phrase. À part le remplacement des retour à la ligne par des espaces puis la réduction des espaces consécutives à une seule espace je travaille en mode suite de caractères.

  • [^] # Re: Je ne ferais pas ça comme ça.

    Posté par  . En réponse au journal Analyse de texte. Évalué à 3.

    en fait tu sembles vouloir compter n'importe quel groupe de lettres…

    Oui c’est ça. N’importe quel groupe de caractères en fait.

    C'est quoi le but?

    Y’en a pas vraiment… je fais des essais on va dire…

  • [^] # Re: On dirait du C

    Posté par  . En réponse au journal Analyse de texte. Évalué à 2.

    Merci pour tous ces conseils avisés ! Surtout pour le collections.Counter je pense que ça va me servir…

    import fileinput
    for line in fileinput.input():

    Ma ligne peut avoir une longueur variable. J’aurais toujours besoin de la traiter en morceau de N caractères car je ne vais pas itérer sur tous les caractères de la ligne si je n’ai pas besoin de conserver des chaînes de plus de N caractères. J’ai également besoin d’avoir la fréquence de chaînes telles que "titi\ntoto" je devrais donc conserver un certain nombre de caractères de la ligne précédente à chaque fois…

    J’ai trouvé plus simple d’avoir une sorte de « fenêtre » (buf) qui va « glisser » sur mon entrée… Par exemple si je prends un MAXLEN de 2 et que mon entrée est "abcd\n" j’aurais tour à tour :

    • ab
    • bc
    • cd
    • d\n

    Avec MAXLEN à 3 j’aurais, en plus :

    • abc
    • bcd
    • cd\n

    si tu crois que tu as besoin de gérer la mémoire toi-même en Python

    Non, j’ai bien conscience que ce n’est pas à moi de gérer la mémoire.

  • [^] # Re: Je ne ferais pas ça comme ça.

    Posté par  . En réponse au journal Analyse de texte. Évalué à 3.

    As-tu au moins essayé de mettre une trace entre l’analyse du texte et la mise à jour de la base de données pour en être sûr ?

    Je le vois simplement grâce au sys.stderr.write(…) qui est fait entre chaque étape, la première étape (chargement) et la deuxième (suppression des chaînes qui coupent des mots en deux, sauf les petites…) s’exécutent en un temps acceptable.

    Personnellement, je lirais l’entrée par ligne, je splitterais sur les espaces et signes de ponctuation (ou tout ce qui n’est pas une lettre), comme ça, j’aurais directement les mots et ensuite seulement, pour chaque mot, j’itérerais sur la lettre de départ et la longueur pour avoir les groupes de lettres.

    En faisant ça si j’ai une première ligne qui contient "voici une première ligne" et une seconde qui contient "et là une deuxième" je n’aurais pas d’entrée créée contenant le dernier mot de la première et le premier de la deuxième ("ligne et"). Je n’aurais pas non plus 'e e', 'e et', etc… (je remplace systématiquement "\n" par "n"…)

    J’utilise donc un tampon de MAXLEN caractères qui se décale de MAXLEN-1 caractères à chaque fois afin que le dernier caractère du précédent tampon se retrouve premier du tampon suivant. Pour ça un deque me semblait plus adapté qu’un string

    je chargerais tout le texte en mémoire (mon premier ordinateur avait 8 Ko de mémoire

    Comme tu peux le voir le programme lit l’entrée standard, pour l’instant il attend EOF pour traiter les données mais à terme je veux qu’il puisse tourner en continue, en faisant un màj de la base tous les N tampons/caractères.

  • [^] # Re: nltk

    Posté par  . En réponse au journal Analyse de texte. Évalué à 3.

    si considérer le texte comme un sac de mots te suffit

    Comme un sac de caractères même… :)

    Je me pencherai sur NLTK un de ces jours ça a l’air bien mais là je veux une approche plus « bête », basée seulement sur les fréquences d’apparition.

  • [^] # Re: nltk

    Posté par  . En réponse au journal Analyse de texte. Évalué à 2.

    Très intéressant, merci.

  • [^] # Re: En memoire

    Posté par  . En réponse au journal Analyse de texte. Évalué à 2.

    [edit: vas y efface, c'est ce que tu fais deja j'ai mal lu ton code]

    Euh… bah non :)

    Utiliser time() je sais faire mais je ne l’ai pas fait ici, je lance simplement le script précédé de la commande time. Vu la sortie d’erreur je sais à peu près combien de temps prend chaque étape. Je remarque nettement que ça va à une vitesse correct quand la base est vide (donc que les INSERT aboutissent).

    A priori, ta structure de donnee comptant les syllabes/mots ne devraient pas augmenter lineairement avec la taille de tes textes

    Oui. Plus les textes passeront plus il aura de mises à jour et moins d’insertions.

    Pourquoi ne pas stocker l'information en memoire (et ne la mettre dans la base de donnee qu'a la fin)

    C’est ce que je vais faire.

  • [^] # Re: on teste le seuil bas de moinsage ?

    Posté par  . En réponse au journal La fin de la fin.. Évalué à 2.

    En te moinssant je participe à 33% de ta note à moi tout seul, ça me console.

  • [^] # Re: DMP et SESAM-Vitale: des certifications aussi

    Posté par  . En réponse au journal la fin des logiciels libres de comptabilité et de gestion de caisses. Évalué à 2. Dernière modification le 15 décembre 2015 à 02:01.

    Je demande parsque les kits de developement four-tout avec de multiples versions des protocoles rendent parfois les dévelopements triviaux

    Je viens de tomber sur ton commentaire. Est-ce que par « trivial » tu ne voulais pas tout à fait signifier l’inverse ?

    Parce que la définition de « trivial » c’est :

    Qui est banal, commun, qui relève du simple bon sens, de la réalité la plus évidente

    alors que « kits de developement four-tout avec de multiples versions des protocoles »

    ça pue un peu la complexité…

    http://www.larousse.fr/dictionnaires/francais/trivial

    :)

  • # Erratum

    Posté par  . En réponse au journal Analyse de texte. Évalué à 2.

    Le premier commentaire est erroné :

    s/~which don't match~/which match/

  • [^] # Re: false

    Posté par  . En réponse au journal Le core utile. Évalué à 4.

    Le genre de code qui va (si je n’y suis pas habitué pour une raison ou une autre) me nécessiter une heure pour rechercher sur le web et assimiler (c’est à dire accepter en son âme de codeur, profondément, que cela puisse pertinemment s’écrire ainsi…) avant de passer à la suite du code…

    J’ai dit « concis && élégant », j’aurais du ajouter lisible pour le commun des programmeurs :)

    Il faut reconnaître que l’« expansion de variable » en shell c’est une des caractéristiques de ce genre de langage et c’est rudement pratique.

  • [^] # Re: false

    Posté par  . En réponse au journal Le core utile. Évalué à 2.

    $ if (rm test); then echo ok; fi
    rm: cannot remove `test': No such file or directory
    $ touch test; if (rm test); then echo ok; fi
    ok
    

    Bah c’est justement ce que je dis, dans le premier cas la commande a un code retour ≠ 0 la condition est fausse alors que dans la deuxième le code retour est 0 est la condition est vrai :

    ≠ 0 implique faux
    0 implique vrai

    Donc c'est plus logique d'attribuer 0 à ok et !0 à toutes les situations non ok.

    Oui mais quand on apprend la logique on note 0 = faux et 1 = vrai, c’est le contraire en shell.

    Dans les autres langages de programmation on également plutôt l’habitude qu’une valeur différente de zéro soit évaluée vraie et zéro soit évalué faux.

  • [^] # Re: Des oublis ?

    Posté par  . En réponse au journal Le core utile. Évalué à 2.

    est-ce une bonne idée de s'en servir

    Ça t’évite de finir par devoir retaper deux fois des commandes quand tu te retrouves sur un AIX qui ne connaît que more, parce que tes doigts tapent less plus vite que ton cerveau ne réfléchit ^^

    D’après le man de more:

    Cette version est particulièrement primitive. Les utilisateurs doivent se convaincre que
    less(1) constitue une excellente émulation de more(1) avec en plus de nombreuses améliorations.

    Le fait que ce programme soit toujours disponible ne serait-il pas lié à la norme POSIX ?

  • [^] # Re: false

    Posté par  . En réponse au journal Le core utile. Évalué à 5.

    Entre le programme true, et le programme [ , je trouve que le shell c'est de la bidouille …

    C’est horrible ce [… genre if [ -z $v ]; then… ça ressemble à quoi ? :) On peut même ôter le crochet fermant qui n’est autorisé par le langage que pour la seule bonne raison qu’un crochet ouvert qui reste ouvert c’est très grave… presque autant qu’une parenthèse !

    Maintenant j’essaie d’écrire : if test -z $v; then… c’est bien ce qu’il y a de plus logique et clair à lire selon moi.

    Oui le shell c’est spécial comme « langage de programmation » vu que ce n’en ai pas vraiment un.

    En m’y mettant j’ai eu un peu de mal avec la logique binaire… On a l’habitude de considérer que 1 représente vrai et 0 représente faux, or le code retour des programmes c’est 0 pour OK, par convention. Si je fais un if (rm toto) et que la commande « plante » (parce que le fichier toto n’existe pas par exemple) ma condition sera fausse.

    L’utilisation des opérateurs && et || entre plusieurs commandes permet souvent d’être concis et élégant, je trouve.

  • # Mais que fait la police ?

    Posté par  . En réponse au journal Tentative d'escroquerie téléphonique. Évalué à 0.

    Elle protège et elle sert !

    C’était sûrement l’auto-dialer (de Marge)… Ne t’inquiète pas c’est réglé.

    https://www.youtube.com/watch?v=nbbIXMDGb_w

  • # Mes deux centimes

    Posté par  . En réponse au message Problème de paramétrage de langue ?. Évalué à 1.

    C’est marrant j’ai eu exactement le même bug sous Firefox sous Windows pendant un moment, bien que le dictionnaire FR ait été installé ça repassait systématiquement à l’anglais… J’ai plus le problème depuis une ou deux versions. Un problème avec le plugin peut-être…

    Par contre j’ai la même chose dans Outlook, qui par en sucette si j’ai le malheur de devoir écrire un mail dans les deux langues en même temps… et là j’ai même pas trouvé comment re-switcher vite fait :)

  • [^] # Re: bof

    Posté par  . En réponse au journal Notepad++ et FN ; ou quand un développeur parle d'autre chose que de développement. Évalué à 2.

    Là, ça fait coup de canif dans le contrat.

    Mouaif… il a pas changé la licence de son logiciel hein… Je pense qu’il s’est dit à juste titre qu’il toucherait plus de monde en utilisant ce compte, plus « pro », vu que c’est aussi le sien je vois pas pourquoi il aurait du se gêner…

  • [^] # Re: Budget

    Posté par  . En réponse au journal La fin de Firefox OS. Évalué à 6.

    firefox a toujours souffert de fuites mémoire […] la RAM utilisée ne cessait de s'accroitre sans raison.

    C’était vrai pendant un temps mais j’ai l’impression que c’est corrigé. En tous cas j’ai plus de problème de fuite mémoire depuis un petit moment maintenant.

    Là j’ai que onze onglets, quelques plugins, Iceweasel est stable à 1GB de mémoire virtuelle. Au boulot sous Windows avec plus d’onglets et plus de plugins c’est en deça (quelques centaines de MB).

    Le seul souci que j’ai de temps à autre avec Firefox/Iceweasel c’est une utilisation CPU à 100% (qui fige l’UI) à cause de scripts Javascript foireux…

  • [^] # Re: Juste un point

    Posté par  . En réponse au journal "Tout le monde peut être une cible". Évalué à 5.

    Récupérer un territoire anéanti par des bombardements où la moitié des civils sont morts ce n’est pas très intéressant et c’est normalement interdit. Pour neutraliser une armée et récupérer un territoire il faut toujours des troupes au sol.

    Dans le cas du Japon il ne s’agissait pas de récupérer un territoire et la plupart des victimes des deux bombes atomiques furent des civils.

  • [^] # Re: Mises à jour

    Posté par  . En réponse au message Mises à jours sous Linux - Ubuntu. Évalué à 2.

    j'ai déjà effectué une mise à niveau il y a quelques mois pour la dernière version, la 15.10 je pense. Un ami m'a expliqué que parfois il faut attendre un peu avant de faire la mise à niveau pour être sure que la nouvelle version soit traduite en français, est-ce vrai ?

    Plus ou moins, de manière générale quand on migre tôt on a toujours un risque d’« essuyer les plâtres » comme on dit.

    La 15.10 est la dernière version stable non LTS, son support (mises à jour de sécurité) s’arrêtera en juillet 2016, à ce moment là tu devras forcément encore changer de version, en 16.04 LTS (qui sortira en mars 2016). Puis en octobre 2016 tu auras à nouveau le choix entre : 1- rester sur la 16.04 ou 2- passer en 16.10…

    J’ai l’air d’insister mais ce principe de LTS (Long Term Support) me paraît assez important. Ça peut être chiant de devoir mettre à niveau tous les six mois, sauter de version LTS en version LTS te permet de ne faire ce saut que tous les deux ans et de conserver la même version de tes logiciels pendant ce laps de temps…

    Pour flash c’est vraiment compliqué… Toute l’histoire ici.

    L’article dit que tu peux installer Chrome (le navigateur made by Google) qui dispose d’une version plus récente de ce greffon. C’est à essayer… Tu peux même peut-être utiliser Chromium, c’est la version libre de Google Chrome, qui est disponible dans la logithèque Ubuntu.

    À tous hasard, le plugin est bien installé ? Tu peux voir la liste des plugins installés en tapant about:plugins dans la barre d’adresse de Firefox. Si ce n’est pas le cas le package à installer s’appelle libflashplugin-installer
    ```

  • [^] # Re: Oui

    Posté par  . En réponse au message Mises à jours sous Linux - Ubuntu. Évalué à 2.

    ça qui bug

    C’est à dire ? Flash ne fonctionne pas ou bien tu as juste un message lors des mises à jour ?

  • [^] # Re: Oui

    Posté par  . En réponse au message Mises à jours sous Linux - Ubuntu. Évalué à 3.

    Pour les autres applications Adobe vous trouverez des équivalents sous Ubuntu tout aussi efficaces.

    Tous aussi efficace ce n’est pas toujours vrai. Concernant le format PDF, le support de certaines des dernières fonctionnalités développées par Adobe est parfois absent chez les équivalents libres.

    Une mise à jour empêche une application malveillante d’utiliser une faille connue également, en la bouchant…