新闻发布时间抽取(二)

1. 再论抽取方法

在前一期实验中,对gne组件进行分析和完善,对三种时间抽取的方法进行了实验对比。
在对抽取结果进行个例分析的过程中,我发现此前实验存在几个问题:

  • 抽取的1000篇新闻存在一定的重复,经过ID去重大约减少了36篇。尽管重复新闻的HTML内容并不一定完全一样,但考虑到采样合理性,在新的实验中,加入基于ID的简单去重策略。去重这个问题比较复杂,后续单开一篇来讨论。
  • 基于文本的正则匹配抽取,其基于//text(),会对整个HTML下面的文本段落段落进行匹配,其中包括<style>(CSS样式)和<script>(JS脚本)的内容,尤其是<script>可能与JSON-LD重复,且会匹配JS脚本中的非发布日期。在新的改进中,首先移除HTML中的全部<style><script>标签,然后分别对<head><body>进行匹配,即规则分为 //head//text()//body//text()两种。理论上来说,<head>中如果出现日期,大概率就是<meta>JSON-LD中的日期,其他<head>标签中出现的日期即便有也不能采信。在实验中我的确发现了一例,在<title>中出现了日期,虽然是对的,但是不如正文中的时间精确。
  • 除了已经考虑的<meta>JSON-LD两种被认为较为可靠的方式外,还有其他较为可靠的方式未考虑,即<time>标签以及带有诸如date、time样式的<span><div>标签。

2. 时间抽取结果统计

基于新采样的964篇(去重后)新闻HTML实验了多种方法,抽取结果如下。
在这里插入图片描述
通过将上述方法进行组合,按照meta|JSON-LD|time|other|body+re|head+re顺序进行提取,可获得888条,召回率为92.1%;如果按照meta|JSON-LD|time|other|text+re顺序进行提取,可获得923条,召回率为95.7%。排除其中一部分抽取结果可能错误或者格式无效问题。

3. 案例分析

为了尽量提高抽取的准确率,对抽取结果进行人工走查分析。

3.1.抽取结果分析(recalled case analysis)

对抽取的888条进行人工走查,判断是否准确。网页新闻发布时间的准确率判断有两个标准:(1)必须是合法的日期/时间/日期时间的格式。可以首先通过一组较为严格的正则表达式进行校验,对于不匹配的再进行人工核查。(2)是否的确为该网页所表达的新闻发布时间,也就是说没有误抽。

3.1.1.格式正确性分析

经自动检查和人工核查,在888条结果中,有14条抽取错误,详情如下:

