IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AppleScript Discussion :

Utilisation de Dictionnaire


Sujet :

AppleScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 573
    Par défaut Utilisation de Dictionnaire
    Bonjour,

    Je dois rechercher des mots (dans une liste) dans un texte.
    Pour l'instant, j'utilise une liste du type

    Code applescript : Sélectionner tout - Visualiser dans une fenêtre à part
    set myListe to {...,...,...,...}

    Et ensuite je boucle sur tout les mots du texte que je compare avec chacun des éléments de la liste.
    Je voulais savoir s'il n'existe pas une méthode plus sioux (moins bourrin) pour faire ce type de recherche ?
    L'utilisation de dictionnaire par exemple ?

    Merci pour votre aide

    Thais

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Par défaut
    Salut Thais

    Toujours sur ta recherche des prénoms ?

    Le soucis est que, si tu veux bien faire, il faudrait une liste la plus exhaustive possible de tous les prénoms existants au monde : plusieurs milliers sûrement puisque certains sites en recensent plus de 23 000 (et je ne suis pas certain que ce soit totalement complet).

    Ce qui est évident en tout cas, c'est que AppleScript n'est pas un langage taillé pour ce type de traitements, une base de données serait bien plus adapté je pense, et puisque tu travailles avec Fmp, il faudrait voir si tu ne peux justement pas exploiter la puissance de ce logiciel dans ton processus de récupération des prénoms.

    Pour moi, comme-ça, de loin, je crois que tu t'es lancé dans une quête bien trop complexe et laborieuse pour l'utilisation finale que tu lui réserves... il ne faut pas oublier que, parfois (bien plus souvent qu'on ne le pense), il est bien plus simple et sûr de résoudre un problème "manuellement", que de le confier à un quelconque programme ou automatisme, aussi puissant soit-il.

    Bref, mes compétences étants limitées sur ce type de sujet, je ne pourrai t'aider d'avantage, mais réfléchis tout-de-même sur la pertinence d'un tel développement (lourd) dans le cadre de ton projet, est-ce nécessaire ?

    Même si je n'ai pas de solution, je suis ton "aventure" de près, tiens-moi au courant Stp

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 573
    Par défaut
    Salut Fredo

    Et oui, toujours dans ma recherche de prénom.
    Le but est de débroussailler le fichier.
    J'aie pris une liste des 100 prénoms homme et femme les plus rependu en France (cf. statistique prénom sur le net)
    Ce ne sera pas exhaustif, mais ca retrouvera une bonne partie des prénoms.
    Si j'ai 95% de retour positif ca sera bien et effectivement, je n'irais pas à la chasse des 5% restant, trop de cas et trop compliqué.

    Je cherche juste à faire u truc un peu propre (satisfaction personnelle ...) et d'en profiter pour continuer à apprendre un peu ce langage AS et ses limites.

    A+

    Si d'autres on des idées, n'hésitez pas .... j'explore toute les infos/idées


    Thais

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Par défaut
    Re...

    Ok, pour quelques centaines de prénoms, je pense que la piste AS reste exploitable, même si ce n'est pas a priori la plus performante à mon avis.

    Donc, imaginons une simple liste de prénoms et une chaîne de caractères qu'on souhaite analyser pour voir si un prénom "connu" se trouve dedans, voici déjà une première approche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    -- La chaîne avec le nom et les prenoms récupérée et placée dans une varaible
    set sIdentite to "Thaïs La Bretonne"
     
    -- Les deux listes de prénoms pour les femmes et les hommes
    set aPrenoms to {"Marie", "Jeanne", "Thaïs", "Jean", "Paul", "Fredo", "etc."}
     
    -- On découpe l'identité pour en faire une liste de mots distincts et on ajoute un item vide
    set aIdentite to {} & words of sIdentite & {""}
     
    -- On boucle sur chaque mot de l'identité
    repeat with sItem in aIdentite
    	-- Si le mot sItem de l'identité est trouvé dans la liste des prénoms, alors on arrête la boucle
    	if (sItem is in aPrenoms) then exit repeat
    end repeat
     
    -- Si un prenom a été trouvé il sera dans la variable sItem, 
    -- sinon c'est le dernier élément vide qui sera retourné
    return contents of sItem -- "Thaïs"
    Bon, je pense qu'il serait quand-même plus judicieux de séparer la liste de prénoms femmes et hommes, histoire d'avoir un peu plus de souplesse dans leur gestion, ça donnerait donc un truc comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    -- La chaîne avec le nom et les prenoms récupérée et placée dans une varaible
    set sIdentite to "Thaïs La Bretonne"
     
    -- Les deux listes de prénoms pour les femmes et les hommes
    set aPrenomsFemmes to {"Marie", "Jeanne", "Thaïs", "etc."}
    set aPrenomsHommes to {"Jean", "Paul", "Fredo", "etc."}
     
    -- On découpe l'identité pour en faire une liste de mots distincts
    set aIdentite to words of sIdentite
     
    -- On initialise les variables qui contiendront le prenom femme ou homme trouvé
    set sPrenomFemme to ""
    set sPrenomHomme to ""
     
    -- On boucle sur chaque mot de l'identité
    repeat with sItem in aIdentite
    	-- Si le mot sItem de l'identité est trouvé dans la liste des prénoms des femmes,
    	-- alors on renseigne la variable correspondante
    	if (sItem is in aPrenomsFemmes) then set sPrenomFemme to contents of sItem
     
    	-- Si le mot sItem de l'identité est trouvé dans la liste des prénoms des hommes,
    	-- alors on renseigne la variable correspondante
    	if (sItem is in aPrenomsHommes) then set sPrenomHomme to contents of sItem
     
    	-- Si un prénom femme ou un prénom homme a été trouvé, on arrête la boucle
    	if ((sPrenomFemme is not "") or (sPrenomHomme is not "")) then exit repeat
    end repeat
     
    return {sPrenomFemme, sPrenomHomme} -- {"Thaïs", ""}
    Maintenant, imaginons que les prénoms ne seront pas tous orthographiés correctement par les utilisateurs, il faudra au moins pouvoir chercher les mots sans tenir compte de la casse (majuscules ou minuscules) et des éventuels accents présents ou absents. AppleScript dispose d'une instruction toute prête pour faciliter ce genre de comparaisons, ce qui donne donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    -- La chaîne avec le nom et les prenoms récupérée et placée dans une varaible
    set sIdentite to "THAIS LA BRETONNE"
     
    -- Les deux listes de prénoms pour les femmes et les hommes
    set aPrenomsFemmes to {"Marie", "Jeanne", "Thaïs", "etc."}
    set aPrenomsHommes to {"Jean", "Paul", "Fredo", "etc."}
     
    -- On découpe l'identité pour en faire une liste de mots distincts
    set aIdentite to words of sIdentite
     
    -- On initialise les variables qui contiendront le prenom femme ou homme trouvé
    set sPrenomFemme to ""
    set sPrenomHomme to ""
     
    -- On boucle sur chaque mot de l'identité
    repeat with sItem in aIdentite
     
    	-- On demande à AS de ne pas tenir compte de la casse ni des accents
    	ignoring case and diacriticals
     
    		-- Si le mot sItem de l'identité est trouvé dans la liste des prénoms des femmes,
    		-- alors on renseigne la variable correspondante
    		if (sItem is in aPrenomsFemmes) then set sPrenomFemme to contents of sItem
     
    		-- Si le mot sItem de l'identité est trouvé dans la liste des prénoms des hommes,
    		-- alors on renseigne la variable correspondante
    		if (sItem is in aPrenomsHommes) then set sPrenomHomme to contents of sItem
    	end ignoring
     
    	-- Si un prénom femme ou un prénom homme a été trouvé, on arrête la boucle
    	if ((sPrenomFemme is not "") or (sPrenomHomme is not "")) then exit repeat
    end repeat
     
    return {sPrenomFemme, sPrenomHomme} -- {"THAIS", ""}
    Voilà, en gros, une première base de ce qu'on peut faire en pur AppleScript pour ce genre de traitements... à toi Thaïs de l'adapter à ton projet si jamais l'approche te convient, sachant qu'on peut encore optimiser ces codes et qu'il y a bien d'autres possibilités envisageables, et pas forcément en pur AS.

    Courage et tiens-moi au courant Stp

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 573
    Par défaut
    Salut Fredo,

    Eh bien aujourd'hui, j'aie appris le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	ignoring case and diacriticals
    Merci professeur

    Coté timing, tu penses que ca va plus vite de découper la liste en deux et faire 2 tests plutôt que de parcourir un liste globale ?

    Thais

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Par défaut
    Citation Envoyé par thais781 Voir le message
    Salut Fredo,
    Coté timing, tu penses que ca va plus vite de découper la liste en deux et faire 2 tests plutôt que de parcourir un liste globale ?
    Mmm... difficile à dire, tout va dépendre de certains facteurs, comme le nombre total d'éléments à considérer et l'algorithme de traitement utilisé, il faut faire des tests en situation pour pouvoir se prononcer...

    Sinon, en terme de souplesse de travail avec les listes, j'opterai pour une séparation personnellement, mais c'est un critère plus subjectif finalement.


Discussions similaires

  1. Utiliser le dictionnaire personnel uniquement
    Par Burt67 dans le forum Word
    Réponses: 1
    Dernier message: 26/05/2010, 18h28
  2. Réponses: 0
    Dernier message: 06/02/2010, 20h29
  3. Utilisation du Dictionnaire Word
    Par Zaki_SDwin dans le forum Débuter
    Réponses: 2
    Dernier message: 09/03/2008, 21h01
  4. [Access2003][VBA]Utilisation des Dictionnaires
    Par hoaxpunk dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/05/2007, 21h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo