voici la traduction en powershell (disponible sous ton windows) :
$mot = New-Object 'system.collections.generic.dictionary[string,double]'
foreach($ligne in get-content test.csv){foreach($valeur in -split
$ligne){$mot[$valeur]++}}
$mot
ceci est équivalent à la ligne Gawk.
Pour l'explication combinée :
1) définition d'un collection "dictionnaire en powershell" (obligé car
sinon marche pas)
$mot = New-Object 'system.collections.generic.dictionary[string,double]'
2)
foreach( -- pour chaque element rencontré
$ligne in get-content test.CSV -- on extrait le contenu du
fichier test.csv
foreach( -- pour chaque element rencontrés
$valeur in split $ligne -- on recupere dans $valeur tous
les élements de $ligne séparé (split sépare par défaut avec espace).
{$mot[$valeur]++} - on incrémente le compteur relatif au
mot trouvé.
On aura donc un tableau contenant par exemple : $mot["mot1"=1,
$mot["mot4"]=2, etc ...
3) affichage du tableau
$mot
gawk '{a[$0]++} END{for (k in a) print k,a[k]}' RS='[[:space:]]+' test.csv
1) par défaut gawk traite par ligne et ici on fixe le RecordSeparator (RS)
à un espace ou +RS='[[:space]]+'
2) pour chaque ligne,
{a[$0]++} -- voici toute la puissance du truc, $0 ce sont les éléments
trouvés entre chaque RS (record séparator), ici les mots.
On incremente donc le tableau a["motxxx"] de 1 (via ++ )
3) END{for (k in a) print k,a[k]}'
Après avoir tout traité le fichier,
on affiche tous les éléments du tableau (for k in a) et on imprime le mot
(k) et sa valeur comptée a[k]
J'espère avoir pas été trop technique ;)
Yves
Le mar. 11 mai 2021 à 00:43, yves dutrieux <ydutrieux@gmail.com> a écrit :
Bonjour,
le tableur n'est pas le meilleur outil pour cela,
awk/gawk/powershell peuvent à mon avis le faire très facilement :
sous ubuntu wsl (avec win100) si ton fichier s'appelle test.csv et si ton
délimiteur de mot est un ou plusieurs espaces :
gawk '{a[$0]++} END{for (k in a) print k,a[k]}' RS='[[:space:]]+' test.csv
te donneras ce que tu souhaites.
En fait, il faut créer une "collection" ou table hash avec comme index les
mots trouvés et tu additionnes la valeur.
Yves
Le lun. 10 mai 2021 à 09:00, Nicolas Abel <nicolas.abel1@ac-reunion.fr> a
écrit :
Bonjour à tous.
J'aurais besoin de faire une analyse sémantique d'un fichier csv.
Une colonne de ce fichier contient des chaînes de caractères; j'aurais
besoin de trouver les mots les plus fréquents et de compter le nombre d'
occurrences.
Je vais probablement pouvoir trouver un outil tierce qui sache le faire;
mais je préférerais de loin pouvoir faire cela avec mon tableur préféré.
J'imagine qu'il y a des solutions basées sur les expressions régulières
par exemple; mais cela dépasse soit mon imagination, soit mes
compétences, soit les deux :)
Si vous avez des idées, je suis preneur.
En vous remerciant par avance pour votre aide.
Nicolas.
--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour vous
désinscrire
Les archives de la liste sont disponibles à
https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy
--
web site : http://www.molenbaix.com
--
web site : http://www.molenbaix.com
--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy
Context
- Re: [fr-users] Analyse sémantique d'un fichier csv ? ( administration et traitement de journaux) (continued)
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.