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

lag*_*lex 2 find-and-replace

是否有软件/脚本或任何方式可以自动替换her文档中的所有内容him以及his分别适用的地方?

例子

Calls her and tells her that her car is …
Run Code Online (Sandbox Code Playgroud)

Calls him and tells him that his car is …
Run Code Online (Sandbox Code Playgroud)

Aar*_*ler 7

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

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

这比简单的查找和替换问题要困难得多,除非您的问题域受到足够严格的约束,您可以将一些启发式方法组合在一起,然后手动检查并修补结果。如果你能摆脱它,那太好了!

如果没有,那么编写代码以正确完成工作是一个值得努力的问题,那么您最好从斯坦福 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    
Run Code Online (Sandbox Code Playgroud)

参考事实上的标准词性标签列表,我们发现 CoreNLP 正确识别了我们感兴趣的每个代词的格——PRP 代表人称代词,PRP$ 代表所有格代词。

有了这些信息,以及每个代词案例的异性等价物的知识,我们就可以进行替换;事实上,由于 CoreNLP 告诉我们字符位置和词性,而不是查找和替换语义,我们实际上可以遍历解析树并逐字重建句子,填充单词之间的空格并替换代词当我们遇到他们时产生兴趣。

这就是你可以做到的!显然,这或多或少是对这样一个复杂主题的最轻松的处理——但是,如果您倾向于编写必要的代码,这应该足以让您进入起点。祝你好运!