Guts / elgeopaso

Statistiques dynamiques sur les offres d'emploi en géomatique publiées sur le forum francophone GeoRezo
https://elgeopaso.georezo.net
GNU General Public License v3.0
2 stars 0 forks source link

Les codes des départements ne sont pas bien extraits lorsqu'un chiffre est également présent dans le titre #17

Closed Guts closed 4 years ago

Guts commented 6 years ago

Du coup toutes les offres évoquant la 2D, la 3D etc. n'identifient pas de lieux... Ce laxisme est en partie lié à la gestion des codes de départements qui contiennent des lettres.

Exemples en production :

biratchet commented 6 years ago

Il me semble que la correction des codes de département peut être simple (remplacer par Corse du Sud et Nord); en revanche, ce serait vraiment moche d'écrire deux D et trois D ;)

yjacolin commented 6 years ago

Comment retrouves tu ces codes de département ?

Guts commented 6 years ago

Via une regex mais c'est rendu compliqué par l'inconsistance qu'il y a dans les titres (surtout dans les premières années). Exemple : http://www.elgeopaso.fr/api/offres/80448/

A noter que je tente également de déterminer le lieu même si ce n'est pas un code de département, notamment pour tenir compte des offres sur les TOM (exemple) et pays autres que la France.

yjacolin commented 6 years ago

Elle ressemble à quoi ta regexp ?

Guts commented 6 years ago

Pas à grand chose mais tu trouveras le détail ici.

yjacolin commented 6 years ago

https://github.com/Guts/elpaso/blob/master/jobs/management/commands/analyseur.py#L344 : en fait mode accepte seulement 1 et 2, pas 0 :)

Ta regexp est erronée car elle renvoi effectivement 3D et 2D comme juste, voici une proposition : ((2[A|B])|([0-9]{2})) et test là ici https://regex101.com/

Guts commented 6 years ago

https://github.com/Guts/elpaso/blob/master/jobs/management/commands/analyseur.py#L344 : en fait mode accepte seulement 1 et 2, pas 0 :)

Non, mode prend bien 0 en valeur, d'ailleurs c'est même celle par défaut (cf. L334).

Ta regexp est erronée car elle renvoi effectivement 3D et 2D comme juste, voici une proposition : ((2[A|B])|([0-9]{2})) et test là ici https://regex101.com/

Peux-tu donner des exemples stp ? D'après mon échantillon de test, elle fonctionne :

(virtenv) PS C:\Users\$USER\Documents\GitHub\Perso\elpaso> python .\manage.py rss2db --offer_id 305865
2018-02-21 10:06:49,833 || INFO || 17812 || 10144|| settings || 71 || ============== EL PASO - DEBUG START =======================
2018-02-21 10:06:52,996 || INFO || 17812 || 10144|| analyseur || 112 || Launching analisis on 1 offers.
2018-02-21 10:06:52,999 || INFO || 17812 || 10144|| analyseur || 144 || launch analisis on : 305865
2018-02-21 10:06:53,000 || DEBUG || 17812 || 10144|| analyseur || 245 || Contract extracted from title: CDD
2018-02-21 10:06:53,001 || INFO || 17812 || 10144|| analyseur || 253 || Found contract type: CDD
2018-02-21 10:06:53,001 || DEBUG || 17812 || 10144|| analyseur || 327 || Title without contract:   visio ordinateur, photogrammétrie 3D - Saint-Mandé (94)
2018-02-21 10:06:53,001 || DEBUG || 17812 || 10144|| analyseur || 336 || STRICT regex applied: ['94']
2018-02-21 10:06:53,007 || INFO || 17812 || 10144|| analyseur || 351 || Place code MATCHED in title: ['94']
2018-02-21 10:06:53,042 || INFO || 17812 || 10144|| analyseur || 429 || Words parsed: 365
2018-02-21 10:06:53,044 || INFO || 17812 || 10144|| analyseur || 429 || Words parsed: 9
2018-02-21 10:06:53,212 || INFO || 17812 || 10144|| analyseur || 445 || Technologies identified: [<Technology: Linux>]
2018-02-21 10:06:53,217 || INFO || 17812 || 10144|| analyseur || 459 || Jobs positions identified: []
2018-02-21 10:06:53,241 || INFO || 17812 || 10144|| analyseur || 219 || Offer analyzed and inserted jobs.offer: 305865

Par ailleurs ta regex ne tient pas compte des codes des DOM (en 3 chiffres) ni des codes à 1 chiffre.

