新闻网页信息抽取

news2025/3/15 4:46:00

1. 网页信息抽取

问题定义:对新闻网页(输入为HTML)提取结构化信息,包括标题、发布时间、作者、正文、图片等。
动机:由于网页(大多数为HTML格式)通常带有很多标签、样式、脚本等信息,真正有价值的标题、发布时间、正文等是混杂在网页中间的,如果不做预处理就意味着后续要处理大量无用信息。如果是用于一些大模型、机器学习等算法还会造成干扰。因此需要从网页中提取纯净的、相对结构化的内容。

下图是网页https://www.dailypolitical.com/2025/02/27/walter-public-investments-inc-purchases-3634-shares-of-msci-inc-nysemsci.html 的主要信息:
在这里插入图片描述
通过页面看到发表时间(日期,或日期+时间)为:Feb 27th, 2025。

网页信息抽取主要方法:

  1. 基于规则的方法,根据特定的网页制定抽取规则(正则表达式规则或其他规则)
  2. 基于模板的方法,对新闻网页按照一定的模板进行分类,从而利用模板内各板块的配置进行抽取
  3. 基于视觉的方法,假想人去看网页,通过视觉信息可以快速定位标题、正文、时间等信息
  4. 基于大模型的方法,通过大模型去阅读网页,利用大模型的强大语义理解能力进行识别

2. GDELT事件时间

基于新闻(主要是境外新闻)网页URL可以关联到GDETL事件信息:

GlobalEventID|Day |EventCode|NumMentions|NumSources|NumArticles|AvgTone|Actor1Code|Actor1Name|Actor1CountryCode|Actor2Code|Actor2Name|Actor2CountryCode|ActionGeo_Type|ActionGeo_Type_Fullname|ActionGeo_CountryCode|ActionGeo_Lat|ActionGeo_Long|SOURCEURL |-------------±-------±--------±----------±---------±----------±------±---------±---------±----------------±---------±---------±----------------±-------------±----------------------±--------------------±------------±-------------±----------------------------------------------------------------------------------------------------------------------+
1229119384|20250227|10|10|1|10|1.89099|BUS|COMPANY | | | | | 4| |CA | 49.7833| -118.133|https://www.dailypolitical.com/2025/02/27/walter-public-investments-inc-purchases-3634-shares-of-msci-inc-nysemsci.html|
1229120306|20250227| 50| 10| 1| 10|1.89099|MNCUSA |MSCI INC |USA | | | | 4| |CA | 49.7833| -118.133|https://www.dailypolitical.com/2025/02/27/walter-public-investments-inc-purchases-3634-shares-of-msci-inc-nysemsci.html|

GDELT中事件主要包括事件类型、发生日期(年月日)、主体名称、主体国家等信息。
进一步可通过事件提到(event-mention)表查询事件时间和提到时间:event-time和event-mention-time。

3. 新闻时间抽取

3.1.基于GDELT事件时间

在这里插入图片描述
通过GDELT可以获取两个时间:event_time和mention_time,如上图所示,采用的UTC时间戳
转换一下:UTC(1740643200000) 即 Thu Feb 27 2025 16:00:00 GMT+0800 (China Standard Time)。

3.2.基于网页元数据

对网页进行分析,发现在标签中包含了发表时间:
在这里插入图片描述
可以看到有更为精确的时间:2025-02-27T07:32:48+0000,并且采用了UTC时间格式,非常方便解析。(注意!并不是所有网页都采用UTC格式)
这里采用的meta属性为“article:published_time”,在另外一些网页中属性为“og:datePublished”为了可靠性,我兼容了两个属性,并且不考虑属性的命名空间名。

3.3 几类时间比较

