I find myself using redundant words. (Ask a question: To ask is to pose a question, so question is redundant.) Apart from experience, is there any method to self-check?
I doubt there's any mechanical way to do this reliably, like a piece of software.
Some redundancies are necessary to make a complete sentence. Like your example, "May I ask a question?" You could say that "question" is redundant, as what else could one ask except a question. But how would you leave it out? "May I ask?" That just sounds awkward and incomplete. "May I ask something?" Okay, but what's the "something" that you're going to ask? Presumably a question. So what was gained by being vague? Etc.
Sometimes we are deliberately redundant for emphasis. "He was strong and powerful." Well, "strong" and "powerful" here are basically synonyms. We say it in two different ways just to make the point more forcefully.
You have to weed out the redundancies that are just a waste of time from those that have a purpose.
I would recommend checking out ProWritingAid.com. It's an online editing tool that points out many areas of writing similar to what you mentioned, so it might do what you're looking for.
Edit: I don't have any affiliation with this company other than being a happy customer of theirs for several years now. In the past (and currently) I've used this tool to see redundancies, wordy sentences and overused adjectives in my own writing and improve based off what I learned from the tool.
Hope this helps.
If you were writing in German, the softwares Papyrus Autor (since 1992, Germany) and Patchwork (since 2014, Austria), both very similar in functionality to Scrivener, offer an advanced style analysis tool that marks up register, repetitions, filler, overly long sentences, and other stylistic weaknesses. The style analysis was proposed to the developers of Papyrus by German author Andreas Eschbach, who explains it on his website, both in general and in Papyrus.
I understand that probably none of you write in German, but I posted this answer anyway to show that a solution is theoretically possible, both programmatically and manually. You may want to try Google Translate to read Eschbach's article and see if his method seems plausible to you, although I must admit that that translation is terrible and requires quite a bit of hard thinking to make sense of.
Let yourself be redundant in your first draft. Just write it as it comes out of your head.
You'll go through your work many times in revision. If you're especially concerned about redundancies, do a pass focusing completely on that. (I revise on paper with a pencil, marking things to fix throughout. Sometimes reading it aloud makes the rhythms of your work more apparent.)
When you have your readers review your work, ask one or more of them to focus on redundancy as well.