Améliorer la communication Regex avec des méthodes pragmatiques
Une nouvelle approche améliore l'expérience utilisateur lors de la création d'expressions régulières.
― 7 min lire
Table des matières
La programmation peut être galère pour pas mal de gens, surtout quand il s'agit d'écrire des Expressions régulières (regex). Les regex sont des outils super utiles pour trouver et organiser du texte, mais ça peut vite devenir confus, même pour des programmeurs aguerris. Pour aider avec ça, une méthode appelée Programmation par exemple (PBE) a été développée. Cette méthode permet aux utilisateurs de donner des Exemples de ce qu'ils veulent au lieu d'écrire le code eux-mêmes. Cependant, les exemples peuvent souvent prêter à confusion parce qu'ils manquent parfois de clarté.
Dans cette étude, on se penche sur comment améliorer la communication entre les utilisateurs et les programmes informatiques lors de la création de regex avec PBE. On se concentre sur un type de PBE appelé Communication pragmatique, où le système essaie de comprendre ce que l'utilisateur veut basé sur les exemples donnés. On compare aussi cette méthode à des méthodes traditionnelles qui ne font pas appel au raisonnement pragmatique.
Le défi des expressions régulières
Les expressions régulières sont des outils puissants pour le traitement de texte, utilisés dans plein de domaines comme la programmation, l'analyse de données et le développement web. Cependant, elles sont connues pour leur complexité. Même les utilisateurs expérimentés peuvent galérer à créer des modèles de regex valides sans faire d'erreurs. Le problème principal, c'est que la syntaxe et le comportement des regex sont uniques et nécessitent de la pratique et de la compréhension pour être utilisés efficacement.
La Programmation par Exemple (PBE) a été conçue pour aider avec ce défi. Au lieu de demander aux utilisateurs de rédiger des regex de zéro, ils peuvent fournir des exemples d'entrée et de sortie. Le système PBE prend ces exemples et essaie de créer la regex appropriée qui correspond à l'intention de l'utilisateur. Cependant, l'ambiguïté des exemples donnés par l'utilisateur entraîne souvent plusieurs solutions possibles en regex.
Le problème de l'ambiguïté
L'ambiguïté dans les exemples est un problème fréquent dans la PBE. Quand un utilisateur fournit un ensemble d'exemples, il peut y avoir plein de modèles de regex différents qui correspondent aux critères de ces exemples. Cela entraîne souvent le système à deviner incorrectement ou à générer une regex qui n'était pas vraiment l'intention de l'utilisateur.
Pour contourner ce problème, les systèmes PBE traditionnels demandent généralement aux utilisateurs de fournir plus d'exemples, surtout négatifs (des exemples qui ne répondent pas aux critères recherchés). Cependant, des recherches montrent que les utilisateurs hésitent souvent à donner plus que quelques exemples. Ça peut conduire à de la frustration et affecter la performance du système PBE.
Communication pragmatique
Pour adresser ces défis, on explore l'idée de la communication pragmatique dans la PBE. La communication pragmatique modélise comment les humains interagissent et transmettent du sens. En appliquant cette approche à la PBE, on vise à améliorer la capacité du système à comprendre les intentions de l'utilisateur sans compter uniquement sur un grand nombre d'exemples.
Dans cette étude, on examine comment un système de synthèse pragmatique fonctionne lorsque les utilisateurs ne fournissent que des exemples positifs (exemples qui marchent) par rapport à quand ils fournissent à la fois des exemples positifs et négatifs. On teste à quel point le système peut deviner la regex souhaitée et on évalue si l'utilisation d'une approche pragmatique rend le processus plus facile pour les utilisateurs.
Conception de l'étude utilisateur
On a mené une étude utilisateur pour comparer les performances des systèmes de synthèse pragmatique et non pragmatique. On voulait savoir quelle méthode permettait aux utilisateurs de communiquer leur regex désirée plus efficacement. Pour cela, on a recruté des participants avec des expériences variées dans l'utilisation des regex.
Pendant l'étude, les participants avaient des tâches spécifiques où ils devaient communiquer une regex cible au système. Ils fournissaient des exemples, et le système devinait la regex en fonction de ces exemples. On avait deux types principaux de synthétiseurs : un qui utilisait le raisonnement pragmatique et un autre qui ne l'utilisait pas.
Les participants ont effectué plusieurs tâches en utilisant les deux systèmes. On a enregistré des métriques comme le nombre d'exemples qu'ils devaient fournir et s'ils réussissaient à communiquer leur regex souhaitée. Après chaque tâche, les participants ont rempli des sondages pour partager leurs expériences.
Résultats
Taux de réussite et nombre d'exemples
Nos résultats ont montré que les participants travaillant avec le synthétiseur pragmatique réussissaient beaucoup mieux à obtenir la regex souhaitée. En moyenne, ils avaient besoin de beaucoup moins d'exemples que ceux utilisant le synthétiseur non pragmatique. Plus précisément, le synthétiseur pragmatique a permis aux participants de communiquer leur regex avec seulement deux exemples en moyenne, contre cinq exemples nécessaires pour le synthétiseur non pragmatique.
De plus, beaucoup de tâches avec le synthétiseur non pragmatique n'ont pas été menées à bien, surtout quand les participants étaient limités à fournir uniquement des exemples positifs. En revanche, le synthétiseur pragmatique avait des taux de réussite élevés, peu importe si les participants pouvaient utiliser des exemples négatifs ou non.
Expérience utilisateur
Les participants ont également rapporté leurs expériences subjectives à travers des sondages. Ils ont évalué à quel point il était facile de communiquer avec chaque synthétiseur, leur confiance dans les exemples qu'ils avaient fournis et à quel point ils ont trouvé les tâches mentalement exigeantes.
Dans l'ensemble, les participants ont trouvé plus facile de communiquer avec le synthétiseur pragmatique. Ils ont signalé une demande mentale plus faible et moins de frustration. Beaucoup ont ressenti plus de confiance dans leurs exemples en utilisant le système pragmatique.
Stratégies de communication
Pendant l'étude, on a observé que les participants commençaient généralement par des exemples positifs, notamment en utilisant le synthétiseur pragmatique. Ils avaient l'impression que le synthétiseur pragmatique comprenait mieux leurs intentions, ce qui a entraîné moins d'exemples nécessaires.
Les participants ont souvent exprimé que commencer par des exemples positifs était crucial. Ils ont remarqué que si le système pouvait deviner correctement sur la base de ces exemples, ils pouvaient ensuite fournir des exemples supplémentaires si besoin. Cependant, avec le synthétiseur non pragmatique, ils avaient souvent l'impression d'avoir besoin de fournir plus d'exemples, y compris des négatifs, pour clarifier leurs intentions.
Implications et travaux futurs
Nos résultats suggèrent que l'utilisation du raisonnement pragmatique dans la PBE peut vraiment améliorer l'expérience utilisateur et la performance. La capacité de communiquer efficacement avec moins d'exemples rend le processus moins frustrant et plus simple pour les utilisateurs.
À l'avenir, il y a des domaines clés pour de futures recherches. Un domaine serait d'élargir l'approche de synthèse pragmatique à des domaines plus complexes et à des ensembles d'exemples plus larges. Trouver des moyens d'optimiser les exigences computationnelles de la synthèse pragmatique sera aussi essentiel pour développer des applications plus pratiques.
En plus, ça pourrait être bénéfique d'explorer différents types de méthodes d'entrée pour les utilisateurs. Par exemple, permettre aux utilisateurs de soumettre des exemples en langage naturel ou d'autres formes d'input interactif pourrait encore améliorer la communication avec le synthétiseur.
Conclusion
En conclusion, l'utilisation de la communication pragmatique dans les systèmes de programmation par exemple, notamment pour créer des expressions régulières, montre un potentiel pour améliorer à la fois la performance et la satisfaction des utilisateurs. Cette approche minimise le nombre d'exemples nécessaires, réduit la frustration et permet aux utilisateurs d'exprimer plus clairement leurs intentions. En continuant d'explorer et d'affiner cette méthode, on peut contribuer à rendre la programmation plus accessible et efficace pour un plus large public.
Titre: The Usability of Pragmatic Communication in Regular Expression Synthesis
Résumé: Programming-by-example (PBE) systems aim to alleviate the burden of programming. However, user-specified examples are often ambiguous, leaving multiple programs to satisfy the specification. Consequently, in most prior work, users have had to provide additional examples, particularly negative ones, to further constrain the search over compatible programs. Recent work resolves additional ambiguity by modeling program synthesis tasks as pragmatic communication, showing promising results on a graphics domain using a rudimentary user-study. We adapt pragmatic reasoning to a sub-domain of regular expressions and rigorously study its usability as a means of communication both with and without the ability to provide negative examples. Our user study (N=30) demonstrates that, with a pragmatic synthesizer, end-users can more successfully communicate a target regex using positive examples alone (95%) compared to using a non-pragmatic synthesizer (51%). Further, users can communicate more efficiently (57% fewer examples) with a pragmatic synthesizer compared to a non-pragmatic one.
Auteurs: Priyan Vaithilingam, Yewen Pu, Elena L. Glassman
Dernière mise à jour: 2023-08-12 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2308.06656
Source PDF: https://arxiv.org/pdf/2308.06656
Licence: https://creativecommons.org/licenses/by/4.0/
Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.
Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.