Короткий ответ: да, но это сложнее, чем вы думаете.
Длинный ответ: обычный код поиска и замены работает на морфологическом уровне, то есть рассматривая форму текста, а не понимая его значение. Но нет никаких морфологических признаков, позволяющих дифференцировать объективные и притяжательные падежи местоимения самки от третьего лица, поэтому обычные поиски и замены не могут определить разницу между ними. Чтобы сделать это, вам нужен инструмент, который может анализировать ваш текст на лексическом уровне - то есть тот, который может исследовать текст и получить его значение.
Это гораздо более сложная проблема, чем простой поиск и замена, если только ваша проблемная область не достаточно строго ограничена, чтобы вы могли собрать несколько эвристик, а затем вручную проверить и исправить результат. Если вам это сойдет с рук, отлично!
Если нет, и это проблема, стоящая усилий для написания кода для правильного выполнения этой работы, то вам стоит начать с программного репозитория Stanford NLP Project, в частности CoreNLP, который включает в себя отличный тегер части речи - точный инструмент, необходимый для лексического анализа, который я описал.
Чтобы получить пример того, что вы получаете от CoreNLP, я на основе ваших примеров подготовил онлайн-демонстрацию CoreNLP следующего предложения:
Он звонит ей и говорит, что ее машина готова к вывозу.
который он символизировал таким образом:
Id Word Lemma Char begin Char end POS NER Normalized NER Speaker
—— —————— —————— —————————— ———————— ———— ——— —————————————— ———————
1 He he 0 2 PRP O PER0
2 calls call 3 8 VBZ O PER0
3 her she 9 12 PRP O PER0
4 and and 13 16 CC O PER0
5 tells tell 17 22 VBZ O PER0
6 her she 23 26 PRP$ O PER0
7 that that 27 31 DT O PER0
8 her she 32 35 PRP$ O PER0
9 car car 36 39 NN O PER0
10 is be 40 42 VBZ O PER0
11 ready ready 43 48 JJ O PER0
12 for for 49 52 IN O PER0
13 pickup pickup 53 59 NN O PER0
14 . . 59 60 . O PER0
Со ссылкой на список де-факто стандартных тегов части речи мы находим, что CoreNLP правильно определил регистр каждого местоимения, в котором мы заинтересованы: PRP для личных местоимений, PRP $ для притяжательных местоимений.
Вооружившись этой информацией и знанием эквивалентов противоположного пола в каждом падеже местоимения, мы могли бы выполнить наши замены; на самом деле, поскольку CoreNLP сообщает нам положение символов, а также части речи, вместо семантики поиска и замены мы могли бы на самом деле обходить дерево разбора и восстанавливать предложение слово за словом, заполняя пробел между словами и заменяя местоимения интерес, как мы сталкиваемся с ними.
И вот как вы можете это сделать! Очевидно, это более или менее легкая из возможных обработка такого сложного предмета, но, если вы склонны писать необходимый код, этого должно быть достаточно, чтобы получить стартовые блоки. Удачи!