JavaScript library that converts a string to gender-neutral language?
One of the options I'd like to provide is the ability to ensure that the content is gender-neutral to avoid bias.
For example, a summary that includes the text: "She is an esteemed archaeologist and writer based in Greece. Her primary residence is in Athens, but she spends much of her time in Marrakech."
Should be converted to: "They are an esteemed archaeologist and writer based in Greece. Their primary residence is in Athens, but they spend much of their time in Marrakech."
I started by just creating a function with a bunch of .replaceAll() statements, but quickly realised that changing from "he"/"she" to "they" changes pretty much every verb that follows the word (e.g. he runs > they run, she does > they do, etc...).
Just wandering if anyone has heard of a library to tackle this or has any other ideas on how to tackle the task.
Thanks!
12 comments
[ 2.5 ms ] story [ 18.2 ms ] threadReplacing with "s/he" could be a viable option, however. It doesn't read particularly well but it does seem to do the job—I will definitely consider this option!
That will prevent errors of concord (everything remains singular so you don’t have to change the verbs) and the sentences will mostly flow fine.
Your example would become: “Candidate is an esteemed archaeologist and writer based in Greece. Candidates’s (or “their”) primary residence is Athens, but they spend much of their time in Marrakech.
That seems to work. I will have a play around with this to see if it reads well with a few more examples.
[0] https://github.com/spencermountain/compromise
You can either integrate it with external tooling (common use is in a build pipeline for docs), or use the JS API directly: https://github.com/get-alex/alex#api.
I've had a quick look and it looks great for identifying where improvements can be made to content in your codebase.
I don't think it's suitable for my use case as the content will be in a database or localStorage, and it seems to only be able to recommend changes rather than dynamically make them. Unless I have misinterpreted things.