当前位置: 首页 > news >正文

【自然语言处理】第2部分:识别文本中的个人身份信息

自我介绍

  • 做一个简单介绍,酒架年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【架构师酒馆】和【开发者开聊】,有更多的内容分享,谢谢大家收藏。
  • 企业架构师需要比较广泛的知识面,了解一个企业的整体的业务,应用,技术,数据,治理和合规。之前4年主要负责企业整体的技术规划,标准的建立和项目治理。最近一年主要负责数据,涉及到数据平台,数据战略,数据分析,数据建模,数据治理,还涉及到数据主权,隐私保护和数据经济。 因为需要,比如数据资源入财务报表,另外数据如何估值和货币化需要财务和金融方面的知识,最近在学习财务,金融和法律。打算先备考CPA,然后CFA,如果可能也想学习法律,备战律考。
  • 欢迎爱学习的同学朋友关注,也欢迎大家交流。微信小号【ca_cea】

在文本文档中查找个人身份信息(PII)可能很有用,原因有几个,但我多次遇到的一个用例是帮助匿名文本,以便:

  • 与第三方共享数据
  • 遵守GDPR等法规要求
  • 将PII替换为模拟数据,用作机器学习和其他探索性分析的训练数据

我将尝试自动化查找PII的过程,在本系列文章中,我们将探索一些流行的开源工具和技术,以便在我们自己的数据中识别不同类型的PII。

在第一部分中,我们找到了一种在文本中查找人名的方法,让我们看看我们还可以找到其他类型的PII。

介绍Duckling

Duckling是一个Haskell库,由Facebook开源,用于将文本解析为结构化数据。Duckling可以帮助我们在文本中找到不同类型的信息,包括信用卡号码、电子邮件地址和电话号码。

现在别担心,如果你不是了解Haskell的三个人之一,我们可以将Duckling与任何编程语言一起使用。

Python示例

让我们看看我们将如何用一种不需要关于副作用的害处的演讲的语言来使用Duckling。

先决条件:

安装Git、Docker和Docker-compose

步骤1:

git clone git@github.com:facebook/duckling.git

第2步:

在克隆的Duckling repo中制作一个docker compose文件。

docker-compose.yml:

version: '3'services:duckling:build:context: .ports:- 8000:8000

步骤3:

开始Ducking作为Docker服务:

docker-compose up duckling

现在,Duckling服务通过我们本地主机上的端口8000通过HTTP API提供。让我们开始对API进行一些调用,看看我们得到了什么:

import requeststext = 'My email address is spy@ninja.com and my number is +1 (650) 123-4567 so call me maybe?'response = requests.post('http://localhost:8000/parse', {'locale': 'en_US', 'text': text})entities = response.json()for entity in entities:print( entity['dim'] +": "+ entity['body'])

这将打印以下内容:

email: spy@ninja.com
phone-number: +1 (650) 123-4567

美好的Duckling在我们的文本中找到了电子邮件地址和电话号码,并确认此文本包含PII。现在让我们看看它是如何处理信用卡号的:

import requeststext = 'Last Christmas I gave you my card 4111-1111-1111-1111 But the very next day you gave it away'response = requests.post('http://localhost:8000/parse', {'locale': 'en_US', 'text': text, 'dims': ["credit-card-number"]})entities = response.json()for entity in entities:print( entity['dim'] +": "+ entity['body'])

迫不及待地想看到那个甜蜜的信用卡号被打印出来。让我们看看它打印了什么:

credit-card-number: 4111-1111-1111-1111
phone-number: 4111-1111-1111-1111

呃…它检测到我们的号码是电话号码和信用卡号码。我想安全总比抱歉好。

Duckling可以帮助我们找到其他类型的数据,或者用Duckling的语言称为“维度”,所以请随意浏览该项目的Github页面,看看还有什么可用的。

结论

我们现在可以添加到我们能够找到的PII类型列表中:人名、电子邮件地址、电话号码和信用卡号。我们已经看到还有改进的空间,例如,我们可以使用Luhn算法来确认一个号码是信用卡号码,而不是电话号码,但这超出了本系列的范围,因为每个人都需要在这里讨论的主题的基础上构建自己的用例。

在接下来的文章中,我们将看到其他工具是如何执行的,以及它们可以帮助我们找到哪些其他类型的PII。

本文:【自然语言处理】第2部分:识别文本中的个人身份信息 | 开发者开聊

欢迎收藏  【全球IT瞭望】,【架构师酒馆】和【开发者开聊】.

相关文章:

【自然语言处理】第2部分:识别文本中的个人身份信息

自我介绍 做一个简单介绍,酒架年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【…...

C#中的.NET与.NET Framework区别

C#是一种编程语言,而.NET是一个开发平台。在.NET生态系统中,有两个相关但不同的概念:.NET和.NET Framework。 .NET Framework 发布时间: .NET Framework是最早引入的,它于2002年首次发布。它是一个用于构建Windows应…...

详解Keras3.0 Layer API: LSTM layer

LSTM layer 用于实现长短时记忆网络,它的主要作用是对序列数据进行建模和预测。 遗忘门(Forget Gate):根据当前输入和上一个时间步的隐藏状态,计算遗忘门的值。遗忘门的作用是控制哪些信息应该被遗忘,哪些…...

Vue和React的运行时,校验引入包的上下文差异

背景 系统使用 webpack 5 模块联邦实现微前端,有关如何实现跨应用的代码共享,可参考 如何优雅的实现跨应用的代码共享 里的第三大点。 总之,这里是其他应用使用了某个应用共享出来的reg文件,引入方式为: import REG …...

C语言中函数调用和嵌套