比较一下几种时间:

  1. 页面可视时间,可能不够精细(只到日,没有详细时间),且格式千差万别,容易抽取错误。例如,通过gne或Constor抽取的时间,出现了不少时间为2025-12-2,实际应该是2025-2-12。
  2. GDELT事件时间,不够准确。GDELT事件时间一般只到15分钟的粒度,对于有的网页与发布时间的差异可能达到半个小时。
  3. meta标签时间,这个是最准确的。不过对于早期的不规范的网页,可能没有meta信息。有的网页虽然存在meta标签,但没有新闻发布时间。
  4. LD-json。与meta作用类似,以一种结构化JSON数据提供,方便网页元数据共享,其中发布时间字段为datePublished。但对于很多网页可能没有提供。LD-json示例如下(https://www.telecomasia.net/news/mma/fedor-emelianenko-has-no-plans-to-fight-in-mcgregorundefineds-league/):
<script type="application/ld+json">
 {
   "@context": "https:\/\/schema.org",
   "@type": "NewsArticle",
   "description": "Famous Russian mixed martial artist Fedor Emelianenko has no plans to participate in bare-knuckle fights.",
   "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https:\/\/www.telecomasia.net\/news\/mma\/fedor-emelianenko-has-no-plans-to-fight-in-mcgregorundefineds-league\/"
   },
   "headline": "Fedor Emelianenko Has No Plans to Fight in McGregor's League",
   "datePublished": "2025-02-17T10:53:31+03:00",
   "dateModified": "2025-02-17T10:55:41+03:00",
   "image": "https:\/\/www.telecomasia.net\/upload\/iblock\/1aa\/1aa24aa8e228aec85967fb45c607e666.jpg",
  "author": {
          "@type": "Person",
          "name": "Marina Magomedova",
          "url": "https:\/\/www.telecomasia.net\/authors\/marina-magomedova\/"
      },
  "publisher": {
          "@type": "Organization",
          "name": "Telecom Asia Sport",
          "url": "https:\/\/www.telecomasia.net",
          "logo": {
              "@type": "ImageObject",
              "url": "https:\/\/www.telecomasia.net\/local\/templates\/main\/img\/logo-shema-ta.png",
              "width": "1300",
              "height": "300"
          }
                                    }
}</script>

3.4 时间统计

选取几百个新闻网页HTML进行抽取实验,结果如下:
在这里插入图片描述
从中可以得出几点结论:

  • 仅通过meta标签或ld-json抽取时间,会出现大量抽取失败
  • meta标签和ld-json可能同时包含时间,可能一个有另一个没有,也可能都没有
  • gne组件的时间抽取基于meta标签和正文内容正则提取,但没有考虑ld-json。下一步需要调研一下其他新闻信息抽取组件(如newspaper3k)。

3.5 综合策略

综合上面几种情况,可以按照这个优先级顺序获取新闻发布时间:

  1. 首先查看meta时间。建议基于gne等组件,其内置了多个可能关于新闻发布时间的meta标签。下图中是gne采用的时间抽取xpath规则:
PUBLISH_TIME_META = [  # 部分特别规范的新闻网站,可以直接从 HTML 的 meta 数据中获得发布时间
    '//meta[starts-with(@property, "rnews:datePublished")]/@content',
    '//meta[starts-with(@property, "article:published_time")]/@content',
    '//meta[starts-with(@property, "og:published_time")]/@content',
    '//meta[starts-with(@property, "og:release_date")]/@content',
    '//meta[starts-with(@itemprop, "datePublished")]/@content',
    '//meta[starts-with(@itemprop, "dateUpdate")]/@content',
    '//meta[starts-with(@name, "OriginalPublicationDate")]/@content',
    '//meta[starts-with(@name, "article_date_original")]/@content',
    '//meta[starts-with(@name, "og:time")]/@content',
    '//meta[starts-with(@name, "apub:time")]/@content',
    '//meta[starts-with(@name, "publication_date")]/@content',
    '//meta[starts-with(@name, "sailthru.date")]/@content',
    '//meta[starts-with(@name, "PublishDate")]/@content',
    '//meta[starts-with(@name, "publishdate")]/@content',
    '//meta[starts-with(@name, "PubDate")]/@content',
    '//meta[starts-with(@name, "pubtime")]/@content',
    '//meta[starts-with(@name, "_pubtime")]/@content',
    '//meta[starts-with(@name, "weibo: article:create_at")]/@content',
    '//meta[starts-with(@pubdate, "pubdate")]/@content',
]
  1. 看是否有LD-json时间。gne组件目前未考虑LD-json元数据。因为需要按照JSON进行数据解析,相比meta增加了解析JSON和查找JSON中特定字段的时间。
  2. 基于一组可能的网页标签。通过xpathcss匹配可能为新闻发布时间的标签,提取其文本内容。虽然标签查找很高效,但存在未命中或抽取内容非时间的可能,后者可进一步结合规则进行判断。
  3. 基于新闻文本。对网页新闻文章区域的文本进行时间识别。如果确定文章区域比较困难,则可使用网页body作为候选。gne通过xpath//*[@class="article__content"]确定文章区域,通过一组日期时间的正则表达式抽取发布时间,规则如下图所示。不过可以看出,有一些典型英语国家表达的时间格式是不支持的,例如3rd March 2025, 22:18 GMT+11,需要进一步补充规则。另外,文本中出现的时间可能不一定是新闻发布时间,而是某个事件发生的语义时间,这种情况可能需要对时间时间所在上下文进行判断。
