Substitua 'her' por 'him' e 'his'?

2

Existe um software / script ou de qualquer forma eu posso substituir todo o her em um documento com him e his onde quer que seja aplicável respectivamente?

exemplo

Calls her and tells her that her car is …

para

Calls him and tells him that his car is …
    
por laggingreflex 10.10.2013 / 16:57

2 respostas

7

A resposta curta: Sim, mas é mais difícil do que você pensa.

A resposta longa: O código comum de localizar e substituir opera em um nível morfológico, isto é, olhando para a forma de um texto em vez de entender seu significado. Mas não há indicação morfológica para diferenciar os casos objetivos e possessivos do pronome feminino de terceira pessoa, de modo que o achado e o substituto comuns não podem dizer a diferença entre eles. Para fazer isso, você precisa de uma ferramenta que possa analisar seu texto em um nível léxico - isto é, um que possa examinar o texto e derivar seu significado.

Esse é um problema muito mais difícil do que localizar e substituir, a menos que o domínio do problema esteja restrito o suficiente para que você possa hackear algumas heurísticas e, em seguida, inspecionar e corrigir manualmente o resultado. Se você puder se safar disso, ótimo!

Se não, e é um problema que vale o esforço de escrever código para fazer o trabalho corretamente, então você deve iniciar com o repositório de software do Stanford NLP Project , especificamente o CoreNLP, que inclui um excelente tagger de fala - a ferramenta exata que você precisa para executar a análise lexical que descrevi.

Para produzir um exemplo do que você obtém do CoreNLP, eu forneci a demonstração on-line do CoreNLP a seguinte frase, com base nos seus exemplos:

He calls her and tells her that her car is ready for pickup.

que é tokenized assim:

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    

Com referência a uma lista das tags de palavras de voz padrão de fato , descobrimos que a CoreNLP identificou corretamente o caso de cada pronome em que estamos interessados - PRP para pronomes pessoais, PRP $ para pronomes possessivos.

Munidos dessa informação, e do conhecimento dos equivalentes de gênero oposto de cada caso de pronome, poderíamos realizar nossas substituições; na verdade, como o CoreNLP nos diz posições de caráter e partes da fala, em vez de uma semântica de localizar e substituir, podemos realmente analisar a frase palavra-por-palavra, preenchendo o espaço entre as palavras e substituindo os pronomes de interesse como nós os encontramos.

E é assim que você pode fazer isso! Obviamente, isso é mais ou menos o tratamento mais leve possível de um assunto tão complexo - mas, se você estiver inclinado a escrever o código necessário, isso deve ser o suficiente para colocá-lo nos blocos iniciais. Boa sorte!

    
por 10.10.2013 / 18:13
-2

A abordagem óbvia seria usar a ferramenta localizar e substituir em praticamente qualquer processador de texto (ou em unix, usando sed ) para localizar todas as instâncias de 'her' e substituir por 'him'; e vice versa. Para fazer isso no sed, você pode executar sed 's/her/his/g [file]'

No entanto, isso não funcionaria na maioria dos casos devido à ambiguidade do pronome 'her'. Além disso, há problemas mais sutis com essa abordagem, como os seguintes:

Ela disse à amiga que o jardim dela era adorável. Você poderia interpretar essa frase significando que Sarah disse a Jamie que o jardim de Jamie era adorável, isto é, que o segundo "ela" se refere ao amigo, e não ao orador. Neste caso, uma busca e substituição cega não seria capaz de distinguir a quem o pronome se refere. Esse problema é realmente estudado em círculos de processamento de linguagem natural e é conhecido como resolução de co-referência. Infelizmente, é provável que não seja quase maduro o suficiente para ser usado para seus propósitos.

Além disso, se você substituiu cegamente 'her' por 'him', você também precisaria substituir 'She' por 'He', porque ela disse que o amigo dele implica algo completamente diferente!

Portanto, um conjunto simples de instruções para localizar e substituir (manualmente ou por meio de alguma ferramenta como sed ou awk ) não estará à altura da tarefa, mas não usará ferramentas de última geração para análise sintática e resolução de co-referência, é realmente a única opção prática.

    
por 10.10.2013 / 18:12