Exploration de texte : trouver un mot donné, puis obtenir les mots de chaque côté de celui-ci<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'essaie d'extraire du texte dans des commentaires saisis manuellement. Heureusement, il y a un peu un modèle. Dans les 10 premiers mots, si le mot "à" apparaît, les mots de chaque côté de "à" sont les mots que je veux.
J'ai pris l'initiative de créer une colonne Expression avec la formule : Mots[Commentaires]. Il a renvoyé une liste des mots de la colonne Commentaires - plutôt cool.
Alors, que dois-je faire ensuite pour savoir si "to" apparaît dans les dix premiers mots et si oui, saisir les mots de chaque côté de "to" ?
Re : Exploration de texte : trouver un mot donné, puis obtenir les mots de chaque côté de celui-ciMerci à tous! Désolé pour la réponse tardive - j'étais occupé à faire l'exploration de texte pour une réunion annuelle qui vient de se terminer.
Donc, j'ai utilisé l'approche de la formule de Jeff parce que je n'avais pas beaucoup de temps pour faire quelque chose de vraiment élégant. Maintenant, j'ai le temps d'apprendre les regex. Je développerai une solution scriptée pour cette analyse afin de pouvoir la faire rapidement l'année prochaine.
Le nettoyage des données / extraction des informations était la partie compliquée de ce travail. La formule m'a aidé à trouver ce que je cherchais. Mais, j'ai encore dû faire beaucoup de travail dans les colonnes > Recoder. Chapeau à ceux qui l'ont rendu si puissant dans JMP12 !
BTW, l'exploration de texte ferait un excellent webinaire Mastering JMP .
Re : Exploration de texte : trouver un mot donné, puis obtenir les mots de chaque côté de celui-ciSi je l'ai dit une fois, je l'ai dit un million de fois.Si vous envisagez de faire de l'exploration de texte, cela vaudrait la peine de passer une heure à apprendre les expressions régulières.Des tonnes de superbes vidéos YouTube et il y a même une très bonne section à leur sujet dans le Guide de script.
texte = "Exemple de texte à la question." ;
Réponse 1 = expression régulière ( texte , "(\w+) à (\w+)" , "\1" ) ;
réponse2 = expression régulière ( texte , "(\w+) à (\w+)" , "\2" ) ;
réponse = expression régulière ( texte , "(\w+) à (\w+)" , "\1" || ", " || "\2" ) ;
imprimer ( Réponse 1 ) ;
imprimer ( réponse2 ) ;
imprimer ( réponse ) ;
production:
"texte"
"la"
"texte, le"
Re : Exploration de texte : trouver un mot donné, puis obtenir les mots de chaque côté de celui-ciIan@JMP a un bel exemple scripté.
Si vous voulez le faire dans une formule de colonne, cela ressemblera à ceci.

Cette formule utilise un Variable locale pour tenir la position du "à".
J'ai joint un tableau de données avec une colonne avec cette formule pour montrer comment cela fonctionne.
NB : Si "to" apparaît en position 10 cela vous donnera les mots 9 et 11. Si ce n'est pas ce que vous voulez, vous devrez ajouter une condition supplémentaire à l'intérieur de If().
Re : Exploration de texte : trouver un mot donné, puis obtenir les mots de chaque côté de celui-ciSans être trop fantaisiste, peut-être quelque chose comme ça ? Le second donne '{}' car le dernier 'mot' est 'to'. pas 'à'. Mais vous pouvez coder autour de cela si nécessaire.
NomsDefaultToHere ( 1 ) ;
motsCeParenthèseÀ =
Fonction ({ chaîne } , { Locale par défaut } ,
strWords = Mots ( chaîne ) ;
toPos = Loc ( strWords , "à" ) ;
Mots requis = {} ;
si ( toPos <= dix ,
si ( toPos > 1 , Insérer dans ( Mots requis , strWords [ toPos - 1 ])) ;
si ( toPos < NIéléments ( strWords ) , Insérer dans ( Mots requis , strWords [ toPos + 1 ])) ;
) ;
EvalList ( Mots requis ) ;
) ;
exemple de texte = "Voici une phrase qui ne contient pas trop de fois." ;
Imprimer ( motsCeParenthèseÀ ( exemple de texte )) ;
exemple de texte = "Voici une phrase qui contient to." ;
Imprimer ( motsCeParenthèseÀ ( exemple de texte )) ;