Python Spacy 用其他东西替换 ent.label_ == PERSON 的值
Python Spacy replace value of ent.label_ == PERSON with something else
我正在使用 Python Spacy 将任何带有标签_ ==“PERSON”的实体替换为“[XXX]”。
看来我做对了,但我正在努力在我的测试字符串中替换它:
import spacy
from spacy.matcher import Matcher
nlp = spacy.load("en_core_web_sm")
file_text = """This is my teststring. Isaac Newton is supposed to be changed."""
nlp.add_pipe("merge_entities")
def change_names(file_text):
text_doc = nlp(file_text)
mylist = []
for ent in text_doc.ents:
if ent.label_ == "PERSON":
print(ent)
mylist.append("[XXX]")
else:
mylist.append(ent.text)
res = ''.join(mylist)
print(res)
print(text_doc)
change_names(file_text)
这导致:
艾萨克·牛顿
[XXX]
这是我的测试字符串。艾萨克牛顿应该被改变。
结果应该是:
这是我的测试字符串。 [XXX] 应该更改
现在我想遍历我的 text_doc 并将任何带有 label_ == "PERSON" 的条目替换为 "[XXX]"。这不适合我。我尝试使用双 forloop 迭代字符串,如果某个项目是实体,则跳转到我在此处发布的 for 循环。有什么建议吗?
因为你只需要一个字符串输出,你可以使用
result = []
for t in text_doc:
if t.ent_type_ == "PERSON":
result.append("[XXX]")
else:
result.append(t.text)
result.append(t.whitespace_)
res = ''.join(result)
print(res)
即:
- 找到
PERSON
实体后,将 [XXX]
附加到 result
列表
- 否则,添加当前标记文本
- 如果存在,则在标记后附加任何空格。
然后,最后加入result
项。
我正在使用 Python Spacy 将任何带有标签_ ==“PERSON”的实体替换为“[XXX]”。 看来我做对了,但我正在努力在我的测试字符串中替换它:
import spacy
from spacy.matcher import Matcher
nlp = spacy.load("en_core_web_sm")
file_text = """This is my teststring. Isaac Newton is supposed to be changed."""
nlp.add_pipe("merge_entities")
def change_names(file_text):
text_doc = nlp(file_text)
mylist = []
for ent in text_doc.ents:
if ent.label_ == "PERSON":
print(ent)
mylist.append("[XXX]")
else:
mylist.append(ent.text)
res = ''.join(mylist)
print(res)
print(text_doc)
change_names(file_text)
这导致:
艾萨克·牛顿 [XXX] 这是我的测试字符串。艾萨克牛顿应该被改变。
结果应该是: 这是我的测试字符串。 [XXX] 应该更改
现在我想遍历我的 text_doc 并将任何带有 label_ == "PERSON" 的条目替换为 "[XXX]"。这不适合我。我尝试使用双 forloop 迭代字符串,如果某个项目是实体,则跳转到我在此处发布的 for 循环。有什么建议吗?
因为你只需要一个字符串输出,你可以使用
result = []
for t in text_doc:
if t.ent_type_ == "PERSON":
result.append("[XXX]")
else:
result.append(t.text)
result.append(t.whitespace_)
res = ''.join(result)
print(res)
即:
- 找到
PERSON
实体后,将[XXX]
附加到result
列表 - 否则,添加当前标记文本
- 如果存在,则在标记后附加任何空格。
然后,最后加入result
项。