2

Есть ли программное обеспечение / сценарий или каким-либо образом я могу заменить все her в документе с him и his где это применимо, соответственно, автоматически?

пример

Calls her and tells her that her car is …

в

Calls him and tells him that his car is …

2 ответа2

7

Короткий ответ: да, но это сложнее, чем вы думаете.

Длинный ответ: обычный код поиска и замены работает на морфологическом уровне, то есть рассматривая форму текста, а не понимая его значение. Но нет никаких морфологических признаков, позволяющих дифференцировать объективные и притяжательные падежи местоимения самки от третьего лица, поэтому обычные поиски и замены не могут определить разницу между ними. Чтобы сделать это, вам нужен инструмент, который может анализировать ваш текст на лексическом уровне - то есть тот, который может исследовать текст и получить его значение.

Это гораздо более сложная проблема, чем простой поиск и замена, если только ваша проблемная область не достаточно строго ограничена, чтобы вы могли собрать несколько эвристик, а затем вручную проверить и исправить результат. Если вам это сойдет с рук, отлично!

Если нет, и это проблема, стоящая усилий для написания кода для правильного выполнения этой работы, то вам стоит начать с программного репозитория 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 сообщает нам положение символов, а также части речи, вместо семантики поиска и замены мы могли бы на самом деле обходить дерево разбора и восстанавливать предложение слово за словом, заполняя пробел между словами и заменяя местоимения интерес, как мы сталкиваемся с ними.

И вот как вы можете это сделать! Очевидно, это более или менее легкая из возможных обработка такого сложного предмета, но, если вы склонны писать необходимый код, этого должно быть достаточно, чтобы получить стартовые блоки. Удачи!

-2

Очевидный подход состоит в том, чтобы использовать инструмент поиска и замены практически в любом текстовом процессоре (или в Unix, используя sed), чтобы найти все экземпляры слова «ее» и заменить на «его»; и наоборот. Чтобы сделать это в sed, вы можете запустить sed 's/her/his/g [file]'

Тем не менее, это не сработает в большинстве случаев из-за неоднозначности местоимения «ее». Кроме того, у этого подхода есть более тонкие проблемы, такие как:

Она сказала своему другу, что ее сад был прекрасен. Вы могли бы интерпретировать это предложение, означающее, что Сара сказала Джейми, что сад Джейми прекрасен, то есть, что вторая «она» относится к другу, а не к говорящему. В этом случае слепой поиск и замена не сможет определить, к кому относится местоимение. Эта проблема фактически тщательно изучена в кругах обработки естественного языка и известна как совместное разрешение. К сожалению, он, вероятно, еще недостаточно зрел, чтобы использовать его в своих целях.

Кроме того, если вы слепо заменили «ее» на «его», вам также нужно будет заменить «она» на «он», потому что она сказала, что его друг подразумевает нечто совершенно иное!

Короче говоря, простой набор инструкций по поиску и замене (либо вручную, либо с помощью некоторого инструмента, такого как sed или awk) не будет соответствовать задаче, но не будет использовать современные инструменты для синтаксического анализа и разрешения ссылок действительно единственный практический вариант.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .