Hel*_*rld 5 nlp python-3.x lstm
我希望做与这里所做的相反的事情:
import re
text = '1234-5678-9101-1213 1415-1617-1819-hello'
re.sub(r"(\d{4}-){3}(?=\d{4})", "XXXX-XXXX-XXXX-", text)
output = 'XXXX-XXXX-XXXX-1213 1415-1617-1819-hello'
Run Code Online (Sandbox Code Playgroud)
我的总体目标是XXXX使用神经网络替换文本中的所有内容。XXXX可以表示 .csv 文件中的名称、地点、数字、日期等。
最终结果将如下所示:
XXXX went to XXXX XXXXXX
Run Code Online (Sandbox Code Playgroud)
海绵宝宝去了迪斯尼乐园。
简而言之,我正在取消屏蔽文本并将其替换为使用模糊生成的数据集。
您可以使用命名实体识别(NER) 来完成此操作。这非常简单,并且有现成的工具可以做到这一点,例如spaCy。
NER 是一项NLP任务,其中训练神经网络(或其他方法)来检测某些实体,例如名称、地点、日期和组织。
例子:
海绵宝宝去了南海滩,他付了200美元的门票!
我知道,迈克尔是个好人,他常去麦当劳,但也会向圣路易斯街的慈善机构捐款。
返回:
请注意,这不是 100%!
这里有一个小片段供您尝试:
import spacy
phrases = ['Sponge Bob went to South beach, he payed a ticket of $200!', 'I know, Michael is a good person, he goes to McDonalds, but donates to charity at St. Louis street.']
nlp = spacy.load('en')
for phrase in phrases:
doc = nlp(phrase)
replaced = ""
for token in doc:
if token in doc.ents:
replaced+="XXXX "
else:
replaced+=token.text+" "
Run Code Online (Sandbox Code Playgroud)
在这里阅读更多信息:https ://spacy.io/usage/linguistic-features#named-entities
您可以根据实体类型进行替换,而不是用 XXXX 替换,例如:
if ent.label_ == "PERSON":
replaced += "<PERSON> "
Run Code Online (Sandbox Code Playgroud)
然后:
import re, random
personames = ["Jack", "Mike", "Bob", "Dylan"]
phrase = re.replace("<PERSON>", random.choice(personames), phrase)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
131915 次 |
| 最近记录: |