BUG ColloquialWordswapConverter skips words next to punctuation and inserts spaces into hyphenated words

Fermée Adaptée aux débutants
#3,131 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 2 jours

@ShivamSharma43 y travaille déjà.

Depuis le 11/10/2026.

  • #3133 par @ShivamSharma43 — ouverte

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
78/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
python
Domaine
backend

Piste de recherche

Repérez ColloquialWordswapConverter dans le paquet de convertisseurs de PyRIT et lisez sa logique de tokenisation et d’espacement, ainsi que le test existant test_awkward_spacing. Reproduisez les exemples de l’issue et examinez les tests de convertisseurs voisins pour connaître les échanges de mots attendus. Le travail est terminé lorsque la ponctuation et les mots avec trait d’union conservent leur espacement d’origine, tandis que les mots admissibles sont échangés, et que la normalisation des espaces existante continue de réussir.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Describe the bug

ColloquialWordswapConverter tokenizes with re.findall(r"\w+|\S+", prompt), rejoins every token with a space, and then removes the space before ?.!,'". That loses or changes text in a few common cases:

  • A word that starts after punctuation is never swapped, because \S+ takes the whole run, e.g. (father) or "mother".
  • A space is inserted inside hyphenated words: e-mail becomes e -mail, father-in-law becomes papa -in-law.
  • The clean-up regex removes a space the user wrote: a 'quoted' word becomes a'quoted' word.

To Reproduce

import asyncio
from pyrit.converter import ColloquialWordswapConverter

c = ColloquialWordswapConverter(deterministic=True)
for s in ["Ask (father) first.", '"mother" said hi', "My father-in-law called.", "e-mail your brother", "a 'quoted' word"]:
    print(repr(s), "->", repr(asyncio.run(c.convert_async(prompt=s)).output_text))
'Ask (father) first.' -> 'Ask (father) first.'
'"mother" said hi' -> '"mother" said hi'
'My father-in-law called.' -> 'My papa -in-law called.'
'e-mail your brother' -> 'e -mail your bro'
"a 'quoted' word" -> "a'quoted' word"

Expected behavior

Words are swapped wherever they appear and surrounding punctuation is left as written: Ask (papa) first., "mama" said hi, My papa-in-law called., e-mail your bro, a 'quoted' word. The existing whitespace normalization (test_awkward_spacing) stays as it is.

Version

main at 60c3386a, Python 3.11, Windows.

Langage dominant
Python
Étoiles
4.7k
Forks
1k
Merge moyen
2 j 4 h
PR mergées (30 j)
510

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

  • Aucun Dockerfile ni fichier Docker Compose
  • Propose un modèle de pull request
  • Aucun guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de microsoft/PyRIT

Toutes les issues de microsoft/PyRIT

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.