yjacolin commented 6 years ago

pour les codes à 3 chiffres tu peux modifier comme suit ((2[A|B])|([0-9]{3})) c'est quoi un code département en 1 chiffre ?

Test avec l'url que je t'ai donnée, ta regexp renvoi true avec 3D car la 2eme partie accepte un code département à un chiffre, ce qui n'existe pas. Si vraiment tu veux accepter un code à un chiffre : ((2[A|B])|([0-9]{1,3})[^D]?)

yjacolin commented 6 years ago

bon pas tout à fait, je me demande s'il ne faut pas faire deux étapes pour les codes départements puis la corse.

yjacolin commented 6 years ago

google est ton ami : /^(([\d]{2} )|(2[abAB] ))*(([\d]{2})|(2[abAB]))$/

Guts commented 6 years ago

Il me semble que la correction des codes de département peut être simple (remplacer par Corse du Sud et Nord)

@biratchet : tu ne crois pas si bien dire puisque voici la première offre entérinant la nouvelle CTC : http://www.elgeopaso.fr/api/offres/95893/ | https://georezo.net/forum/viewtopic.php?id=109765

J'ai MAJ la base des lieux et abonné l'offre à une nouvelle analyse.


pour les codes à 3 chiffres tu peux modifier comme suit ((2[A|B])|([0-9]{3})) c'est quoi un code département en 1 chiffre ?

Formellement, il n'y en a pas mais la saisie des offres n'est pas vraiment un modèle de 'norming', surtout l'historique (j'imagine avant le travail minutieux de Marc). Il y a bien des offres qui ont 1 seul chiffre

Test avec l'url que je t'ai donnée, ta regexp renvoi true avec 3D car la 2eme partie accepte un code département à un chiffre, ce qui n'existe pas. Si vraiment tu veux accepter un code à un chiffre : ((2[A|B])|([0-9]{1,3})[^D]?)

google est ton ami : /^(([\d]{2} )|(2[abAB] ))*(([\d]{2})|(2[abAB]))$/

Voici les 3 regex utilisées, via ton site (merci d'ailleurs, il est mieux que celui que j'utilisais jusqu'à présent :) ):

Sachant que SOFT n'est appliquée que si MEDIUM n'a pas marché, elle-même appliquée si STRICT ne marche pas.

Enfin, celle que tu/Google propose/s : https://regex101.com/r/YGlAni/2. D'ailleurs, tu penses bien que j'ai un peu Googlé avant de me lancer dans une passionnante quête regularexpienne ! A ce rythme, tu vas me devoir une bière pour offense ;) !

Guts commented 6 years ago

La solution poussée cette semaine en DEV puis en PROD semble porter ses fruits (sur 15 570 offres en base à date) :

A noter que :

Je ferme ce ticket jusqu'à ce qu'un autre souci/cas particulier se présente. Merci de l'échange en tout cas, ça aide bcp !

biratchet commented 6 years ago

Salut, Je verse à ce sujet l'idée que les bénévoles de l'asso (GeoRezo) peuvent être sollicités pour améliorer la qualité des données issues de la reprise. Bien sûr, le fait de les/nous solliciter ne garantie pas que le travail sera fait, mais nous avons parfois été surpris de l’intérêt porter sur certains sujets. Et cette BDD de [job] est unique! Si l'idée vous parait séduisante, on peut essayer de se motiver avec Marco pour organiser cela au sein de l'asso.

Guts commented 6 years ago

Excellente idée, surtout qu'avec les rapports hebdos, c'est désormais plus simple :

image

biratchet commented 6 years ago

Salut Julien, J'ai partagé l'idée ce soir avec l'équipe du GeoRezo. En fonction des retours, il faudra trouver une solution technique pour nous permettre de faire le ménage dans le stock, et traiter le flux.

Guts commented 6 years ago

Très bien. Je pense que sur ce sujet, on peut mobiliser au-delà de l'équipe GeoRezo. Zoé P. (@zchicago) par exemple était intéressée l'an dernier pour filer un coup de main.

Côté solution technique, les récentes évolutions vont dans ce sens et devrait normalement être suffisantes. Je te propose d'ouvrir un ticket dédié pour éviter d'allonger celui-ci :)

Guts commented 6 years ago

Je te propose d'ouvrir un ticket dédié pour éviter d'allonger celui-ci :)

=> https://github.com/Guts/elpaso/issues/23