1231405504,06:10 PM06:41 PM06:15 PM06:21 PM06:40 PM
1231393829,Posted yesterday at 6:09am
1231401467,06:10 PM06:41 PM06:15 PM06:21 PM06:40 PM
1231373684,06:10 PM06:41 PM06:15 PM06:21 PM06:40 PM
1231413941,5 hours ago5 hours ago5 hours ago1 day ago21 hours ago
1231423363,Published
1231429109,Posted yesterday at 8:29am
1231423418,Published
1231442966,15:4515:1315:0614:3513:4513:2413:0912:5512:3512:0411:3611:2211:1217:0016:4516:3016:0015:3515:0014:3014:0613:4513:0512:3111:5311:4011:3611:1317:0916:33
1231413993,12 Mar 2025 5:56 pm AEDT12 Mar 2025 5:48 pm AEDT12 Mar 2025 5:45 pm AEDT12 Mar 2025 5:44 pm AEDT12 Mar 2025 5:44 pm AEDT12 Mar 2025 5:34 pm AEDT12 Mar 2025 5:34 pm AEDT12 Mar 2025 5:28 pm AEDT12 Mar 2025 5:14 pm AEDT12 Mar 2025 5:12 pm AEDT12 Mar 2025 5:09 pm AEDT12 Mar 2025 5:09 pm AEDT12 Mar 2025 5:08 pm AEDT12 Mar 2025 5:02 pm AEDT12 Mar 2025 5:02 pm AEDT12 Mar 2025 5:02 pm AEDT12 Mar 2025 4:58 pm AEDT12 Mar 2025 4:54 pm AEDT12 Mar 2025 4:52 pm AEDT12 Mar 2025 4:49 pm AEDT12 Mar 2025 4:48 pm AEDT12 Mar 2025 4:48 pm AEDT12 Mar 2025 4:48 pm AEDT12 Mar 2025 4:48 pm AEDT12 Mar 2025 4:42 pm AEDT12 Mar 2025 4:42 pm AEDT12 Mar 2025 4:40 pm AEDT12 Mar 2025 4:38 pm AEDT
1231404665,12 Mar 2025 4:38 pm AEDT12 Mar 2025 4:22 pm AEDT12 Mar 2025 4:20 pm AEDT12 Mar 2025 4:13 pm AEDT12 Mar 2025 4:12 pm AEDT12 Mar 2025 4:12 pm AEDT12 Mar 2025 4:07 pm AEDT12 Mar 2025 4:07 pm AEDT12 Mar 2025 4:06 pm AEDT12 Mar 2025 4:06 pm AEDT12 Mar 2025 4:06 pm AEDT12 Mar 2025 4:00 pm AEDT12 Mar 2025 3:58 pm AEDT12 Mar 2025 3:52 pm AEDT12 Mar 2025 3:48 pm AEDT12 Mar 2025 3:48 pm AEDT12 Mar 2025 3:46 pm AEDT12 Mar 2025 3:42 pm AEDT12 Mar 2025 3:41 pm AEDT12 Mar 2025 3:40 pm AEDT12 Mar 2025 3:40 pm AEDT12 Mar 2025 3:36 pm AEDT12 Mar 2025 3:36 pm AEDT12 Mar 2025 3:30 pm AEDT12 Mar 2025 3:28 pm AEDT12 Mar 2025 3:24 pm AEDT12 Mar 2025 3:22 pm AEDT12 Mar 2025 3:22 pm AEDT
1231409967,2025-03-112024-11-072024-12-042025-01-192025-03-102025-02-272025-02-262025-02-25
1231295956,03/11/2025 - 09:5403/10/2025 - 09:4403/06/2025 - 10:29
1231402230,12 Mar 2025 8:42 pm AEDT12 Mar 2025 8:42 pm AEDT12 Mar 2025 8:22 pm AEDT12 Mar 2025 8:16 pm AEDT12 Mar 2025 8:14 pm AEDT12 Mar 2025 8:14 pm AEDT12 Mar 2025 8:08 pm AEDT12 Mar 2025 8:02 pm AEDT12 Mar 2025 8:02 pm AEDT12 Mar 2025 7:56 pm AEDT12 Mar 2025 7:46 pm AEDT12 Mar 2025 7:44 pm AEDT12 Mar 2025 7:42 pm AEDT12 Mar 2025 7:40 pm AEDT12 Mar 2025 7:34 pm AEDT12 Mar 2025 7:32 pm AEDT12 Mar 2025 7:28 pm AEDT12 Mar 2025 7:24 pm AEDT12 Mar 2025 7:12 pm AEDT12 Mar 2025 7:12 pm AEDT12 Mar 2025 7:12 pm AEDT12 Mar 2025 7:04 pm AEDT12 Mar 2025 7:02 pm AEDT12 Mar 2025 6:56 pm AEDT12 Mar 2025 6:56 pm AEDT12 Mar 2025 6:54 pm AEDT12 Mar 2025 6:50 pm AEDT12 Mar 2025 6:46 pm AEDT