DATETIME_PATTERN = [
    "(\d{4}[-|/|.]\d{1,2}[-|/|.]\d{1,2}\s*?[0-1]?[0-9]:[0-5]?[0-9]:[0-5]?[0-9])",
    "(\d{4}[-|/|.]\d{1,2}[-|/|.]\d{1,2}\s*?[2][0-3]:[0-5]?[0-9]:[0-5]?[0-9])",
    "(\d{4}[-|/|.]\d{1,2}[-|/|.]\d{1,2}\s*?[0-1]?[0-9]:[0-5]?[0-9])",
    "(\d{4}[-|/|.]\d{1,2}[-|/|.]\d{1,2}\s*?[2][0-3]:[0-5]?[0-9])",
    "(\d{4}[-|/|.]\d{1,2}[-|/|.]\d{1,2}\s*?[1-24]\d时[0-60]\d分)([1-24]\d时)",
    "(\d{2}[-|/|.]\d{1,2}[-|/|.]\d{1,2}\s*?[0-1]?[0-9]:[0-5]?[0-9]:[0-5]?[0-9])",
    "(\d{2}[-|/|.]\d{1,2}[-|/|.]\d{1,2}\s*?[2][0-3]:[0-5]?[0-9]:[0-5]?[0-9])",
    "(\d{2}[-|/|.]\d{1,2}[-|/|.]\d{1,2}\s*?[0-1]?[0-9]:[0-5]?[0-9])",
    "(\d{2}[-|/|.]\d{1,2}[-|/|.]\d{1,2}\s*?[2][0-3]:[0-5]?[0-9])",
    "(\d{2}[-|/|.]\d{1,2}[-|/|.]\d{1,2}\s*?[1-24]\d时[0-60]\d分)([1-24]\d时)",
    "(\d{4}年\d{1,2}月\d{1,2}日\s*?[0-1]?[0-9]:[0-5]?[0-9]:[0-5]?[0-9])",
    "(\d{4}年\d{1,2}月\d{1,2}日\s*?[2][0-3]:[0-5]?[0-9]:[0-5]?[0-9])",
    "(\d{4}年\d{1,2}月\d{1,2}日\s*?[0-1]?[0-9]:[0-5]?[0-9])",
    "(\d{4}年\d{1,2}月\d{1,2}日\s*?[2][0-3]:[0-5]?[0-9])",
    "(\d{4}年\d{1,2}月\d{1,2}日\s*?[1-24]\d时[0-60]\d分)([1-24]\d时)",
    "(\d{2}年\d{1,2}月\d{1,2}日\s*?[0-1]?[0-9]:[0-5]?[0-9]:[0-5]?[0-9])",
    "(\d{2}年\d{1,2}月\d{1,2}日\s*?[2][0-3]:[0-5]?[0-9]:[0-5]?[0-9])",
    "(\d{2}年\d{1,2}月\d{1,2}日\s*?[0-1]?[0-9]:[0-5]?[0-9])",
    "(\d{2}年\d{1,2}月\d{1,2}日\s*?[2][0-3]:[0-5]?[0-9])",
    "(\d{2}年\d{1,2}月\d{1,2}日\s*?[1-24]\d时[0-60]\d分)([1-24]\d时)",
    "(\d{1,2}月\d{1,2}日\s*?[0-1]?[0-9]:[0-5]?[0-9]:[0-5]?[0-9])",
    "(\d{1,2}月\d{1,2}日\s*?[2][0-3]:[0-5]?[0-9]:[0-5]?[0-9])",
    "(\d{1,2}月\d{1,2}日\s*?[0-1]?[0-9]:[0-5]?[0-9])",
    "(\d{1,2}月\d{1,2}日\s*?[2][0-3]:[0-5]?[0-9])",
    "(\d{1,2}月\d{1,2}日\s*?[1-24]\d时[0-60]\d分)([1-24]\d时)",
    "(\d{4}[-|/|.]\d{1,2}[-|/|.]\d{1,2})",
    "(\d{2}[-|/|.]\d{1,2}[-|/|.]\d{1,2})",
    "(\d{4}年\d{1,2}月\d{1,2}日)",
    "(\d{2}年\d{1,2}月\d{1,2}日)",
    "(\d{1,2}月\d{1,2}日)"
]

