Les meilleurs développeurs C++ freelances sont sur Codeur.com

Extraction de chaines de mots d'un fichier...

 Fermé·30 à 300 €·3 offres·824 vues


Bonjour.

Ci joint un projet de traitement de chaîne de mots qui peut apparaître simple au premier abords mais qui nécessite certaines compétences en terme d'algo et d'optimisations: merci de lire jusqu'au bout pour éviter de poser des questions sur les aspects techniques déjà mentionnés.

OBJECTIF: A partir d'un fichier csv contenant près de 20 millions de lignes formatées de la manière suivante (phrases;numero de catégorie), je souhaite extraire les chaines de mots les plus petites possibles qui appartiennent à 100 % à la catégorie nommée.

Un exemple sera parlant:

FICHIER SOURCE CSV

le choux blanc;1
le vinaigre rouge;2
les 3 petits cochons;2
un choux rouge;2

Nous avons 4 lignes et 2 catégories dans cet exemple (dans la réalité on a environ 60 catégories et 20 millions de lignes soit un fichier de près de 550 Mo).

Le logiciel doit étudier toutes les chaines de mots (plusieurs par lignes...) et sortir autant de fichiers qu'il y a de catégories. (nommé out1.csv, out2.csv...dans le même répertoire de travail que celui du logiciel)

Remarques:

- Le fichier source ne contient que des chaines à caractères alpha numériques
- l'ordre des mots doit être conservé
- Les délimiteurs sont les espaces

OUT1.CSV contiendra:

blanc
le choux

OUT2.CSV contiendra:

vinaigre
rouge
les
3
petits
cochons
un

Dans ce cas, nous avons des chaines de mots plutôt courtes, mais il est courant d'avoir plusieurs mots si la liste est longue.

Que me donnent ces résultats ? Comment les interpréter ?

En reprenant le fichier de sortie out1.csv, je suis capable de dire que la chaîne de mot "blanc" appartient à 100% à la catégorie 1. De même, pour "le choux"...

Pourquoi, n'ai je pas "le choux blanc" ou "choux blanc" ?

Tout simplement car j'ai indiqué plus haut, que je souhaite retenir les chaines les plus courtes possibles ! Donc comme "le choux" suffit, la chaîne "le choux blanc" n'a pas besoin d'être retenue.

Une des difficultés de l'optimisation réside de ne pas traiter plusieurs fois les mêmes chaines de mots...

Contraintes techniques: Le logiciel doit tourner sous Linux et être optimisé pour être parallélisé sur plusieurs processeurs. Je souhaite choisir le nombre de CPUs utilisés (entre 8 et 96). La limite de ressources mémoire vive doit être de 16 Go max.

Lorsque le logiciel est lancé, j'aurai besoin de connaitre l'évolution du "job".

Je possède déjà un logiciel qui fait l'ensemble de ce travail très correctement mais le langage de programmation utilisé ne gère pas le multicœur et manque de rapidité. Ce projet demande donc un langage de programmation très puissant et un bon algo !

Les scripts LINUX SED, GREP seraient trop longs, donc merci de ne pas exploiter cette voie.

N'hésitez pas à venir vers moi si vous avez des questions.

Merci

Budget indicatif : 30 à 300 €

Publication : 27 janvier 2014 à 11h28

Profils recherchés : Développeur C++ freelance, Développeur linux freelance

Le profil du client est reservé aux prestataires abonnés

Créer un compte

3 freelances ont répondu à ce projet

3 propositions de devis en moins de 2h

A
Publier un projet similaire

Chaque jour, des centaines de clients utilisent Codeur.com pour trouver un prestataire. Créez votre compte dès maintenant, remplissez votre profil et trouvez de nouveaux clients.

Trouver des nouveaux clients

Votre navigateur Web n’est plus à jour. Il ne permet pas d’afficher correctement le site Codeur.com.
Nous vous invitons à mettre à jour votre navigateur ou à utiliser un autre navigateur plus récent.