← 返回列表

电报首发资源 教程抓取数据中的实体抽取(NER):人名、地址与链接定位

分类:telegram教程发布于:2026-09-03

telegram中文搜索群组

教程抓取数据中的实体抽取(NER):人名、地址与链接定位,核心目标不是简单复制网页文本,而是从杂乱页面中识别人名、地址、链接等结构化实体,并将结果保存为可检索、可分析的数据。

在真实项目中,网页经常包含导航栏、广告、评论、重复内容和动态组件。只有经过抓取、清洗、识别、校验四个环节,NER 结果才具备稳定的业务价值。

🧭 一、先明确实体抽取的任务边界

NER,即命名实体识别,通常用于定位人名、机构、地点、日期、联系方式和专有名词。在网页采集场景中,还需要额外处理超链接、邮箱、电话号码等半结构化信息。

建议先定义输出字段,而不是抓到内容后再临时分析。例如,人名可以保存为 person,地址保存为 address,链接保存为 url,并记录实体在原文中的起止位置。

同时要确认数据来源具有合法授权,并遵守网站的 robots 规则、服务条款与隐私要求。对于姓名、住址和联系方式等个人信息,应当最小化采集、脱敏保存、限制访问,不要将抽取技术用于骚扰或未经许可的个人画像。

📌 建议的采集参数

REQUEST_INTERVAL = 1.5
REQUEST_TIMEOUT = 10
MAX_RETRIES = 3
MAX_PAGES = 100
RESPECT_ROBOTS_TXT = True
STORE_RAW_HTML = True

设置请求间隔、超时时间和重试次数,可以降低对目标站点的压力。保留原始 HTML 也很重要,它能帮助开发者在模型识别错误时复盘上下文并重新处理

🧹 二、抓取后先清洗文本与 DOM 结构

NER 不应直接作用于整份网页源码。更稳妥的做法是先解析 DOM,删除 script、style、导航和重复模块,再提取正文文本;这样可以减少噪声实体和错误匹配

链接定位则不能只依赖正则表达式,因为网页中的链接可能是相对路径、带锚点的 URL,或者由按钮事件动态生成。对于静态 HTML,应优先读取 a 标签的 href 属性,再使用基础域名完成链接补全与规范化

import re
from bs4 import BeautifulSoup
from urllib.parse import urljoin, urldefrag

def extract_text_and_links(html, base_url):
    soup = BeautifulSoup(html, "html.parser")

    for node in soup.select("script, style, nav, footer, aside"):
        node.decompose()

    text = soup.get_text(" ", strip=True)
    links = []

    for tag in soup.select("a[href]"):
        raw_url = urljoin(base_url, tag["href"])
        clean_url = urldefrag(raw_url)[0]

        if clean_url.startswith(("http://", "https://")):
            links.append({
                "text": tag.get_text(" ", strip=True),
                "url": clean_url
            })

    return text, links

上面的流程将“可见文本”和“网页链接”分开处理。最终可以对 URL 去重、过滤图片或下载文件,并保留链接文本,以便判断链接指向的是作者主页、机构页面还是普通导航。

🔗 链接定位的三个校验点

第一,过滤无效协议,例如 javascript、mailto 或空锚点是否需要单独保存;第二,统一大小写、末尾斜杠和片段标识;第三,检查链接是否属于允许的域名范围,避免把外部跳转误当成站内资源。

电报首发资源 🧠 三、使用 NER 模型识别人名与地址

人名和地址的识别难度不同。人名容易与普通词语、品牌名混淆,而地址通常由省市区、道路、门牌号和楼栋信息组合而成,因此建议采用模型识别加规则校验的混合方案。

中文 NER 可以使用 HanLP、LTP 或基于 Transformers 的模型。模型负责理解上下文,规则负责补充门牌号、邮编和 URL 等格式稳定的实体;实际选型时,应核对模型版本、训练语料、许可证和中文领域效果。

import re
import hanlp

ner = hanlp.load(hanlp.pretrained.ner.MSRA_NER_ELECTRA_SMALL_ZH)