对于上述从文本内容中抽取的新闻发布时间,要跟事件时间当前时间进行对比,避免或过滤出现的明显无效结果。如果可以牺牲一定程度的准确度,则可直接使用事件时间,不过需要注意新闻发布时间应该早于GDELT时间时间。

4. 结论

通过本文实验,对新闻类网页的信息抽取,重点是发布时间抽取进行了实验。目前大多数较为规范的网页会通过提供meta标签或application/ld+json类型的script提供网页元数据,其中可能会包含较为精确的发布时间,以及其他信息,比如文章作者、文章关键词、主要图片等。但是对于HTML的元数据并不是一个强制性规范,存在数据确实或数据结构不规范、不统一的问题,因此仍然需要通过规则辅助进行信息抽取。

当前大模型技术由于具备较强的文本理解能力,因此也可以用于辅助网页信息抽取。不过由于大模型运行成本较高,需要进行合理选择权衡。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2315230.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker 部署Spring boot + Vue(若依为例)

首先我们要在docker中安装好环境镜像 jdk. mysql. redis. nginx 镜像安装我们在上一篇文章中已说明&#xff0c;请大家自行查看。 下面我介绍部署步骤 部署后台jar 在你的工作目录下新建application 用来存放后台jar包 1.将打好的jar包上传 2.编写Dockerfile文件&#…

PDF文件里到底有什么?

PDF 文档结构由多个组件组成&#xff0c;这些组件决定了文本、图像和其他元素的存储和显示方式。PDF 是一种二进制文件格式&#xff0c;这意味着您无法在文本编辑器中直接编辑 PDF 文件。添加或删除一个字符都可能导致整个文件损坏&#xff01; PDF 文件结构 理解 PDF 文档结…

FANUC机器人几种常用的通讯网络及接口

FANUC机器人几种常用的通讯网络及接口 Devicenet 网络通讯接口&#xff0c;接口为5针线 (规定用的机架为 81-84&#xff09; PROFIBUS 网络通讯接口&#xff0c;针脚为2针&#xff08;规定用的机架为 67&#xff09; Intemet 网络通讯接口&#xff08;常用的网线接口&#xf…

实用插件分享:@plugin-web-update-notification/vite 的使用指南

实用插件分享&#xff1a;plugin-web-update-notification/vite 的使用指南 在前端开发的过程中&#xff0c;及时告知用户网页有更新是提升用户体验的一个重要方面。plugin-web-update-notification/vite 就是一款能够轻松实现网页更新通知功能的插件&#xff0c;下面就来详细…

IEC61850标准下MMS 缓存报告控制块 ResvTms详细解析

IEC61850标准是电力系统自动化领域唯一的全球通用标准。IEC61850通过标准的实现&#xff0c;使得智能变电站的工程实施变得规范、统一和透明&#xff0c;这大大提高了变电站自动化系统的技术水平和安全稳定运行水平。 在 IEC61850 标准体系中&#xff0c;ResvTms&#xff08;r…

人工智能与人的智能,思维模型分享【2】沉没成本

**沉没成本&#xff08;Sunk Cost&#xff09;** 是指已经发生且无法收回的成本&#xff08;时间、金钱、精力等&#xff09;。沉没成本思维模型的核心原则是&#xff1a;理性决策应基于未来可能的收益与成本&#xff0c;而非被已经无法改变的历史投入所影响。陷入沉没成本陷阱…

艾尔登复刻Ep1——客户端制作、场景切换、网络控制

需要添加的插件内容 Netcode for GameObjects&#xff1a;是一个为 Unity 游戏开发提供高级网络功能的 SDK。它的主要作用是允许开发者在其 GameObject 和 MonoBehaviour 工作流中集成网络功能&#xff0c;并且可以与多种底层传输层协议兼容。 具体内容请看&#xff1a;https:…

基于YOLO11深度学习的遥感视角地面房屋建筑检测分割与分析系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割、人工智能

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

Java中常见的PO、VO、DAO、BO、DO、DTO、POJO、Query类解释(通俗易懂)

文章目录 先点击收藏和点赞,切勿白嫖,感谢一丶PO(persistant object)持久对象二丶VO(value object)值对象三丶DAO(Data Access Objects) 数据访问对象接口四丶BO/DO(Business Object) 业务对象层五丶DTO(Data Transfer Object) 数据传输对象六丶POJO(Plain Old Java Objects) 简…

