python - spaCy nlp - 替换字符串
问题描述
import spacy
import en_core_web_sm
import re
nlp = en_core_web_sm.load()
document_string= 'Electronically signed by : John Douglas.; Jun 13 2018 11:13AM CST, Adam Smith.'
nlp_doc = nlp(document_string)
from spacy.matcher import Matcher
matcher = Matcher(nlp.vocab)
pattern = [{'POS': 'PROPN'}, {'POS': 'PROPN'}]
matcher.add('FULL_NAME', None, pattern)
matches = matcher(nlp_doc)
for match_id, start, end in matches:
span = nlp_doc[start:end]
names = span.text
print(span.text)
输出:
John Douglas
Adam Smith
我需要将其替换为 [hidden] 并使用显示隐藏值打印 document_string(以前的输出)
所需输出:
Electronically signed by : [hidden].; Jun 13 2018 11:13AM CST, [hidden].
解决方案
你可以简单地.replace()
在这里使用。
new_doc = nlp_doc.text
names = []
pattern = [{'POS': 'PROPN'}, {'POS': 'PROPN'}]
matcher.add('FULL_NAME', None, pattern)
matches = matcher(nlp_doc)
for match_id, start, end in matches:
span = nlp_doc[start:end]
names.append(span.text)
for name in names:
new_doc = new_doc.replace(name,'[hidden]')
结果:
In [114]: new_doc
Out[114]: 'Electronically signed by : [hidden].; Jun 13 2018 11:13AM CST, [hidden].'
推荐阅读
- sharepoint - 共享的共享点权限
- arrays - 如何在颤动中从数组中获取随机变量
- python - Docker 中的 Cron 作业不工作 - python 应用程序
- angular - Jest 测试失败,因为在使用 quill 编辑器测试组件时缺少 angular 10 中的动态导入
- jdbc - 结果集的 JDBC 事务
- google-cloud-platform - 如何在谷歌云上托管“多页”的静态网站
- powerbi - 对功率 BI 矩阵进行排序以保持年份升序
- python - 脚本中断,因为列表中不存在索引
- docker - Jenkins构建如何获取docker镜像
- php - 在 Laravel 7/8 中获取当前 URL 的一部分