gpt4 book ai didi

Python Spacy 将 ent.label_ == PERSON 的值替换为其他值

转载 作者:行者123 更新时间:2023-12-04 03:25:29 24 4
gpt4 key购买 nike

我正在使用 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 列表
  • 否则,添加当前 token 文本
  • 如果存在,则在 token 后附加任何空格。

然后,最后加入result项。

关于Python Spacy 将 ent.label_ == PERSON 的值替换为其他值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67693038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com