完美解决ElementUI中树形结构table勾选问题

完美解决ElementUI中树形结构table勾选问题 实现功能效果图全选取消全选取消父节点取消某个子节点 关键代码 实现功能 1. 全选/取消全选&#xff0c;更新所有节点勾选状态 2. 勾选父/子节点&#xff0c;子/父节点状态和全选框状态更新 效果图 全选 取消全选 取消父节点 取消某…

文件解析漏洞靶场集锦详解

一、IIS解析漏洞 环境安装&#xff1a;windows2003iis6 1.目录解析 .asp文件夹中的任意文件都会被当做asp文件去执行 1.在iis6的网站根目录新建⼀个名为1.asp的文件 2. 在1.asp中新建⼀个jpg文件。内容为 <%now()%>asp代码 3.在外部浏览器中访问iis⽹站中的1.jpg 发现…

hcia华为路由器静态路由实验配置

目录 一、网络拓扑分析 二、华为路由器配置&#xff08;分设备&#xff09; 1. R1 配置 2. R2 配置 3. R3 配置 三、验证测试 拓扑图 一、网络拓扑分析 IP 地址规划&#xff1a; R1&#xff1a;E0/0/0&#xff08;12.1.1.1/24&#xff09;、E0/0/1&#xff08;192.168.1.…

Redis7——进阶篇(五)

前言&#xff1a;此篇文章系本人学习过程中记录下来的笔记&#xff0c;里面难免会有不少欠缺的地方&#xff0c;诚心期待大家多多给予指教。 基础篇&#xff1a; Redis&#xff08;一&#xff09;Redis&#xff08;二&#xff09;Redis&#xff08;三&#xff09;Redis&#x…

VBA+FreePic2Pdf 找出没有放入PDF组合的单个PDF工艺文件

设计部门针对某个项目做了一个工艺汇总报告&#xff0c;原先只要几十个工艺文件&#xff0c;组合成一个PDF&#xff0c;但后来要求要多放点PDF进去&#xff0c;但工艺文件都混在一起又不知道哪些是重复的&#xff0c;找上我让我帮忙处理一下&#xff0c;我开始建议让她重新再组…

计网面试准备

正确理解网络数据传输过程 同一路由器的不同接口属于不同局域网&#xff0c;广播只能在同一个局域网

【数据分享】1999—2023年我国地级市社会消费品零售总额和年末金融机构存贷款余额(Shp/Excel格式)

在之前的文章中&#xff0c;我们分享过基于2000-2024年《中国城市统计年鉴》整理的1999-2023年地级市的人口相关数据、染物排放和环境治理相关数据和房地产投资情况和商品房销售面积相关指标数据&#xff08;均可查看之前的文章获悉详情&#xff09;&#xff01; 本次我们分享…

PHP批量去除Bom头的方法

检查的代码&#xff1a; <?php$dir __DIR__; $files new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));foreach ($files as $file) {if ($file->isFile() && pathinfo($file, PATHINFO_EXTENSION) php) {$content file_get_contents(…

字节攻克关键技术,大模型训练效率提升1.7倍,成本节省40%

近日&#xff0c;字节豆包大模型团队开源针对 MoE 架构的关键优化技术COMET&#xff0c;该技术可将大模型训练效率提升1.7倍&#xff0c;成本节省40%。据悉&#xff0c;该技术已实际应用于字节的万卡集群训练&#xff0c;累计帮助节省了数百万 GPU 小时训练算力。 MoE&#xff…

[Pytorch报错问题解决]AttributeError: ‘nn.Sequential‘ object has no attribute ‘append‘

问题 运行深度学习代码的时候遇到了以下报错问题&#xff1a; Traceback (most recent call last):File "/home/anaconda3/envs/Text2HOI/lib/python3.9/site-packages/torch/autograd/grad_mode.py", line 28, in decorate_contextreturn func(*args, **kwargs)Fi…

基于威胁的安全测试值得关注,RASP将大放异彩

2‍021年7月21日&#xff0c;由中国信息通信研究院&#xff08;CAICT&#xff09;指导、悬镜安全主办、腾讯安全协办的中国首届DevSecOps敏捷安全大会&#xff08;DSO 2021&#xff09;在北京圆满举办。大会以“安全从供应链开始”为主题&#xff0c;寓意安全基础决定“上层建筑…