Động lực
Tôi làm việc với các bộ dữ liệu có chứa thông tin nhận dạng cá nhân (PII) và đôi khi cần chia sẻ một phần của bộ dữ liệu với các bên thứ ba, theo cách không phơi bày PII và khiến chủ nhân của tôi phải chịu trách nhiệm pháp lý. Cách tiếp cận thông thường của chúng tôi ở đây là giữ lại toàn bộ dữ liệu hoặc trong một số trường hợp để giảm độ phân giải của nó; ví dụ: thay thế một địa chỉ đường phố chính xác bằng quận hoặc điều tra dân số tương ứng.
Điều này có nghĩa là một số loại phân tích và xử lý nhất định phải được thực hiện trong nhà, ngay cả khi bên thứ ba có tài nguyên và chuyên môn phù hợp hơn với nhiệm vụ. Vì dữ liệu nguồn không được tiết lộ, nên cách chúng tôi tiến hành phân tích và xử lý này thiếu tính minh bạch. Do đó, khả năng thực hiện QA / QC của bất kỳ bên thứ ba nào, điều chỉnh các tham số hoặc thực hiện các sàng lọc có thể rất hạn chế.
Ẩn danh dữ liệu bí mật
Một nhiệm vụ liên quan đến việc xác định các cá nhân bằng tên của họ, trong dữ liệu do người dùng gửi, trong khi tính đến các lỗi tài khoản và sự không nhất quán. Một cá nhân riêng tư có thể được ghi ở một nơi là "Dave" và ở một nơi khác là "David", các thực thể thương mại có thể có nhiều chữ viết tắt khác nhau và luôn có một số lỗi chính tả. Tôi đã phát triển các tập lệnh dựa trên một số tiêu chí xác định khi hai bản ghi có tên không giống nhau đại diện cho cùng một cá nhân và gán cho chúng một ID chung.
Tại thời điểm này, chúng tôi có thể làm cho tập dữ liệu ẩn danh bằng cách giữ lại tên và thay thế chúng bằng số ID cá nhân này. Nhưng điều này có nghĩa là người nhận gần như không có thông tin về, ví dụ như sức mạnh của trận đấu. Chúng tôi muốn có thể truyền tải càng nhiều thông tin càng tốt mà không cần tiết lộ danh tính.
Những gì không làm việc
Ví dụ, thật tuyệt vời khi có thể mã hóa các chuỗi trong khi duy trì khoảng cách chỉnh sửa. Bằng cách này, các bên thứ ba có thể thực hiện một số QA / QC của riêng họ hoặc chọn tự xử lý thêm mà không cần truy cập (hoặc có thể có khả năng đảo ngược kỹ sư) PII. Có lẽ chúng tôi khớp các chuỗi trong nhà với khoảng cách chỉnh sửa <= 2 và người nhận muốn xem xét ý nghĩa của việc thắt chặt dung sai đó để chỉnh sửa khoảng cách <= 1.
Nhưng phương pháp duy nhất tôi quen thuộc với điều này là ROT13 (nói chung hơn, bất kỳ mật mã dịch chuyển nào ), hầu như không được tính là mã hóa; nó giống như viết tên lộn ngược và nói, "Hứa là bạn sẽ không lật tờ giấy?"
Một giải pháp tồi tệ khác là viết tắt mọi thứ. "Ellen Roberts" trở thành "ER" và cứ thế. Đây là một giải pháp kém vì trong một số trường hợp, tên viết tắt, kết hợp với dữ liệu công khai, sẽ tiết lộ danh tính của một người và trong các trường hợp khác, nó quá mơ hồ; "Benjamin Othello Ames" và "Bank of America" sẽ có cùng tên viết tắt, nhưng tên của chúng thì không giống nhau. Vì vậy, nó không làm một trong những điều chúng ta muốn.
Một thay thế không phù hợp là giới thiệu các trường bổ sung để theo dõi các thuộc tính nhất định của tên, ví dụ:
+-----+----+-------------------+-----------+--------+
| Row | ID | Name | WordChars | Origin |
+-----+----+-------------------+-----------+--------+
| 1 | 17 | "AMELIA BEDELIA" | (6, 7) | Eng |
+-----+----+-------------------+-----------+--------+
| 2 | 18 | "CHRISTOPH BAUER" | (9, 5) | Ger |
+-----+----+-------------------+-----------+--------+
| 3 | 18 | "C J BAUER" | (1, 1, 5) | Ger |
+-----+----+-------------------+-----------+--------+
| 4 | 19 | "FRANZ HELLER" | (5, 6) | Ger |
+-----+----+-------------------+-----------+--------+
Tôi gọi điều này là "không phù hợp" bởi vì nó đòi hỏi phải dự đoán những phẩm chất nào có thể thú vị và nó tương đối thô. Nếu tên bị xóa, bạn không thể kết luận một cách hợp lý về độ mạnh của trận đấu giữa các hàng 2 & 3 hoặc về khoảng cách giữa các hàng 2 & 4 (nghĩa là chúng gần với nhau như thế nào).
Phần kết luận
Mục tiêu là biến đổi các chuỗi theo cách sao cho càng nhiều phẩm chất hữu ích của chuỗi gốc được bảo tồn càng tốt trong khi che khuất chuỗi gốc. Việc giải mã là không thể, hoặc không thực tế đến mức thực sự không thể, bất kể kích thước của tập dữ liệu. Đặc biệt, một phương pháp duy trì khoảng cách chỉnh sửa giữa các chuỗi tùy ý sẽ rất hữu ích.
Tôi đã tìm thấy một vài giấy tờ có thể có liên quan, nhưng chúng hơi quá đầu tôi: