用“他”和“他的”代替“她”?

用“他”和“他的”代替“她”?

是否有软件/脚本或任何方法可以让我自动用和分别适用的部分替换her文档中的所有内容?himhis

例子

Calls her and tells her that her car is …

Calls him and tells him that his car is …

答案1

简短的回答是:是的,但它比你想象的要难。

长答案:普通的查找和替换代码在形态层面上运行,即通过查看文本的形式而不是理解其含义。但是没有形态指示来区分第三人称女性代词的宾格和所有格,因此普通的查找和替换无法区分它们。为了做到这一点,您需要一个可以在词汇层面分析文本的工具——也就是说,可以检查文本并得出其含义的工具。

这比简单的查找和替换要困难得多,除非你的问题范围足够严格,以至于你可以拼凑一些启发式方法,然后手动检查并修补结果。如果你能做到这一点,那就太好了!

如果没有,而且这是一个值得努力编写代码来正确完成工作的问题,那么你最好开始使用斯坦福 NLP 项目的软件存储库,特别是 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 告诉我们字符位置和词性,所以我们可以实际遍历解析树并逐字重建句子,填充单词之间的空白,并在遇到感兴趣的代词时进行替换,而不是使用查找和替换语义。

这就是你该怎么做的!显然,这或多或少是对如此复杂主题的最轻松的处理——但是,如果你愿意编写必要的代码,这应该足以让你进入起跑线。祝你好运!

相关内容