Изображение файла csv У меня есть файл csv, который выглядит как предоставленное изображение. Я читаю файл csv, определяю шаблон и использую spacy Matcher. Я просматриваю строки и столбцы файла CSV. Моя конечная цель - определить идентификаторы электронной почты и номера SSN как конфиденциальную информацию, а также зашифровать и расшифровать их. Но, к сожалению, вся информация в процессе шифруется и расшифровывается.
import spacy
from spacy.matcher import Matcher
import csv
from cryptography.fernet import Fernet
from spacy.vocab import Vocab
from spacy.tokens import Span
from spacy import displacy
nlp = spacy.load('en_core_web_sm')
# pattern = [{"TEXT": {"REGEX": "[a-zA-z0-9-_.] +@[a-zA-z0-9-_.]+"}, "OP":"?"}]
pattern =[{"TEXT": {"REGEX": "[a-z0-9\.\-+_] +@[a-z0-9\.\-+_]+\.[a-z]+"}, "OP":"?"}]
matcher = Matcher(nlp.vocab)
matcher.add("Email", None, pattern)
some_list = []
count = 0
file = open("PIIsampleData.csv")
csv_file = csv.reader(file)
for row in csv_file:
# print(row)
for text in row:
doc = nlp(text)
# print(doc.ents)
matches = matcher(doc)
print(matches)
ent = [(ent.text,ent.label_) for ent in doc.ents]
for match_id, start, end in matches:
span = doc[start:end]
print(span)
# print(span.text)
# print(span.text)[Here is the image of csv file][1]
# entity = [(ent.text, ent.label_) for ent in doc.ents]
if ent:
some_dict = {}
b = bytes(doc.text, 'utf-8')
name = Fernet.generate_key()
lock = Fernet(name)
code = lock.encrypt(b)
original = lock.decrypt(code)
# print(code, original, doc.text)
some_dict = {'code': code, 'original': original, 'label': ent}
some_list.append(some_dict)
# print(some_list)
count = count + 1
Я думаю, что здесь чего-то не хватает, не уверен, что это EntityRuler или что-то еще, или какая-то проблема с моим кодом.
for match_id, start, end in matches:
span = doc[start:end]
print(span)
This span is coming as blank. Ideally this should have fetched me the emails, right?
The final output when i am printing some_list is all the columns encrypted and decrypted, where as i want only emails and SSN to be identified as sensitive information and encrypted. I know i haven't defined regex for SSN yet, so just help me with emails for now.
CSV
Employee Name,Employee Email,Phone,Personal number,Organisation number,SSN
Price Cummings,lectus.Nullam@tristique.ca,1-509-928-5746,0,364858-2678,795-63-3325
McKenzie G. Rios,ullamcorper.Duis@sempertellus.ca,1-118-309-0368,16680213 -6611,208206-7964,183-91-0062
Scarlet Estrada,ornare@dolorFuscemi.net,163-5585,16330216 -1611,727359-3280,739-89-4031
Virginia Knowles,lorem@dui.co.uk,874-2186,16691013 -3450,497114-4243,382-62-1298
Reed S. Pennington,nunc@Phasellusataugue.edu,358-0513,16930326 -4221,724596-5152,190-00-3181
Mona Nelson,pellentesque.Sed.dictum@luctus.com,1-681-841-0005,16750725 -6951,028041-2412,943-18-8562