Nlp 移除';人';从文本开始? 导入空间 >>>en=空间荷载('en') >>>text=“乔正在街上走。他想知道丹·乔丹是否很快就会回家。” >>>doc=en(文本) >>>people=[e表示文档中的e,如果e.label=PERSON'] >>>印刷品(人) [乔,丹·乔丹] >>>打印(doc.ents) (乔、丹·乔丹)

Nlp 移除';人';从文本开始? 导入空间 >>>en=空间荷载('en') >>>text=“乔正在街上走。他想知道丹·乔丹是否很快就会回家。” >>>doc=en(文本) >>>people=[e表示文档中的e,如果e.label=PERSON'] >>>印刷品(人) [乔,丹·乔丹] >>>打印(doc.ents) (乔、丹·乔丹),nlp,spacy,Nlp,Spacy,我希望能够用一个标签删除或替换所有的ENT,在本例中为“PERSON”——因此不知何故获得“x正在街上走,他想知道x是否很快会回家” 最好的方法是什么?我想你必须以某种方式重新整理文档并删除/替换“PERSON”字符串,但是我不知道如何在遍历文档时检查令牌是否是ent,以及than-ent是否有“PERSON”标签……您可以指定一个令牌扩展名,该扩展名不同于其他可变字段,并且可以存储所需信息。在这种情况下,您可以复制每个令牌的文本,然后通过更改此项来匿名化实体 导入空间 spacy.tokens

我希望能够用一个标签删除或替换所有的ENT,在本例中为“PERSON”——因此不知何故获得“x正在街上走,他想知道x是否很快会回家”


最好的方法是什么?我想你必须以某种方式重新整理文档并删除/替换“PERSON”字符串,但是我不知道如何在遍历文档时检查令牌是否是ent,以及than-ent是否有“PERSON”标签……

您可以指定一个令牌扩展名,该扩展名不同于其他可变字段,并且可以存储所需信息。在这种情况下,您可以复制每个令牌的文本,然后通过更改此项来匿名化实体

导入空间
spacy.tokens.token.token.set_扩展名('匿名化',默认值='')
text=“乔正在街上走。他想知道丹·乔丹是否很快就会回家。”
doc=en(文本)
people=[e表示文档中的e,如果e.label=PERSON']
对于文件中的tok:
tok.\uu.anonymized=tok.text
对于人耳鼻喉科:
ent[0]。u.anonymized=“X”
对于范围(1,len(ent))中的i:
ent[i]。u.匿名=“”
“.join”([tok.\u0.anonymized+(“if-tok.whitespace\u0.else”)
对于文档中的tok,如果tok.[匿名])
你会得到:

'X is walking down the street. He is wondering if X will be home soon.'
您可能需要更仔细地进行详细说明