3 ms·
JavaScript library that converts a string to gender-neutral language?
I'm working on a project that anonymises resumes to reduce bias and discrimination of things like location, gender and age.
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!
- mastasky 4y ago[dead]
- version_five 4y agoWhy don't you just change it all to she?
- butler952 4y agoI mean, yeah, could do. Kinda defeats the gender-neutral part though?
- version_five 4y agoIf everyone is presented as the same gender, it stops becoming a variable, no? I get that it's probably not applicable for whatever you're doing, but it would be the easiest solution. Or equivalently just put s/he?
- butler952 4y agoIn an ideal world it would be okay to name everyone "she", but in our world that candidate would still carry any biases associated with "she". Replacing 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!
- deleted 4y ago[deleted]
- andsoitis 4y agoWould it work if you replaced “he” or “she” with “candidate” and “his” or “her” with “candidate’s” or with “their”? 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.
- butler952 4y agoHmm this could work. I would prefer "they"/"their", but I quite like the "the candidate"/"their" option! That seems to work. I will have a play around with this to see if it reads well with a few more examples.
- jknutson 4y agoI’m not sure how much my suggestions answer your original question, but in the pursuit of proper grammatical structure when trying to rewrite speech, compromise [0] might be of use to you. I’ve only played around with it for a few hours at most, but from my limited experience it is a very effective (if verbose and/or a little bloated in it’s API) tool for language analysis. With some tomfoolery I’m confident you could combine it with the GP’s recommendation of alexjs to replace strings slightly-less-naively. [0] https://github.com/spencermountain/compromise https://github.com/spencermountain/compromise
- kimburgess 4y agohttps://alexjs.com/ https://alexjs.com/ 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 https://github.com/get-alex/alex#api.
- butler952 4y agoThanks for sharing this! 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.
- kimburgess 4y agoWhen using it as a lib you can pass a markdown string (https://github.com/get-alex/alex#markdownvalue-config https://github.com/get-alex/alex#markdownvalue-config) or raw text string (https://github.com/get-alex/alex#textvalue-config https://github.com/get-alex/alex#textvalue-config). This will return an object that should contain everything you need to perform a naive replacement.