def recognize_entities(text):
    model_entities = ner(text)
    addresses = re.findall(
        r"(?:[省市区县旗乡镇街道]|路|街|巷|号|室)[^,。;\n]{0,30}",
        text
    )

    return {
        "model_entities": model_entities,
        "address_candidates": addresses
    }

正则表达式产生的只是地址候选项,不能直接视为最终结果。程序还应合并相邻片段、去除重复前缀、检查上下文,并通过人工抽样确认模型是否把公司名称或项目名称误判为地址。

🧪 用上下文提高准确率

例如“张伟路”可能是道路名称,也可能是人名与道路的组合。可以结合字段标题、附近关键词和页面结构判断:出现“联系人”时更偏向人名,出现“地址”“办公地点”时更偏向地址。

如果项目对准确率要求较高,应建立小规模标注集,分别统计精确率、召回率和 F1 值。不要只看总体识别数量,因为错误实体越多,后续搜索、推荐和数据分析越容易产生连锁误差。

电报精准找群黑科技提示:

由于 Telegram 官方搜索对中文支持极差,很多优质的推广、技术和资源群组隐藏极深。如果你正在寻找相关的活跃社群,强烈推荐使用本站首页的 【TTSO - Telegram 智能搜索 Bot】。作为目前最好用的电报综合搜索导航,只需输入关键词,即可秒级触达数十万个精选 TG 中文群组、资源频道。一键直达,帮你节省 90% 的找群时间!

电报首发资源 🗂️ 四、设计可追溯的实体结果结构

抽取结果不应只有一个字符串,还应保留来源 URL、实体类型、置信度、原文片段和抓取时间。这样的结构便于复核来源、修正错误、追踪模型变化

{
  "source_url": "https://example.com/article",
  "crawled_at": "2025-01-01T10:00:00Z",
  "entities": [
    {
      "text": "示例人物",
      "type": "PERSON",
      "start": 18,
      "end": 22,
      "confidence": 0.96
    },
    {
      "text": "北京市朝阳区示例路1号",
      "type": "ADDRESS",
      "confidence": 0.88
    }
  ],
  "links": [
    {
      "text": "官方网站",
      "url": "https://example.com"
    }
  ]
}

保存时可以对相同实体进行规范化,例如统一全角半角字符、清理多余空格,并用哈希值辅助去重。对于个人信息,建议只保留业务必需字段,展示层使用部分遮盖,原始数据则采用权限控制和加密存储。

✅ 上线前的质量检查

至少抽取一批样本进行人工比对,重点检查人名误识别、地址截断、相对链接错误和重复 URL。还要测试空页面、编码异常、分页重复以及动态内容缺失等边界情况。

当页面结构发生变化时,优先查看原始 HTML、清洗后的文本和模型输入,而不是盲目更换模型。通过分层日志记录,可以快速判断问题来自抓取、解析、规则还是 NER 推理

❓ 常见问题解答(FAQ)

1. 只用正则表达式能完成 NER 吗?

正则适合定位链接、邮箱、电话和部分地址格式,但难以理解上下文。人名、机构名和地名建议使用 NER 模型,再用规则进行补充和校验。

2. 为什么模型会把公司名识别人名?

这是训练语料领域差异造成的常见问题。可以增加行业词典、结合页面字段标题,并使用本领域样本进行微调或后处理,从而降低实体类型混淆

电报首发资源 3. 动态加载的链接无法被 BeautifulSoup 找到怎么办?

BeautifulSoup 只能解析已经获得的 HTML。对于合法授权的动态页面,应使用官方 API、服务端渲染结果或经过配置的浏览器自动化工具,并控制访问频率,避免绕过权限或验证码。

电报首发资源 4. 如何判断抽取结果是否可靠?

通过人工标注集计算精确率、召回率和 F1 值,并按人名、地址、链接分别评估。上线后还应持续监控空值率、重复率、置信度分布和页面结构变化。

总体来看,网页实体抽取的关键不在于单一模型,而在于规范采集、结构化解析、上下文识别、结果校验与合规治理形成完整闭环。只有让每条实体都能追溯到原始页面,NER 数据才真正具备长期使用价值。

telegram搜
Telegram搜索入口客服ID@TTSO联系