gpt4 book ai didi

python - 如何根据条件替换字符串中的单词?

转载 作者:行者123 更新时间:2023-12-05 04:27:20 25 4
gpt4 key购买 nike

我在这样的数据框中有一列。

Text
"Lorum Ipsum Rotterdam dolor sit."
"ed ut perspiciatis Boekarest, New York, consectetur adipiscing elit, sed "
"Excepteur sint occaecat Glasgow cupidatat non proident, sunt in culpa"

我希望每个地理位置都替换为“GPE”。

我正在使用 spacy 来检测实体。这工作正常,如下所示。

nlp = spacy.load('en_core_web_lg')

for value in df['text']:
doc = nlp(value)
for ent in doc.ents:
print(ent.text, ent.label_)
Output: 
Rotterdam GPE
Boekarest GPE
New York GPE
Glasgow GPE

我尝试了下面的代码来替换列中的城市名称,但它不起作用。

for value in df['text']:
doc = nlp(value)
for ent in doc.ents:
for word in value.split():
if ent.label_ == "GPE":
word.replace(ent.label, "_GPE_")

有没有人看到我做错了什么?

最佳答案

你可以使用

import spacy, warnings
import pandas as pd
warnings.filterwarnings("ignore", 'User provided device_type of \'cuda\', but CUDA is not available. Disabling')

df = pd.DataFrame({'Text':["Lorum Ipsum Rotterdam dolor sit.", "ed ut perspiciatis Boekarest, New York, consectetur adipiscing elit, sed ", "Excepteur sint occaecat Glasgow cupidatat non proident, sunt in culpa"]})
nlp = spacy.load('en_core_web_lg')

def redact_gpe(text):
doc = nlp(text)
newString = text
for e in reversed(doc.ents):
if e.label_ == "GPE":
start = e.start_char
end = start + len(e.text)
newString = f'{newString[:start]}GPE{newString[end:]}'
return newString

df['Text'] = df['Text'].apply(redact_gpe)

输出:

                                                                   Text
0 Lorum Ipsum GPE dolor sit.
1 ed ut perspiciatis GPE, GPE, consectetur adipiscing elit, sed
2 Excepteur sint occaecat GPE cupidatat non proident, sunt in culpa

关于python - 如何根据条件替换字符串中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72830367/

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