函数是C语言的基本组成元素 函数调用 根据函数在程序中出现的位置有下列三种函数调用方式: 将函数作为表达式调用 将函数作为表达式调用时,函数的返回值参与表达式的运算,此时要求函数必须有返回值 int retmax(100,150); 将函数作为语句…...

JVM基础篇---02

为什么需要用户自定义类加载器: 扩展类加载器的功能: Java的默认类加载器主要有三个,分别是引导类加载器、扩展类加载器和应用程序类加载器。其中,引导类加载器和扩展类加载器是由JVM实现的,用户无法修改其行为。而应用…...

HTML网站基础

一、前端开发基础 前端一共三门语言——HTML、CSS、JS&#xff08;Java Script&#xff09; HTML用于静态网页框架&#xff0c;CSS用于修饰&#xff0c;JS构成动态网页 1、HTML 对于中文网页需要使用 <meta charset"utf-8"> 声明编码&#xff0c;否则会出现…...

最优化考试之惩罚函数外点法

最优化考试之惩罚函数外点法 一、外点法1.问题条件2.解题过程 一、外点法 1.问题条件 目标函数 f ( x ) f(x) f(x)约束函数 g ( x ) g(x) g(x) 2.解题过程 定义罚函数 F ( x ) f ( x ) t ∗ m i n ( 0 , g ( x ) 2 ) F(x)f(x)t*min(0,g(x)^2) F(x)f(x)t∗min(0,g(x)2)对罚…...

JavaScript 数组【详解】

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍JavaScript中数组详解 数组声明/基础操作以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任何问题可…...

Node.js版本对比

目录 1. node版本与Npm版本对照表 2. node版本与node-sass版本对照表 3. node-sass与sass-loader版本对照表 1. node版本与Npm版本对照表 以往的版本 | Node.js 下面显示最新的对应内容&#xff0c;如果需要查找历史版本&#xff0c;可以进入上面的页面查询 VersionLTSDateV8np…...

人工智能:网络犯罪分子的驱动力

随着 2024 年的临近&#xff0c;是时候展望今年的网络安全状况了。由于网络犯罪日益复杂&#xff0c;预计到 2025 年&#xff0c;全球网络安全成本将增至 10.5 万亿美元。 人工智能的使用不断发展&#xff0c;网络犯罪分子变得越来越有创造力 我们注意到&#xff0c;联邦调查…...

ASP.NET Core认证原理和实现

ASP.NET Core认证原理和实现 AuthenticationHttpContextExtensions AuthenticationHttpContextExtensions 类是对 HttpContext 认证相关的扩展&#xff0c;它提供了如下扩展方法&#xff1a; public static class AuthenticationHttpContextExtensions {public static Task&l…...

基于OpenCV的图像颜色与形状识别的原理2

基于OpenCV的图像颜色与形状识别通常涉及以下几个步骤&#xff1a; 图像读取&#xff1a;使用OpenCV的cv2.imread()函数读取图像。预处理&#xff1a;可能包括图像的灰度转换、二值化、滤波等&#xff0c;以减少噪声和无关信息。颜色识别&#xff1a;颜色空间转换&#xff1a;…...

无法获取前置摄像头的预览图像?【Bug已解决-鸿蒙开发】

文章目录 项目场景:问题描述原因分析:解决方案:此Bug解决方案总结HarmonyOS和OpenHarmony区别和联系项目场景: 最近也是遇到了这个问题,看到网上也有人在询问这个问题,本文总结了自己和其他人的解决经验,解决了无法获取前置摄像头的预览图像的问题。 问题:前置摄像头…...

微信小程序的bindtap和catchtap的区别

一. 事件 1.事件是视图层到逻辑层的通讯方式。 2. 事件可以将用户的行为反馈到逻辑层进行处理。 3. 事件可以绑定在组件上&#xff0c;当达到触发事件&#xff0c;就会执行逻辑层中对应的事件处理函数。 二. 如何使用事件 1. 简单来说就是将事件绑定到组件上面&#xff0c;bi…...

python哈希算法实现

以下是用Python实现SHA-256算法的示例代码&#xff1a; import hashlibdef sha256(message):# 创建SHA-256哈希对象sha256_hash hashlib.sha256()# 更新哈希对象的输入消息sha256_hash.update(message.encode(utf-8))# 计算哈希值并返回十六进制表示return sha256_hash.hexdi…...

SpringBoot实用开发(三)-- Redis提供API接口 -- StringRedisTemplate

引言: 由于redis内部不提供java对象的存储格式,因此当操作的数据以对象的形式存在时,会进行转码,转换成字符串格式后进行操作。为了方便开发者使用基于字符串为数据的操作,springboot整合redis时提供了专用的API接口StringRedisTemplate,你可以理解为这是RedisTe…...

【Qt-编码】

Qt编程指南 ■ 编码■ ASCII■ ANSI■ GB2312■ GBK■ GB18030 编码■ Unicode■ UTF-8&#xff1a; ■ Qt接收注射泵GBK编码后显示乱码■■ ■ 编码 ■ ASCII &#xff08;American Standard Code for Information Interchange&#xff0c;美国信息交换标准代码&#xff09;…...

使用Python实现Linux惠尔顿上网认证客户端

在本文中&#xff0c;我们将展示如何使用Python编写一个简单的脚本来实现Linux下的惠尔顿上网认证。以下是我们需要的参数和值&#xff1a; wholeton_host: 惠尔顿服务器地址&#xff0c;例如 192.168.10.10wholeton_user: 用户名&#xff0c;例如 AABBCCwholeton_pass: 密码&…...

【漏洞复现】某检测系统(admintool)接口任意文件上传漏洞

文章目录 前言声明一、漏洞详情二、影响版本三、漏洞复现四、修复建议 前言 湖南建研检测系统 admintool接口任意文件上传漏洞&#xff0c;攻击者可通过该漏洞获取服务器敏感信息。 声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...