可以发现其中出现了几条相对时间,如“5 hours ago”、“yesterday at 8:29am”,以及只有时间如“06:10 PM”,这类信息在缺少上下文的情况下无法推断绝对时间,应视为无效抽取。查看网页(https://www.thisdaylive.com/index.php/2025/03/11/police-rescue-two-priests-other-kidnap-victims-in-adamawa-bayelsa/):

<span class="date">5 hours ago</span>

在这里插入图片描述
说明是通过其他类标签匹配。同时这个信息其实并非当前新闻的发布时间,而是页面旁边的新闻列表中的时间。该页面真正的发布时间是在一个隐藏标签中:

<span class="todays-date hide-for-sm-down">Wednesday, 12th March, 2025</span>

标题下面也出现了日期:

<span class="date-container"><i class="fa-light fa-calendar-days"></i> <span class="date">21 hours ago</span></span>

date-container这个样式还在其他标签中出现了。
另外也出现了“Published”,发现是其他类标签抽取出错,HTML片段如下:

<span class="date">Published</span> <span class="entry-date updated" title="6:01 pm">March 11, 2025</span>

然后这个情况处理比较复杂,虽然可以将entry-date updated加入规则中,但是其日期在text()中,时间则是在@title中。
另一个网页中(https://98q.com/local-news-stories/efb6880a8150553e5bf8c87c87c03cac)的情况如下:

<span class="date"> Posted yesterday at 8:29am </span>

除此之外,没有任何其他位置包含时间信息。其他示例包括

<time class="article-intro__date" datetime="2025-03-11" itemprop="datePublished">March 11, 2025</time>
<span class="date updated published-date" itemprop="datePublished" content="2025-03-11T14:36:16+00:00">12 Mar 2025 1:36 am AEDT</span>

从这些个例可以看出,基于其他任意标签的时间戳往往比较随意,因此需要严格限定规则。

3.1.2.语义正确性分析

对874个抽取取正确时间格式(绝对时间)进行抽样检查,看是否为实际的新闻发布时间。
抽样了10个结果,发现9个抽取自<meta>,1个抽取自JSON-LD,语义全部正确。由于这一批数据大体上都在3月11日左右,因此通过筛选出与3月11日相差较大的日期(如3月9日以前),进行人工对比分析。

出现以下情况:

<meta name="articleDate" content="2025-03-11">
<time datetime="2025-03-07T16:00:00-07:00" class="tnt-date asset-date text-muted">Mar 7, 2025</time>
<div class="PromoA-timestamp" data-timestamp="1610379720000" data-date="January 11, 2021 at 10:42 AM EST" data-promo-date="January 11, 2021" data-show-timestamp="true">, January 11, 2021</div></div>

经分析,全部874个抽取结果中,抽取错误仅有2条,说明已有方法较为可靠。

3.2.未抽取网页分析(bad case analysis)

对未抽取出内容的76篇进行人工检查,统计结果如下:
在这里插入图片描述
Missing类进行手工分析,发现情况比较复杂,时间可能出现在标签中,或者JS代码中,如果要采用严格的规则进行抽取,会比较困难,倒不如直接对HTML进行正则匹配,虽然有抽取错误的情况,但也可以忽略不计。

这样看来,gne组件原始代码直接基于 //text() 进行规则匹配是有一定道理的。但是,毕竟是规则匹配,难免存在覆盖不到的情况。如何能够让机器做到跟人一样一眼就可以看到时间并通过其附近的标签、属性或样式等快速判断?这可以成为继续研究的主题。

4.结论

本文讨论了更多新闻网页发布时间的抽取方法,开展了相关实验,并对实验结果进行了案例分析。

分析发现,通过补充完善正则表达式规则,可以进一步提高时间抽取召回率。但由于正文中的时间语义较为复杂,最佳策略仍然是先通过meta标签、JSON-LD元数据、time标签等较为可信的方式抽取。

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

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

相关文章

算法基础——栈

一、栈的概念 栈是⼀种只允许在⼀端进⾏数据插⼊和删除操作的线性表。 进⾏数据插⼊或删除的⼀端称为栈顶&#xff0c;另⼀端称为栈底。不含元素的栈称为空栈。进栈就是往栈中放⼊元素&#xff0c;出栈就是将元素弹出栈顶。 二、栈的模拟实现 1. 创建 本质还是线性表&#…

Android11至15系统定制篇

Android 11至15系统定制核心要点解析 一、Android 11关键定制特性 ‌分区存储强制化‌ 公共目录&#xff08;如Downloads、Pictures&#xff09;与应用专属目录分离&#xff0c;应用更新后无法通过requestLegacyExternalStorage绕过限制‌1。需申请MANAGE_EXTERNAL_STORAGE权限…

macOS 使用 enca 识别 文件编码类型(比 file 命令准确)

文章目录 macOS 上安装 enca基本使用起因 - iconv关于 enca安装 Encaenca & enconv 其它用法 macOS 上安装 enca brew install enca基本使用 enca filepath.txt示例 $ enca 动态规划算法.txt [0] Simplified Chinese National Standard; GB2312CRLF line terminat…

线段树与扫描线 —— 详解算法思想及其C++实现

目录 一、线段树&#xff08;Segment Tree&#xff09; 基本概念 结构 操作 示例代码 二、扫描线&#xff08;Sweep Line&#xff09; 基本概念 应用场景 示例代码&#xff08;矩形面积并集&#xff09; 三、总结 一、线段树&#xff08;Segment Tree&#xff09; 基本…

汇编代码中嵌入回调函数的优化说明

一、概述 在 PowerPC 的汇编代码中&#xff0c;我们需要实现调用 C 函数&#xff08;例如回调函数&#xff09;&#xff0c;并传递参数。本文将详细介绍如何通过一系列步骤完成这一目标&#xff0c;包括代码示例和详细的注释。 二、调用 C 函数的基本步骤及代码 1. 保存工作寄…

Uni-App 双栏联动滚动组件开发详解 (电梯导航)

本文基于提供的代码实现一个左右联动的滚动组件&#xff0c;以下是详细的代码解析与实现原理说明&#xff1a; <!--双栏联动滚动组件 - 技术解析功能特性&#xff1a;1. 左侧导航栏与右侧内容区双向联动2. 自适应容器高度3. 平滑滚动定位4. 动态内容位置计算 --> <te…

软考复习-传输介质与编码

传输介质 双绞线 传输距离100一200m&#xff0c;即网线&#xff0c;有多种分类 UTP非屏蔽双绞线 STP屏蔽双绞线 线序标准有两种为&#xff1a; T568A标准&#xff1a;绿白、绿、橙白、蓝、蓝白、橙、棕白、棕 T568B标准&#xff1a;橙白、橙、绿白、蓝、蓝白、绿、棕白、…

论文阅读笔记:Denoising Diffusion Probabilistic Models (3)

论文阅读笔记&#xff1a;Denoising Diffusion Probabilistic Models (1) 论文阅读笔记&#xff1a;Denoising Diffusion Probabilistic Models (2) 论文阅读笔记&#xff1a;Denoising Diffusion Probabilistic Models (3) 4、损失函数逐项分析 可以看出 L L L总共分为了3项…

PyTorch 面试题及参考答案(精选100道)

目录 PyTorch 的动态计算图与 TensorFlow 的静态计算图有何区别?动态图的优势是什么? 解释张量(Tensor)与 NumPy 数组的异同,为何 PyTorch 选择张量作为核心数据结构? 什么是 torch.autograd 模块?它在反向传播中的作用是什么? 如何理解 PyTorch 中的 nn.Module 类?…

#C8# UVM中的factory机制 #S8.1.4# 约束的重载

今天,复习一下《UVM实战》一书中的 关于约束的重载 章节学习。 一 问题引导 文件:src/ch8/section8.1/8.1.2/rand_mode/my_transaction.sv4 class my_transaction extends uvm_sequence_item; …17 constraint crc_err_cons{18 crc_err == 1b0;19 }20 const…

空调遥控器低功耗单片机方案

RAMSUN空调遥控器采用先进的32位低功耗单片机作为核心控制器&#xff0c;通过优化软件算法和硬件设计&#xff0c;实现了空调遥控器的低功耗运行。单片机集成了多种功能模块&#xff0c;包括红外发射、按键扫描、电源管理等&#xff0c;有效降低了整体功耗。同时&#xff0c;该…

结构型——代理模式

结构型——代理模式 代理模式指的是通过创建一个代理来控制对原始对象的访问。代理在客户端与实际对象之间充当“中介” 特点 访问控制&#xff1a;代理对象可以控制对实际对象的访问&#xff0c;从而实现对访问权限的控制。延迟加载&#xff1a;代理对象可以在实际对象被调…

【算法】常见排序算法(插入排序、选择排序、交换排序和归并排序)

文章目录 前言一、排序概念及常见排序算法框图1.排序概念2.常见排序算法框图 二、实现比较排序算法1.插入排序1.1 直接插入排序1.2 希尔排序 2.选择排序2.1 直接选择排序2.2 堆排序 3.交换排序3.1 冒泡排序3.2 快速排序3.2.1 hoare版本3.2.2 挖坑法3.2.3 lomuto前后指针 3.3 快…

Go语言分布式锁实战:dlock助力构建高并发稳定系统

在构建分布式系统时&#xff0c;一个常见且棘手的问题便是资源竞争和数据一致性问题。分布式锁作为一种常用的解决方案&#xff0c;在多个进程或节点之间协调访问共享资源时显得尤为重要。今天&#xff0c;我们将介绍一款分布式锁库——dlock&#xff0c;并通过详细的使用示例带…

算法方法快速回顾

&#xff08;待修改&#xff09; 目录 1. 双指针2. 滑动窗口理论基础 3. 二分查找3. 二分查找理论基础 4. KMP5. 回溯算法6. 贪心算法7. 动态规划7.1. 01背包7.2. 完全背包7.3. 多重背包 8. 单调栈9. 并查集10. 图论10.1. 广度优先搜索&#xff08;BFS&#xff09;10.2. 深度优…

深度学习:让机器学会“思考”的魔法

文章目录 引言&#xff1a;从“鹦鹉学舌”到“举一反三”一、深度学习是什么&#xff1f;1. 定义&#xff1a;机器的“大脑”2. 核心思想&#xff1a;从数据中“悟”出规律 二、深度学习的“大脑”结构&#xff1a;神经网络1. 神经元&#xff1a;深度学习的基本单元2. 神经网络…

电动自行车/电动工具锂电池PCM方案--SH367003、SH367004、SH79F329

在消费电子系统中&#xff0c;如手机电池包&#xff0c;笔记本电脑电池包等&#xff0c;带有控制IC、功率MOSFETFE管以及其他电子元件的电路系统称为电池充放电保护板Protection Circuit Module &#xff08;PCM&#xff09;&#xff0c;而对于动力电池的电池管理系统&#xff…

补码详细分析

补码引入 举一个生活化的例子 假设由一个挂钟&#xff0c;它只能顺时钟调时间&#xff0c;那么它调时间就分成了一下两种情况 正好顺时针调就能调好 如&#xff1a;时针从5调到9需要逆时针调才能调好 如&#xff1a;时针从10调到7 在上面的情况中1是不用处理的&#xff0c;2…

计算机网络入门:物理层与数据链路层详解

&#x1f310; &#xff08;专业解析 中学生也能懂&#xff01;&#xff09; &#x1f4d6; 前言 计算机网络就像数字世界的“高速公路系统”&#xff0c;而物理层和数据链路层是这条公路的基石。本文用 专业视角 和 生活化比喻 &#xff0c;带你轻松理解这两层的核心原理&a…

哪些视频格式在webview2中播放可以设置成透明的?

在WebView2中&#xff0c;能够播放并设置成透明背景的视频格式主要取决于其支持的编解码器以及视频是否包含alpha通道&#xff08;透明度信息&#xff09;。以下是支持透明背景的视频格式&#xff1a; 支持透明背景的视频格式 1. WebM&#xff08;使用VP9编解码器&#xff09; …